                                 type: Literal
                                 value: n.argument.property.name
                                 raw: "'#{n.argument.property.name}'"
-                        return @createCall callee, [(@visitOrNull n.argument.object), (@visit fake_literal)], "result"
+                        return @createCall callee, [@visitOrNull(n.argument.object), @visit(fake_literal)], "result"
                                 
                 else if n.operator is "!"
                         arg_value =  @visitOrNull n.argument

                        throw new Error "binary assignment operators '#{n.operator}' shouldn't exist at this point"
                
                if @options.record_types
                        @createCall @ejs_runtime.record_assignment, [(consts.int32 @genRecordId()), rhvalue], ""
                @storeValueInDest rhvalue, lhs

                # we need to visit lhs after the store so that we load the value, but only if it's used

                if iife_dest_bb
                        ir.createBr iife_dest_bb
                        ir.setInsertPoint iife_dest_bb
                        rv = @createLoad @findIdentifierInScope(n.ejs_iife_rv.name), "%iife_rv_load"
                        rv
                else
                        n
