Index: pkg/front_end/lib/src/fasta/source/diet_listener.dart |
diff --git a/pkg/front_end/lib/src/fasta/source/diet_listener.dart b/pkg/front_end/lib/src/fasta/source/diet_listener.dart |
index 0b7b385aeceee14412a2055a184a67c73e8eb74d..42c137d7dd443150786e42cc4591574d75529df3 100644 |
--- a/pkg/front_end/lib/src/fasta/source/diet_listener.dart |
+++ b/pkg/front_end/lib/src/fasta/source/diet_listener.dart |
@@ -31,8 +31,6 @@ import '../builder/builder.dart'; |
import 'source_library_builder.dart' show SourceLibraryBuilder; |
-import '../kernel/kernel_library_builder.dart' show isConstructorName; |
- |
class DietListener extends StackListener { |
final SourceLibraryBuilder library; |
@@ -420,7 +418,7 @@ class DietListener extends StackListener { |
assert(currentClass == null); |
currentClass = lookupBuilder(token, null, name); |
assert(memberScope == library.scope); |
- memberScope = currentClass.computeInstanceScope(memberScope); |
+ memberScope = currentClass.scope; |
} |
@override |
@@ -516,37 +514,33 @@ class DietListener extends StackListener { |
} |
Builder lookupBuilder(Token token, Token getOrSet, String name) { |
+ // TODO(ahe): Can I move this to Scope or ScopeBuilder? |
Builder builder; |
if (currentClass != null) { |
- builder = currentClass.members[name]; |
- if (builder == null && isConstructorName(name, currentClass.name)) { |
- int index = name.indexOf("."); |
- name = index == -1 ? "" : name.substring(index + 1); |
- builder = currentClass.members[name]; |
+ if (getOrSet != null && optional("set", getOrSet)) { |
+ builder = currentClass.scope.setters[name]; |
+ } else { |
+ builder = currentClass.scope.local[name]; |
+ } |
+ if (builder == null) { |
+ if (name == currentClass.name) { |
+ name = ""; |
+ } else { |
+ int index = name.indexOf("."); |
+ name = name.substring(index + 1); |
+ } |
+ builder = currentClass.constructors.local[name]; |
} |
+ } else if (getOrSet != null && optional("set", getOrSet)) { |
+ builder = library.scope.setters[name]; |
} else { |
- builder = library.members[name]; |
+ builder = library.scopeBuilder[name]; |
} |
if (builder == null) { |
return internalError("Builder not found: $name", uri, token.charOffset); |
} |
if (builder.next != null) { |
- Builder getterBuilder; |
- Builder setterBuilder; |
- Builder current = builder; |
- while (current != null) { |
- if (current.isGetter && getterBuilder == null) { |
- getterBuilder = current; |
- } else if (current.isSetter && setterBuilder == null) { |
- setterBuilder = current; |
- } else { |
- return inputError(uri, token.charOffset, "Duplicated name: $name"); |
- } |
- current = current.next; |
- } |
- assert(getOrSet != null); |
- if (optional("get", getOrSet)) return getterBuilder; |
- if (optional("set", getOrSet)) return setterBuilder; |
+ return inputError(uri, token.charOffset, "Duplicated name: $name"); |
} |
return builder; |
} |