@@ -371,9 +371,13 @@ moduleToCpp otherOpts env (Module _ mn imps _ foreigns decls) = do
371 valueToCpp (Literal _ (ObjectLiteral ps)) =
371 valueToCpp (Literal _ (ObjectLiteral ps)) =
372 CppRecordLiteral <$>
372 CppRecordLiteral <$>
373 mapM (sndM valueToCpp) ((\(k, v) -> (CppStringLiteral k, v)) <$> ps)
373 mapM (sndM valueToCpp) ((\(k, v) -> (CppStringLiteral k, v)) <$> ps)
374+ valueToCpp (Accessor ann1 prop val@(Var ann2 (Qualified Nothing _)))
375+ | ann1 == nullAnn && ann2 == nullAnn
376+ = CppDictGet <$> pure (CppSymbol prop) <*> valueToCpp val
377+ valueToCpp (Accessor _ prop val)
378+ | C.__superclass_ `isPrefixOf` codePoints prop
379+ = CppDictGet <$> pure (CppSymbol prop) <*> valueToCpp val
374− valueToCpp (Accessor (_, _, Just _, _) prop val) = CppRecordGet <$> pure prop <*> valueToCpp val
380+ valueToCpp (Accessor _ prop val) = CppRecordGet <$> pure prop <*> valueToCpp val
375− valueToCpp (Accessor _ prop val) = CppDictGet <$> pure (CppSymbol prop) <*> valueToCpp val
377 valueToCpp (ObjectUpdate _ o ps) = do
381 valueToCpp (ObjectUpdate _ o ps) = do
378 obj <- valueToCpp o
382 obj <- valueToCpp o
379 updates <- mapM (sndM valueToCpp) ps
383 updates <- mapM (sndM valueToCpp) ps