git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
C++: fix more recursive let issues
e81fecfAndy Arvanitis
src/Language/PureScript/CodeGen/Cpp/Recursion.hs+4−6
@@ -68,11 +68,7 @@ convertRecursiveLets = everywhereOnCpp go
68convertRecursive :: [Text] -> [Cpp] -> [Cpp]
68convertRecursive :: [Text] -> [Cpp] -> [Cpp]
69-------------------------------------------------------------------------------------------------
69-------------------------------------------------------------------------------------------------
70convertRecursive names cpps
70convertRecursive names cpps
71− | not $ null lets
71+ | (_:_) <- lets = (everywhereOnCppTopDown remRecLet <$> cpps) ++ undefines
72− = defines ++
73− [letTable] ++
74− (everywhereOnCpp remRecLet <$> cpps) ++
75− undefines
76 where
72 where
77 tableName :: Text
73 tableName :: Text
78 tableName = "let"
74 tableName = "let"
@@ -93,8 +89,10 @@ convertRecursive names cpps
93 recLet _ = []
89 recLet _ = []
94 --
90 --
95 remRecLet :: Cpp -> Cpp
91 remRecLet :: Cpp -> Cpp
96− remRecLet (CppVariableIntroduction (name, _) _ (Just _))
92+ remRecLet cpp@(CppVariableIntroduction (name, _) _ (Just _))
93+ | name == head names = CppNamespace "" $ defines ++ [letTable]
97 | name `elem` names = CppNoOp
94 | name `elem` names = CppNoOp
95+ | otherwise = cpp
98 remRecLet cpp = cpp
96 remRecLet cpp = cpp
99 --
97 --
100 tableItem :: Cpp -> (Text, Cpp)
98 tableItem :: Cpp -> (Text, Cpp)