git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
C++: fixes due to changes in ProperName and AST deriving
0abf146Andy Arvanitis
src/Language/PureScript/CodeGen/Cpp.hs+1−22
@@ -66,8 +66,6 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
66 let cppImports' = "PureScript" : cppImports
66 let cppImports' = "PureScript" : cppImports
67 cppDecls <- concat <$> mapM bindToCpp decls
67 cppDecls <- concat <$> mapM bindToCpp decls
68 optimized <- traverse optimize cppDecls
68 optimized <- traverse optimize cppDecls
69− -- datas <- datasToCpps env mn
70− synonyms <- synonymsToCpp env mn
71 let moduleHeader = fileBegin mn "HH"
69 let moduleHeader = fileBegin mn "HH"
72 ++ P.linebreak
70 ++ P.linebreak
73 ++ ((\i -> CppInclude i i) <$> cppImports')
71 ++ ((\i -> CppInclude i i) <$> cppImports')
@@ -78,7 +76,6 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
78 ++ P.linebreak
76 ++ P.linebreak
79 ++ [CppNamespace (runModuleName mn) $
77 ++ [CppNamespace (runModuleName mn) $
80 (CppUseNamespace <$> cppImports') ++ P.linebreak
78 (CppUseNamespace <$> cppImports') ++ P.linebreak
81− ++ synonyms
82 ++ toHeader optimized
79 ++ toHeader optimized
83 ++ toHeaderFns optimized
80 ++ toHeaderFns optimized
84 ]
81 ]
@@ -504,27 +501,9 @@ moduleToCpp env (Module _ mn imps _ foreigns decls) = do
504 -- |
501 -- |
505 -- Find a class in scope by name, retrieving its list of constraints, function names and types.
502 -- Find a class in scope by name, retrieving its list of constraints, function names and types.
506 --
503 --
507− findClass :: Qualified ProperName -> Maybe ([String], [T.Constraint], [(String, T.Type)])
504+ findClass :: Qualified (ProperName ClassName) -> Maybe ([String], [T.Constraint], [(String, T.Type)])
508 findClass name
505 findClass name
509 | Just (params, fns, constraints) <- M.lookup name (E.typeClasses env),
506 | Just (params, fns, constraints) <- M.lookup name (E.typeClasses env),
510 fns' <- (\(i,t) -> (runIdent i, t)) <$> fns
507 fns' <- (\(i,t) -> (runIdent i, t)) <$> fns
511 = Just (fst <$> params, constraints, (sortBy (compare `on` normalizedName . fst) fns'))
508 = Just (fst <$> params, constraints, (sortBy (compare `on` normalizedName . fst) fns'))
512 findClass _ = Nothing
509 findClass _ = Nothing
513−
514−-------------------------------------------------------------------------------------------------
515−synonymsToCpp :: Monad m => E.Environment -> ModuleName -> m [Cpp]
516−-------------------------------------------------------------------------------------------------
517−synonymsToCpp env mn
518− | tcs <- E.typeClasses env,
519− ds@(_:_) <- M.toList
520− . M.filterWithKey (\k@(Qualified mn' _) _ -> mn' == Just mn && M.lookup k tcs == Nothing)
521− $ E.typeSynonyms env = do
522− let names' = qualifiedToStr mn (Ident . runProperName) . fst <$> ds
523− typs = replicate (length ds) (CppAny [])
524− syns = zip names' typs
525− cpps = toTypeAlias <$> syns
526− return $ cpps
527− | otherwise = return []
528− where
529− toTypeAlias :: (String, CppType) -> Cpp
530− toTypeAlias (n, t) = CppTypeAlias (n, []) t []
src/Language/PureScript/CodeGen/Cpp/AST.hs+5−3
@@ -51,7 +51,8 @@ data CppUnaryOp
51 -- |
51 -- |
52 -- Constructor
52 -- Constructor
53 --
53 --
54+ | CppNew
54− | CppNew deriving (Show, Eq, Data, Typeable)
55+ deriving (Show, Read, Eq)
55
56
56-- |
57-- |
57-- Built-in binary operators
58-- Built-in binary operators
@@ -134,7 +135,7 @@ data BinaryOp
134 --
135 --
135 | ShiftRight
136 | ShiftRight
136 --
137 --
137− deriving (Show, Eq, Data, Typeable)
138+ deriving (Show, Read, Eq)
138
139
139-- |
140-- |
140-- Data type for simplified C++11 expressions
141-- Data type for simplified C++11 expressions
@@ -263,7 +264,8 @@ data Cpp
263 -- |
264 -- |
264 -- Commented C++11
265 -- Commented C++11
265 --
266 --
266− | CppComment [Comment] Cpp deriving (Show, Eq, Data, Typeable)
267+ | CppComment [Comment] Cpp
268+ deriving (Show, Read, Eq)
267
269
268--
270--
269-- Traversals
271-- Traversals
src/Language/PureScript/CodeGen/Cpp/Types.hs+4−5
@@ -28,10 +28,10 @@ import qualified Language.PureScript.Constants as C
28-- import Debug.Trace
28-- import Debug.Trace
29
29
30data CppType = CppPrimitive String | CppAuto | CppAny [CppTypeQual]
30data CppType = CppPrimitive String | CppAuto | CppAny [CppTypeQual]
31− deriving (Eq, Show, Data, Typeable)
31+ deriving (Show, Read, Eq)
32
32
33data CppTypeQual = CppConst | CppRef
33data CppTypeQual = CppConst | CppRef
34− deriving (Eq, Show, Data)
34+ deriving (Show, Read, Eq)
35
35
36-- |
36-- |
37-- Value C++11 qualifiers
37-- Value C++11 qualifiers
@@ -57,14 +57,13 @@ data CppValueQual
57 -- Function or lambda is involved in recursion
57 -- Function or lambda is involved in recursion
58 --
58 --
59 | CppRecursive
59 | CppRecursive
60−
61− deriving (Show, Eq, Data, Typeable)
60+ deriving (Show, Read, Eq)
62
61
63-- |
62-- |
64-- C++ lambda capture list
63-- C++ lambda capture list
65--
64--
66data CppCaptureType = CppCaptureAll
65data CppCaptureType = CppCaptureAll
67− deriving (Show, Eq, Data, Typeable)
66+ deriving (Show, Read, Eq)
68
67
69runType :: CppType -> String
68runType :: CppType -> String
70runType (CppPrimitive t) = t
69runType (CppPrimitive t) = t