git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
C++: allow single '_' prefixes in identifiers again
commitfc220605200b90e25eb4f13e660e3adefe25312c authorAndy Arvanitis <andyarvanitis@gmail.com> dateThu 19 Jan 2017, 16:19 (10 years ago) parent2207879
1 file changed+7−1
src/Language/PureScript/CodeGen/Cpp/Common.hs+7−1
src/Language/PureScript/CodeGen/Cpp/Common.hs+7−1
@@ -53,7 +53,9 @@ safeName name
5353 , any (=='.') name
5454 = "$" <> (escaped $ dotsTo '_' name)
5555safeName name
56− | "_" `isPrefixOf` name = "$" <> escaped name
56+ | Just ('_', rest) <- uncons name
57+ , not (null rest)
58+ , isUpper (T.head rest) = "_$" <> escaped rest
5759safeName name = escaped name
5860
5961escaped :: Text -> Text
@@ -159,6 +161,7 @@ nameIsCppReserved name =
159161 , "dynamic_cast"
160162 , "else"
161163 , "enum"
164+ , "errno"
162165 , "explicit"
163166 , "export"
164167 , "extern"
@@ -176,6 +179,7 @@ nameIsCppReserved name =
176179 , "make_managed"
177180 , "make_managed_and_finalized"
178181 , "managed"
182+ , "math_errhandling"
179183 , "mutable"
180184 , "namespace"
181185 , "new"
@@ -199,6 +203,7 @@ nameIsCppReserved name =
199203 , "requires"
200204 , "return"
201205 , "runtime_error"
206+ , "setjmp"
202207 , "short"
203208 , "signed"
204209 , "sizeof"
@@ -226,6 +231,7 @@ nameIsCppReserved name =
226231 , "unknown_size"
227232 , "unsigned"
228233 , "using"
234+ , "va_end"
229235 , "virtual"
230236 , "void"
231237 , "volatile"