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

Unified Diff: pkg/analyzer/lib/src/generated/element.dart

Issue 879093002: Fix mixin resolution order when multiple mixins present. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 11 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
Index: pkg/analyzer/lib/src/generated/element.dart
diff --git a/pkg/analyzer/lib/src/generated/element.dart b/pkg/analyzer/lib/src/generated/element.dart
index 49cc609920d1c09342843e71030ac04eaaa4b163..337dc998aeaea9ca9b8bf4d5d679755e77e1f778 100644
--- a/pkg/analyzer/lib/src/generated/element.dart
+++ b/pkg/analyzer/lib/src/generated/element.dart
@@ -1084,7 +1084,7 @@ class ClassElementImpl extends ElementImpl implements ClassElement {
}
}
while (currentElement != null && visitedClasses.add(currentElement)) {
- for (InterfaceType mixin in currentElement.mixins) {
+ for (InterfaceType mixin in currentElement.mixins.reversed) {
ClassElement mixinElement = mixin.element;
if (mixinElement != null) {
PropertyAccessorElement element = mixinElement.getGetter(getterName);
@@ -1117,7 +1117,7 @@ class ClassElementImpl extends ElementImpl implements ClassElement {
}
}
while (currentElement != null && visitedClasses.add(currentElement)) {
- for (InterfaceType mixin in currentElement.mixins) {
+ for (InterfaceType mixin in currentElement.mixins.reversed) {
ClassElement mixinElement = mixin.element;
if (mixinElement != null) {
MethodElement element = mixinElement.getMethod(methodName);
@@ -1150,7 +1150,7 @@ class ClassElementImpl extends ElementImpl implements ClassElement {
}
}
while (currentElement != null && visitedClasses.add(currentElement)) {
- for (InterfaceType mixin in currentElement.mixins) {
+ for (InterfaceType mixin in currentElement.mixins.reversed) {
ClassElement mixinElement = mixin.element;
if (mixinElement != null) {
PropertyAccessorElement element = mixinElement.getSetter(setterName);
@@ -1797,7 +1797,8 @@ class ConstructorElementImpl extends ExecutableElementImpl implements
String message;
String name = displayName;
if (name != null && !name.isEmpty) {
- message = 'Found constructor element named $name with no enclosing element';
+ message =
+ 'Found constructor element named $name with no enclosing element';
} else {
message = 'Found unnamed constructor element with no enclosing element';
}
@@ -6628,7 +6629,7 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
@override
PropertyAccessorElement lookUpGetterInSuperclass(String getterName,
LibraryElement library) {
- for (InterfaceType mixin in mixins) {
+ for (InterfaceType mixin in mixins.reversed) {
PropertyAccessorElement element = mixin.getGetter(getterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
@@ -6644,7 +6645,7 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
if (element != null && element.isAccessibleIn(library)) {
return element;
}
- for (InterfaceType mixin in supertype.mixins) {
+ for (InterfaceType mixin in supertype.mixins.reversed) {
element = mixin.getGetter(getterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
@@ -6668,7 +6669,7 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
@override
MethodElement lookUpMethodInSuperclass(String methodName,
LibraryElement library) {
- for (InterfaceType mixin in mixins) {
+ for (InterfaceType mixin in mixins.reversed) {
MethodElement element = mixin.getMethod(methodName);
if (element != null && element.isAccessibleIn(library)) {
return element;
@@ -6684,7 +6685,7 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
if (element != null && element.isAccessibleIn(library)) {
return element;
}
- for (InterfaceType mixin in supertype.mixins) {
+ for (InterfaceType mixin in supertype.mixins.reversed) {
element = mixin.getMethod(methodName);
if (element != null && element.isAccessibleIn(library)) {
return element;
@@ -6709,7 +6710,7 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
@override
PropertyAccessorElement lookUpSetterInSuperclass(String setterName,
LibraryElement library) {
- for (InterfaceType mixin in mixins) {
+ for (InterfaceType mixin in mixins.reversed) {
PropertyAccessorElement element = mixin.getSetter(setterName);
if (element != null && element.isAccessibleIn(library)) {
return element;
@@ -6725,7 +6726,7 @@ class InterfaceTypeImpl extends TypeImpl implements InterfaceType {
if (element != null && element.isAccessibleIn(library)) {
return element;
}
- for (InterfaceType mixin in supertype.mixins) {
+ for (InterfaceType mixin in supertype.mixins.reversed) {
element = mixin.getSetter(setterName);
if (element != null && element.isAccessibleIn(library)) {
return element;

Powered by Google App Engine
This is Rietveld 408576698