@@ -53,7 +53,9 @@ safeName name
53 , any (=='.') name
53 , any (=='.') name
54 = "$" <> (escaped $ dotsTo '_' name)
54 = "$" <> (escaped $ dotsTo '_' name)
55safeName name
55safeName name
56− | "_" `isPrefixOf` name = "$" <> escaped name
56+ | Just ('_', rest) <- uncons name
58+ , isUpper (T.head rest) = "_$" <> escaped rest
57safeName name = escaped name
59safeName name = escaped name
59escaped :: Text -> Text
61escaped :: Text -> Text
@@ -159,6 +161,7 @@ nameIsCppReserved name =
159 , "dynamic_cast"
161 , "dynamic_cast"
162 , "explicit"
165 , "explicit"
163 , "export"
166 , "export"
164 , "extern"
167 , "extern"
@@ -176,6 +179,7 @@ nameIsCppReserved name =
176 , "make_managed"
179 , "make_managed"
177 , "make_managed_and_finalized"
180 , "make_managed_and_finalized"
178 , "managed"
181 , "managed"
182+ , "math_errhandling"
179 , "mutable"
183 , "mutable"
180 , "namespace"
184 , "namespace"
@@ -199,6 +203,7 @@ nameIsCppReserved name =
199 , "requires"
203 , "requires"
200 , "return"
204 , "return"
201 , "runtime_error"
205 , "runtime_error"
202 , "short"
207 , "short"
203 , "signed"
208 , "signed"
204 , "sizeof"
209 , "sizeof"
@@ -226,6 +231,7 @@ nameIsCppReserved name =
226 , "unknown_size"
231 , "unknown_size"
227 , "unsigned"
232 , "unsigned"
228 , "using"
233 , "using"
229 , "virtual"
235 , "virtual"
231 , "volatile"
237 , "volatile"