git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Add Escaped constructor to Ident to prevent double mangling of names
commit80141e6149f60fff829c43af0b715616372e1dbe authorPhil Freeman <paf31@cantab.net> dateFri 31 Jan 2014, 10:47 (13 years ago) parent752c6cf
3 files changed+8−2
src/Language/PureScript/Names.hs+6−1 src/Language/PureScript/Pretty/Common.hs+1 src/Language/PureScript/Sugar/TypeClasses.hs+1−1
src/Language/PureScript/Names.hs+6−1
@@ -30,11 +30,16 @@ data Ident
3030 -- |
3131 -- A symbolic name for an infix operator
3232 --
33− | Op String deriving (Eq, Ord, Data, Typeable)
33+ | Op String
34+ -- |
35+ -- An escaped name
36+ --
37+ | Escaped String deriving (Eq, Ord, Data, Typeable)
3438
3539instance Show Ident where
3640 show (Ident s) = s
3741 show (Op op) = '(':op ++ ")"
42+ show (Escaped s) = s
3843
3944-- |
4045-- Proper names, i.e. capitalized names for e.g. module names, type//data constructors.
src/Language/PureScript/Pretty/Common.hs+1
@@ -36,6 +36,7 @@ import Language.PureScript.Names
3636identToJs :: Ident -> String
3737identToJs (Ident name) = concatMap identCharToString name
3838identToJs (Op op) = concatMap identCharToString op
39+identToJs (Escaped name) = name
3940
4041identCharToString :: Char -> String
4142identCharToString c | isAlphaNum c = [c]
src/Language/PureScript/Sugar/TypeClasses.hs+1−1
@@ -151,4 +151,4 @@ typeToString a b = Left $ "Type class instance must be of the form T a1 ... an "
151151mkDictionaryEntryName :: ModuleName -> Qualified ProperName -> Type -> Ident -> Desugar Ident
152152mkDictionaryEntryName mn name ty ident = do
153153 Ident dictName <- lift $ mkDictionaryValueName mn name ty
154− return $ Ident $ dictName ++ "_" ++ identToJs ident
154+ return $ Escaped $ dictName ++ "_" ++ identToJs ident