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

Side by Side Diff: pkg/compiler/lib/src/world.dart

Issue 2612253002: Fix needsNoSuchMethod computation for abstractly instantiated classes (Closed)
Patch Set: dartfmt Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 dart2js.world; 5 library dart2js.world;
6 6
7 import 'closure.dart' show ClosureClassElement, SynthesizedCallMethodElementX; 7 import 'closure.dart' show ClosureClassElement, SynthesizedCallMethodElementX;
8 import 'common/backend_api.dart' show BackendClasses; 8 import 'common/backend_api.dart' show BackendClasses;
9 import 'common.dart'; 9 import 'common.dart';
10 import 'constants/constant_system.dart'; 10 import 'constants/constant_system.dart';
(...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 return IterationStep.STOP; 901 return IterationStep.STOP;
902 } 902 }
903 }, ClassHierarchyNode.EXPLICITLY_INSTANTIATED, strict: true); 903 }, ClassHierarchyNode.EXPLICITLY_INSTANTIATED, strict: true);
904 // We stopped fast so we need noSuchMethod handling. 904 // We stopped fast so we need noSuchMethod handling.
905 return result == IterationStep.STOP; 905 return result == IterationStep.STOP;
906 } 906 }
907 907
908 ClassSet classSet = getClassSet(base); 908 ClassSet classSet = getClassSet(base);
909 ClassHierarchyNode node = classSet.node; 909 ClassHierarchyNode node = classSet.node;
910 if (query == ClassQuery.EXACT) { 910 if (query == ClassQuery.EXACT) {
911 return node.isDirectlyInstantiated && !hasConcreteMatch(base, selector); 911 return node.isExplicitlyInstantiated && !hasConcreteMatch(base, selector);
912 } else if (query == ClassQuery.SUBCLASS) { 912 } else if (query == ClassQuery.SUBCLASS) {
913 return subclassesNeedNoSuchMethod(node); 913 return subclassesNeedNoSuchMethod(node);
914 } else { 914 } else {
915 if (subclassesNeedNoSuchMethod(node)) return true; 915 if (subclassesNeedNoSuchMethod(node)) return true;
916 for (ClassHierarchyNode subtypeNode in classSet.subtypeNodes) { 916 for (ClassHierarchyNode subtypeNode in classSet.subtypeNodes) {
917 if (subclassesNeedNoSuchMethod(subtypeNode)) return true; 917 if (subclassesNeedNoSuchMethod(subtypeNode)) return true;
918 } 918 }
919 return false; 919 return false;
920 } 920 }
921 } 921 }
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 return getMightBePassedToApply(element.expression); 1109 return getMightBePassedToApply(element.expression);
1110 } 1110 }
1111 return functionsThatMightBePassedToApply.contains(element); 1111 return functionsThatMightBePassedToApply.contains(element);
1112 } 1112 }
1113 1113
1114 @override 1114 @override
1115 bool getCurrentlyKnownMightBePassedToApply(Element element) { 1115 bool getCurrentlyKnownMightBePassedToApply(Element element) {
1116 return getMightBePassedToApply(element); 1116 return getMightBePassedToApply(element);
1117 } 1117 }
1118 } 1118 }
OLDNEW
« no previous file with comments | « no previous file | tests/compiler/dart2js/jsinterop/world_test.dart » ('j') | tests/language/regress_28255_test.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698