From 17fcce4ca5bf1418d8f335e869d328e1913d3f95 Mon Sep 17 00:00:00 2001 From: Zubin Duggal Date: Tue, 16 May 2023 14:34:19 +0530 Subject: compiler: Remove instance Binary Char It is generally not a good idea to serialise strings as [Char] into interface files, as upon deserialisation each of these would be turned into a highly memory inefficient structure mostly composed of cons cells and pointers. If you really want to serialise a Char, use the SerialisableChar newtype. --- compiler/GHC/Hs/DocString.hs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'compiler/GHC/Hs/DocString.hs') diff --git a/compiler/GHC/Hs/DocString.hs b/compiler/GHC/Hs/DocString.hs index 8e42c4a8d8..d765eda92d 100644 --- a/compiler/GHC/Hs/DocString.hs +++ b/compiler/GHC/Hs/DocString.hs @@ -25,6 +25,7 @@ module GHC.Hs.DocString import GHC.Prelude +import GHC.Data.FastString import GHC.Utils.Binary import GHC.Utils.Encoding import GHC.Utils.Outputable as Outputable hiding ((<>)) @@ -102,7 +103,7 @@ instance Binary HsDocString where data HsDocStringDecorator = HsDocStringNext -- ^ '|' is the decorator | HsDocStringPrevious -- ^ '^' is the decorator - | HsDocStringNamed !String -- ^ '$' is the decorator + | HsDocStringNamed !LexicalFastString -- ^ '$' is the decorator | HsDocStringGroup !Int -- ^ The decorator is the given number of '*'s deriving (Eq, Ord, Show, Data) @@ -118,7 +119,7 @@ instance NFData HsDocStringDecorator where printDecorator :: HsDocStringDecorator -> String printDecorator HsDocStringNext = "|" printDecorator HsDocStringPrevious = "^" -printDecorator (HsDocStringNamed n) = '$':n +printDecorator (HsDocStringNamed (LexicalFastString n)) = '$':unpackFS n printDecorator (HsDocStringGroup n) = replicate n '*' instance Binary HsDocStringDecorator where -- cgit v1.2.1