@@ -52,11 +52,13 @@ import Language.PureScript.Comments
5252import Language.PureScript.CoreFn
5353import Language.PureScript.Names
5454import Language.PureScript.Options
55+import Language.PureScript.PSString (PSString, mkString)
5556import Language.PureScript.Sugar.TypeClasses (superClassDictionaryNames)
5657import Language.PureScript.Traversals (sndM)
5758
5859import qualified Language.PureScript.Constants as C
5960import qualified Language.PureScript.Environment as E
61+import Language.PureScript.Label (runLabel)
6062import qualified Language.PureScript.Pretty.Cpp as P
6163import qualified Language.PureScript.Types as T
6264
@@ -455,8 +457,8 @@ moduleToCpp otherOpts env (Module _ mn imps _ foreigns decls) = do
455457 CppMapLiteral Record $
456458 (\(k, v) -> (CppSymbol k, v)) <$> sortBy (compare `on` fst) (origFields ++ updatedFields)
457459 where
458− allKeys :: T.Type -> [Text]
459− allKeys (T.TypeApp (T.TypeConstructor _) r@(T.RCons {})) = fst <$> (fst $ T.rowToList r)
460+ allKeys :: T.Type -> [PSString]
461+ allKeys (T.TypeApp (T.TypeConstructor _) r@(T.RCons {})) = runLabel . fst <$> (fst $ T.rowToList r)
460462 allKeys (T.ForAll _ t _) = allKeys t
461463 allKeys _ = error "Not a recognized row type"
462464 valueToCpp (ObjectUpdate _ _ _) = error $ "Bad Type in object update!"
@@ -485,7 +487,9 @@ moduleToCpp otherOpts env (Module _ mn imps _ foreigns decls) = do
485487 Var (_, _, _, Just IsTypeClassConstructor) (Qualified mn' (Ident classname)) ->
486488 let Just (_, constraints, fns) = findClass (Qualified mn' (ProperName classname))
487489 in return . CppMapLiteral Instance $
488− zip (CppSymbol <$> (sort $ superClassDictionaryNames constraints) ++ (fst <$> fns)) args'
490+ zip
491+ (CppSymbol . mkString <$> (sort $ superClassDictionaryNames constraints) ++ (fst <$> fns))
492+ args'
489493 Var _ (Qualified (Just _) _) -> applied f args' curriedName'
490494 _ -> applied f args' id
491495 where
@@ -567,7 +571,7 @@ moduleToCpp otherOpts env (Module _ mn imps _ foreigns decls) = do
567571 go _ _ _ = error "Invalid arguments to bindersToCpp"
568572 failedPatternError :: [Text] -> Cpp
569573 failedPatternError _ =
570− CppThrow $ CppApp (CppVar "runtime_error") [CppStringLiteral errorMessage]
574+ CppThrow $ CppApp (CppVar "runtime_error") [CppStringLiteral $ mkString errorMessage]
571575 errorMessage :: Text
572576 errorMessage =
573577 "Failed pattern match" <>
@@ -668,7 +672,7 @@ moduleToCpp otherOpts env (Module _ mn imps _ foreigns decls) = do
668672 return [CppIfElse (CppUnary Not (CppVar varName)) (CppBlock done) Nothing]
669673 literalToBinderCpp varName done (ObjectLiteral bs) = go done bs
670674 where
671− go :: [Cpp] -> [(Text, Binder Ann)] -> m [Cpp]
675+ go :: [Cpp] -> [(PSString, Binder Ann)] -> m [Cpp]
672676 go done' [] = return done'
673677 go done' ((prop, binder):bs') = do
674678 propVar <- freshName
@@ -840,7 +844,7 @@ optIndexers classes = everywhereOnCpp dictIndexerToEnum
840844 dictIndexerToEnum :: Cpp -> Cpp
841845 dictIndexerToEnum (CppMapGet (CppSymbol prop) dict)
842846 | Just cls <- lookup dict classes =
843− let index = CppAccessor (CppVar $ safeName prop) cls
847+ let index = CppAccessor (CppVar . safeName $ P.utf16Text prop) cls
844848 in CppMapGet index dict
845849 dictIndexerToEnum cpp = cpp
846850
@@ -894,11 +898,11 @@ convertIfPrimFn (Just ty) (CppFunction name params _ qs body)
894898convertIfPrimFn _ cpp = cpp
895899
896900---------------------------------------------------------------------------------------------------
897−allSymbols :: [Cpp] -> [Text]
901+allSymbols :: [Cpp] -> [PSString]
898902---------------------------------------------------------------------------------------------------
899903allSymbols cpps = nub $ concatMap (everythingOnCpp (++) symbols) cpps
900904 where
901− symbols :: Cpp -> [Text]
905+ symbols :: Cpp -> [PSString]
902906 symbols (CppSymbol s) = [s]
903907 symbols _ = []
904908