| Index: lib/compiler/implementation/js_backend/emitter.dart
|
| diff --git a/lib/compiler/implementation/js_backend/emitter.dart b/lib/compiler/implementation/js_backend/emitter.dart
|
| index cad7e017e81a542e80ebdf17ede21062535ba21d..4d470af4fdc6c1281183a63fe478312596ca3e56 100644
|
| --- a/lib/compiler/implementation/js_backend/emitter.dart
|
| +++ b/lib/compiler/implementation/js_backend/emitter.dart
|
| @@ -492,6 +492,7 @@ function(prototype, staticName, fieldName, getterName, lazyValue) {
|
|
|
| void addInstanceMember(Element member,
|
| DefineMemberFunction defineInstanceMember) {
|
| + assert(member.isDeclaration);
|
| // TODO(floitsch): we don't need to deal with members of
|
| // uninstantiated classes, that have been overwritten by subclasses.
|
|
|
| @@ -537,6 +538,7 @@ function(prototype, staticName, fieldName, getterName, lazyValue) {
|
| }
|
|
|
| List<String> emitClassFields(ClassElement classElement, CodeBuffer buffer) {
|
| + assert(classElement.isDeclaration);
|
| // If the class is never instantiated we still need to set it up for
|
| // inheritance purposes, but we can simplify its JavaScript constructor.
|
| bool isInstantiated =
|
| @@ -546,6 +548,7 @@ function(prototype, staticName, fieldName, getterName, lazyValue) {
|
| bool isFirstField = true;
|
| void addField(ClassElement enclosingClass, Element member) {
|
| assert(!member.isNative());
|
| + assert(member.isDeclaration);
|
|
|
| LibraryElement library = member.getLibrary();
|
| SourceString name = member.name;
|
| @@ -834,6 +837,7 @@ function(prototype, staticName, fieldName, getterName, lazyValue) {
|
|
|
| void emitDynamicFunctionGetter(FunctionElement member,
|
| DefineMemberFunction defineInstanceMember) {
|
| + assert(member.isDeclaration);
|
| // For every method that has the same name as a property-get we create a
|
| // getter that returns a bound closure. Say we have a class 'A' with method
|
| // 'foo' and somewhere in the code there is a dynamic property get of
|
| @@ -919,21 +923,23 @@ $classesCollector.$mangledName = {'':
|
| void emitCallStubForGetter(Element member,
|
| Set<Selector> selectors,
|
| DefineMemberFunction defineInstanceMember) {
|
| + assert(member.isDeclaration);
|
| + LibraryElement memberLibrary = member.getLibrary();
|
| String getter;
|
| if (member.isGetter()) {
|
| getter = "this.${namer.getterName(member.getLibrary(), member.name)}()";
|
| } else {
|
| - String name = namer.instanceFieldName(member.getLibrary(), member.name);
|
| + String name = namer.instanceFieldName(memberLibrary, member.name);
|
| getter = "this.$name";
|
| }
|
| for (Selector selector in selectors) {
|
| if (selector.applies(member, compiler)) {
|
| String invocationName =
|
| - namer.instanceMethodInvocationName(member.getLibrary(), member.name,
|
| + namer.instanceMethodInvocationName(memberLibrary, member.name,
|
| selector);
|
| SourceString callName = Namer.CLOSURE_INVOCATION_NAME;
|
| String closureCallName =
|
| - namer.instanceMethodInvocationName(member.getLibrary(), callName,
|
| + namer.instanceMethodInvocationName(memberLibrary, callName,
|
| selector);
|
| List<String> arguments = <String>[];
|
| for (int i = 0; i < selector.argumentCount; i++) {
|
| @@ -1027,6 +1033,7 @@ $classesCollector.$mangledName = {'':
|
|
|
| void emitExtraAccessors(Element member,
|
| DefineMemberFunction defineInstanceMember) {
|
| + assert(member.isDeclaration);
|
| if (member.isGetter() || member.isField()) {
|
| Set<Selector> selectors = compiler.codegenWorld.invokedNames[member.name];
|
| if (selectors !== null && !selectors.isEmpty()) {
|
|
|