@@ -210,7 +210,7 @@ moduleToCpp otherOpts env (Module _ mn imps _ foreigns decls) = do
210210 [arg']
211211 rty
212212 (vqs ++
213− if isIndexer body'
213+ if isGet body'
214214 then [Inline]
215215 else [])
216216 (returnBlock body')
@@ -231,9 +231,9 @@ moduleToCpp otherOpts env (Module _ mn imps _ foreigns decls) = do
231231 isAccessor :: Expr Ann -> Bool
232232 isAccessor Accessor {} = True
233233 isAccessor _ = False
234− isIndexer :: Cpp -> Bool
235− isIndexer (CppIndexer (CppSymbol _) (CppVar _)) = True
236− isIndexer _ = False
234+ isGet :: Cpp -> Bool
235+ isGet (CppGet (CppSymbol _) (CppVar _)) = True
236+ isGet _ = False
237237 classes =
238238 zip
239239 (CppVar . fst <$> arg' : args')
@@ -441,13 +441,13 @@ moduleToCpp otherOpts env (Module _ mn imps _ foreigns decls) = do
441441 valueToCpp (Literal _ (ObjectLiteral ps)) =
442442 CppMapLiteral Record <$>
443443 mapM (sndM valueToCpp) ((\(k, v) -> (CppSymbol k, v)) <$> sortBy (compare `on` fst) ps)
444− valueToCpp (Accessor _ prop val) = CppIndexer <$> pure (CppSymbol prop) <*> valueToCpp val
444+ valueToCpp (Accessor _ prop val) = CppGet <$> pure (CppSymbol prop) <*> valueToCpp val
445445 -- TODO: use a more efficient way of copying/updating the map?
446446 valueToCpp (ObjectUpdate (_, _, Just ty, _) obj ps) = do
447447 obj' <- valueToCpp obj
448448 updatedFields <- mapM (sndM valueToCpp) ps
449449 let origKeys = (allKeys ty) \\ (fst <$> updatedFields)
450− origFields = (\key -> (key, CppIndexer (CppSymbol key) obj')) <$> origKeys
450+ origFields = (\key -> (key, CppGet (CppSymbol key) obj')) <$> origKeys
451451 return $
452452 CppMapLiteral Record $
453453 (\(k, v) -> (CppSymbol k, v)) <$> sortBy (compare `on` fst) (origFields ++ updatedFields)
@@ -675,7 +675,7 @@ moduleToCpp otherOpts env (Module _ mn imps _ foreigns decls) = do
675675 CppVariableIntroduction
676676 (propVar, Nothing)
677677 []
678− (Just $ CppIndexer (CppSymbol prop) (CppVar varName)) :
678+ (Just $ CppGet (CppSymbol prop) (CppVar varName)) :
679679 cpp
680680 literalToBinderCpp varName done (ArrayLiteral bs) = do
681681 cpp <- go done 0 bs
@@ -837,12 +837,10 @@ optIndexers :: [(Cpp, Cpp)] -> Cpp -> Cpp
837837optIndexers classes = everywhereOnCpp dictIndexerToEnum
838838 where
839839 dictIndexerToEnum :: Cpp -> Cpp
840− dictIndexerToEnum (CppIndexer (CppSymbol prop) dict)
840+ dictIndexerToEnum (CppGet (CppSymbol prop) dict)
841841 | Just cls <- lookup dict classes =
842− CppBinary
843− Dot
844− (CppIndexer (CppAccessor (CppVar . identToCpp $ Ident prop) cls) (CppCast (mapType 0) dict))
845− (CppVar "second")
842+ let index = CppAccessor (CppVar . identToCpp $ Ident prop) cls
843+ in CppGet index dict
846844 dictIndexerToEnum cpp = cpp
847845
848846---------------------------------------------------------------------------------------------------