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

Unified Diff: compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java

Issue 11348139: Issue 6776. Infer sub-type member only if there is only one candidate. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 1 month 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
Index: compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java
diff --git a/compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java b/compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java
index fac151a68bf2889a326fc71679b8e1bc3582d9d6..52c63ce6a4698f42a7fb2294e8601b0584f341b4 100644
--- a/compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java
+++ b/compiler/java/com/google/dart/compiler/type/InterfaceTypeImplementation.java
@@ -233,21 +233,32 @@ class InterfaceTypeImplementation extends AbstractType implements InterfaceType
@Override
public Member lookupSubTypeMember(String name) {
+ Member foundMember = null;
for (ClassElement subClass : subClasses.keySet()) {
+ // find one or more members in subClass elements
{
Element element = subClass.lookupLocalElement(name);
if (element != null) {
- return new MemberImplementation(this, element);
+ if (foundMember != null) {
+ return null;
+ }
+ foundMember = new MemberImplementation(this, element);
+ continue;
}
}
+ // try to find deeper
InterfaceType type = subClass.getType();
if (type != null) {
Member member = type.lookupSubTypeMember(name);
if (member != null) {
- return member;
+ if (foundMember != null) {
+ return null;
+ }
+ foundMember = member;
}
}
}
- return null;
+ // may be found
+ return foundMember;
}
}

Powered by Google App Engine
This is Rietveld 408576698