Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(911)

Unified Diff: pkg/compiler/lib/src/resolution/members.dart

Issue 897243003: dart2js: remove (broken) support for nsm on native classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Remove whitespace Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/old_emitter/nsm_emitter.dart ('k') | pkg/compiler/lib/src/warnings.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/resolution/members.dart
diff --git a/pkg/compiler/lib/src/resolution/members.dart b/pkg/compiler/lib/src/resolution/members.dart
index bd92e976ddc5466c14b06c6eea25ce8e9d4bd71f..c1d7ff4b5f14c8ea72f09ed0378400029f7b81a5 100644
--- a/pkg/compiler/lib/src/resolution/members.dart
+++ b/pkg/compiler/lib/src/resolution/members.dart
@@ -530,22 +530,31 @@ class ResolverTask extends CompilerTask {
}
}
+ bool _isNativeClassOrExtendsNativeClass(ClassElement classElement) {
+ assert(classElement != null);
+ while (classElement != null) {
+ if (classElement.isNative) return true;
+ classElement = classElement.superclass;
+ }
+ return false;
+ }
+
TreeElements resolveMethodElementImplementation(
FunctionElement element, FunctionExpression tree) {
return compiler.withCurrentElement(element, () {
if (element.isExternal && tree.hasBody()) {
- compiler.reportError(element,
+ error(element,
MessageKind.EXTERNAL_WITH_BODY,
{'functionName': element.name});
}
if (element.isConstructor) {
if (tree.returnType != null) {
- compiler.reportError(tree, MessageKind.CONSTRUCTOR_WITH_RETURN_TYPE);
+ error(tree, MessageKind.CONSTRUCTOR_WITH_RETURN_TYPE);
}
if (element.isConst &&
tree.hasBody() &&
!tree.isRedirectingFactory) {
- compiler.reportError(tree, MessageKind.CONST_CONSTRUCTOR_HAS_BODY);
+ error(tree, MessageKind.CONST_CONSTRUCTOR_HAS_BODY);
}
}
@@ -590,6 +599,14 @@ class ResolverTask extends CompilerTask {
checkMixinSuperUses(resolutionTree, mixinApplication, mixin);
}
}
+
+ // TODO(9631): support noSuchMethod on native classes.
+ if (Elements.isInstanceMethod(element) &&
+ element.name == Compiler.NO_SUCH_METHOD &&
+ _isNativeClassOrExtendsNativeClass(enclosingClass)) {
+ error(tree, MessageKind.NO_SUCH_METHOD_IN_NATIVE);
+ }
+
return resolutionTree;
});
« no previous file with comments | « pkg/compiler/lib/src/js_emitter/old_emitter/nsm_emitter.dart ('k') | pkg/compiler/lib/src/warnings.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698