Index: lib/src/codegen/js_codegen.dart |
diff --git a/lib/src/codegen/js_codegen.dart b/lib/src/codegen/js_codegen.dart |
index a4f09d0a54d5bbdf4c8329ddb7e98a48f8358f35..ea4c24d84ea4039e30af4c544f1335827048cdea 100644 |
--- a/lib/src/codegen/js_codegen.dart |
+++ b/lib/src/codegen/js_codegen.dart |
@@ -94,6 +94,8 @@ class JSCodegenVisitor extends GeneralizingAstVisitor { |
/// _interceptors.JSArray<E>, used for List literals. |
ClassElement _jsArray; |
+ Map<String, DartType> _objectMembers; |
+ |
JSCodegenVisitor(AbstractCompiler compiler, this.libraryInfo, |
this._extensionTypes, this._fieldsNeedingStorage) |
: compiler = compiler, |
@@ -106,6 +108,8 @@ class JSCodegenVisitor extends GeneralizingAstVisitor { |
var src = context.sourceFactory.forUri('dart:_interceptors'); |
var interceptors = context.computeLibraryElement(src); |
_jsArray = interceptors.getType('JSArray'); |
+ |
+ _objectMembers = getObjectMemberMap(types); |
} |
LibraryElement get currentLibrary => libraryInfo.library; |
@@ -578,7 +582,7 @@ class JSCodegenVisitor extends GeneralizingAstVisitor { |
} |
if (dartxNames.isNotEmpty) { |
body.add(js.statement('dart.defineExtensionNames(#)', |
- [new JS.ArrayInitializer(dartxNames, multiline: true)])); |
+ [new JS.ArrayInitializer(dartxNames, multiline: true)])); |
} |
} |
@@ -2677,7 +2681,9 @@ class JSCodegenVisitor extends GeneralizingAstVisitor { |
} |
// Dart "extension" methods. Used for JS Array, Boolean, Number, String. |
- if (allowExtensions && _extensionTypes.contains(type.element)) { |
+ if (allowExtensions && |
+ _extensionTypes.contains(type.element) && |
+ !_objectMembers.containsKey(name)) { |
return js.call('dartx.#', _propertyName(name)); |
} |