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

Side by Side Diff: pkg/analyzer/lib/src/generated/element_resolver.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, 10 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library engine.resolver.element_resolver; 5 library engine.resolver.element_resolver;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 8
9 import 'ast.dart'; 9 import 'ast.dart';
10 import 'element.dart'; 10 import 'element.dart';
(...skipping 1688 matching lines...) Expand 10 before | Expand all | Expand 10 after
1699 return getter; 1699 return getter;
1700 } 1700 }
1701 } 1701 }
1702 for (InterfaceType interfaceType in targetType.interfaces) { 1702 for (InterfaceType interfaceType in targetType.interfaces) {
1703 PropertyAccessorElement getter = 1703 PropertyAccessorElement getter =
1704 _lookUpGetterInInterfaces(interfaceType, true, getterName, visitedInte rfaces); 1704 _lookUpGetterInInterfaces(interfaceType, true, getterName, visitedInte rfaces);
1705 if (getter != null) { 1705 if (getter != null) {
1706 return getter; 1706 return getter;
1707 } 1707 }
1708 } 1708 }
1709 for (InterfaceType mixinType in targetType.mixins) { 1709 for (InterfaceType mixinType in targetType.mixins.reversed) {
1710 PropertyAccessorElement getter = 1710 PropertyAccessorElement getter =
1711 _lookUpGetterInInterfaces(mixinType, true, getterName, visitedInterfac es); 1711 _lookUpGetterInInterfaces(mixinType, true, getterName, visitedInterfac es);
1712 if (getter != null) { 1712 if (getter != null) {
1713 return getter; 1713 return getter;
1714 } 1714 }
1715 } 1715 }
1716 InterfaceType superclass = targetType.superclass; 1716 InterfaceType superclass = targetType.superclass;
1717 if (superclass == null) { 1717 if (superclass == null) {
1718 return null; 1718 return null;
1719 } 1719 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
1792 for (InterfaceType interfaceType in targetType.interfaces) { 1792 for (InterfaceType interfaceType in targetType.interfaces) {
1793 ExecutableElement member = _lookUpGetterOrMethodInInterfaces( 1793 ExecutableElement member = _lookUpGetterOrMethodInInterfaces(
1794 interfaceType, 1794 interfaceType,
1795 true, 1795 true,
1796 memberName, 1796 memberName,
1797 visitedInterfaces); 1797 visitedInterfaces);
1798 if (member != null) { 1798 if (member != null) {
1799 return member; 1799 return member;
1800 } 1800 }
1801 } 1801 }
1802 for (InterfaceType mixinType in targetType.mixins) { 1802 for (InterfaceType mixinType in targetType.mixins.reversed) {
1803 ExecutableElement member = _lookUpGetterOrMethodInInterfaces( 1803 ExecutableElement member = _lookUpGetterOrMethodInInterfaces(
1804 mixinType, 1804 mixinType,
1805 true, 1805 true,
1806 memberName, 1806 memberName,
1807 visitedInterfaces); 1807 visitedInterfaces);
1808 if (member != null) { 1808 if (member != null) {
1809 return member; 1809 return member;
1810 } 1810 }
1811 } 1811 }
1812 InterfaceType superclass = targetType.superclass; 1812 InterfaceType superclass = targetType.superclass;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1890 return method; 1890 return method;
1891 } 1891 }
1892 } 1892 }
1893 for (InterfaceType interfaceType in targetType.interfaces) { 1893 for (InterfaceType interfaceType in targetType.interfaces) {
1894 MethodElement method = 1894 MethodElement method =
1895 _lookUpMethodInInterfaces(interfaceType, true, methodName, visitedInte rfaces); 1895 _lookUpMethodInInterfaces(interfaceType, true, methodName, visitedInte rfaces);
1896 if (method != null) { 1896 if (method != null) {
1897 return method; 1897 return method;
1898 } 1898 }
1899 } 1899 }
1900 for (InterfaceType mixinType in targetType.mixins) { 1900 for (InterfaceType mixinType in targetType.mixins.reversed) {
1901 MethodElement method = 1901 MethodElement method =
1902 _lookUpMethodInInterfaces(mixinType, true, methodName, visitedInterfac es); 1902 _lookUpMethodInInterfaces(mixinType, true, methodName, visitedInterfac es);
1903 if (method != null) { 1903 if (method != null) {
1904 return method; 1904 return method;
1905 } 1905 }
1906 } 1906 }
1907 InterfaceType superclass = targetType.superclass; 1907 InterfaceType superclass = targetType.superclass;
1908 if (superclass == null) { 1908 if (superclass == null) {
1909 return null; 1909 return null;
1910 } 1910 }
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
2011 return setter; 2011 return setter;
2012 } 2012 }
2013 } 2013 }
2014 for (InterfaceType interfaceType in targetType.interfaces) { 2014 for (InterfaceType interfaceType in targetType.interfaces) {
2015 PropertyAccessorElement setter = 2015 PropertyAccessorElement setter =
2016 _lookUpSetterInInterfaces(interfaceType, true, setterName, visitedInte rfaces); 2016 _lookUpSetterInInterfaces(interfaceType, true, setterName, visitedInte rfaces);
2017 if (setter != null) { 2017 if (setter != null) {
2018 return setter; 2018 return setter;
2019 } 2019 }
2020 } 2020 }
2021 for (InterfaceType mixinType in targetType.mixins) { 2021 for (InterfaceType mixinType in targetType.mixins.reversed) {
2022 PropertyAccessorElement setter = 2022 PropertyAccessorElement setter =
2023 _lookUpSetterInInterfaces(mixinType, true, setterName, visitedInterfac es); 2023 _lookUpSetterInInterfaces(mixinType, true, setterName, visitedInterfac es);
2024 if (setter != null) { 2024 if (setter != null) {
2025 return setter; 2025 return setter;
2026 } 2026 }
2027 } 2027 }
2028 InterfaceType superclass = targetType.superclass; 2028 InterfaceType superclass = targetType.superclass;
2029 if (superclass == null) { 2029 if (superclass == null) {
2030 return null; 2030 return null;
2031 } 2031 }
(...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after
3123 @override 3123 @override
3124 Element get staticElement => null; 3124 Element get staticElement => null;
3125 3125
3126 @override 3126 @override
3127 accept(AstVisitor visitor) => null; 3127 accept(AstVisitor visitor) => null;
3128 3128
3129 @override 3129 @override
3130 void visitChildren(AstVisitor visitor) { 3130 void visitChildren(AstVisitor visitor) {
3131 } 3131 }
3132 } 3132 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/generated/element.dart ('k') | pkg/analyzer/lib/src/generated/resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698