Chromium Code Reviews

Unified Diff: sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart

Issue 11415287: noSuchMethod generated for super calls (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Index: sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
index 19051befd201894a20c56fda429922539546a2c0..68688b16c76297911b4577f7500deb72b5b83587 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart
@@ -1256,7 +1256,7 @@ $classesCollector.$mangledName = {'':
// Note: the callElement will not have any enclosingElement.
FunctionElement callElement =
new ClosureInvocationElement(Namer.CLOSURE_INVOCATION_NAME, member);
-
+
String invocationName = namer.instanceMethodName(callElement);
List<String> arguments = new List<String>(parameterCount);
for (int i = 0; i < parameterCount; i++) {
@@ -1480,19 +1480,7 @@ $classesCollector.$mangledName = {'':
CodeBuffer generateMethod(String methodName, Selector selector) {
// Values match JSInvocationMirror in js-helper library.
- const int METHOD = 0;
- const int GETTER = 1;
- const int SETTER = 2;
- int type = METHOD;
- if (selector.isGetter()) {
- type = GETTER;
- assert(methodName.startsWith("get:"));
- methodName = methodName.substring(4);
- } else if (selector.isSetter()) {
- type = SETTER;
- assert(methodName.startsWith("set:"));
- methodName = "${methodName.substring(4)}=";
- }
+ int type = selector.invocationMirrorKind;
CodeBuffer args = new CodeBuffer();
for (int i = 0; i < selector.argumentCount; i++) {
if (i != 0) args.add(', ');
@@ -1602,18 +1590,14 @@ $classesCollector.$mangledName = {'':
if (holders.every(hasMatchingMember)) continue;
String jsName = null;
- String methodName = null;
- String nameString = selector.name.slowToString();
+ String methodName = selector.name.slowToString();
if (selector.isGetter()) {
jsName = namer.getterName(selector.library, selector.name);
- methodName = 'get:$nameString';
} else if (selector.isSetter()) {
jsName = namer.setterName(selector.library, selector.name);
- methodName = 'set:$nameString';
} else if (selector.isCall()) {
jsName = namer.instanceMethodInvocationName(
selector.library, selector.name, selector);
- methodName = nameString;
} else {
// We simply ignore selectors that do not need
// noSuchMethod handlers.

Powered by Google App Engine