git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
C++: fix inlining of operators, incl '$'
commit81ea1e28d982e51fbbfaf4126fcd60b45cb3c934 authorAndy Arvanitis <andyarvanitis@gmail.com> dateWed 17 Aug 2016, 19:52 (10 years ago) parentf8cc122
2 files changed+3−1
src/Language/PureScript/CodeGen/Cpp/Optimizer.hs+2 src/Language/PureScript/CodeGen/Cpp/Optimizer/Common.hs+1−1
src/Language/PureScript/CodeGen/Cpp/Optimizer.hs+2
@@ -83,7 +83,9 @@ optimize' cpp = do
8383 , inlineVariables
8484 , inlineCommonValues
8585 , inlineOperator (C.prelude, (C.$)) $ \f x -> CppApp f [x]
86+ , inlineOperator (C.dataFunction, C.apply) $ \f x -> CppApp f [x]
8687 , inlineOperator (C.prelude, (C.#)) $ \x f -> CppApp f [x]
88+ , inlineOperator (C.dataFunction, C.applyFlipped) $ \x f -> CppApp f [x]
8789 , inlineOperator (C.dataArrayUnsafe, C.unsafeIndex) $ flip CppIndexer
8890 , inlineCommonOperators ]) cpp
8991
src/Language/PureScript/CodeGen/Cpp/Optimizer/Common.hs+1−1
@@ -78,7 +78,7 @@ removeFromBlock _ cpp = cpp
7878
7979isFn :: (String, String) -> Cpp -> Bool
8080isFn (moduleName, fnName) (CppAccessor (CppVar x) (CppVar y)) =
81− x == fnName && y == moduleName
81+ (x == fnName || x == ('$':fnName)) && y == moduleName
8282isFn (moduleName, fnName) (CppIndexer (CppStringLiteral x) (CppVar y)) =
8383 x == fnName && y == moduleName
8484isFn _ _ = False