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

Side by Side Diff: pkg/compiler/lib/src/types/flat_type_mask.dart

Issue 2488353004: Remove Compiler access from ResolutionEnqueuer (Closed)
Patch Set: Updated cf. comments. Created 4 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 part of masks; 5 part of masks;
6 6
7 /** 7 /**
8 * A flat type mask is a type mask that has been flattened to contain a 8 * A flat type mask is a type mask that has been flattened to contain a
9 * base type. 9 * base type.
10 */ 10 */
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
566 if (isExact && closedWorld.isAbstract(base)) return false; 566 if (isExact && closedWorld.isAbstract(base)) return false;
567 567
568 return closedWorld.needsNoSuchMethod( 568 return closedWorld.needsNoSuchMethod(
569 base, 569 base,
570 selector, 570 selector,
571 isExact 571 isExact
572 ? ClassQuery.EXACT 572 ? ClassQuery.EXACT
573 : (isSubclass ? ClassQuery.SUBCLASS : ClassQuery.SUBTYPE)); 573 : (isSubclass ? ClassQuery.SUBCLASS : ClassQuery.SUBTYPE));
574 } 574 }
575 575
576 Element locateSingleElement(Selector selector, Compiler compiler) { 576 Element locateSingleElement(Selector selector, ClosedWorld closedWorld) {
577 if (isEmptyOrNull) return null; 577 if (isEmptyOrNull) return null;
578 Iterable<Element> targets = 578 Iterable<Element> targets = closedWorld.allFunctions.filter(selector, this);
579 compiler.closedWorld.allFunctions.filter(selector, this);
580 if (targets.length != 1) return null; 579 if (targets.length != 1) return null;
581 Element result = targets.first; 580 Element result = targets.first;
582 ClassElement enclosing = result.enclosingClass.declaration; 581 ClassElement enclosing = result.enclosingClass.declaration;
583 // We only return the found element if it is guaranteed to be implemented on 582 // We only return the found element if it is guaranteed to be implemented on
584 // all classes in the receiver type [this]. It could be found only in a 583 // all classes in the receiver type [this]. It could be found only in a
585 // subclass or in an inheritance-wise unrelated class in case of subtype 584 // subclass or in an inheritance-wise unrelated class in case of subtype
586 // selectors. 585 // selectors.
587 ClosedWorld closedWorld = compiler.closedWorld;
588 if (isSubtype) { 586 if (isSubtype) {
589 // if (closedWorld.isUsedAsMixin(enclosing)) { 587 // if (closedWorld.isUsedAsMixin(enclosing)) {
590 if (closedWorld.everySubtypeIsSubclassOfOrMixinUseOf(base, enclosing)) { 588 if (closedWorld.everySubtypeIsSubclassOfOrMixinUseOf(base, enclosing)) {
591 return result; 589 return result;
592 } 590 }
593 //} 591 //}
594 return null; 592 return null;
595 } else { 593 } else {
596 if (closedWorld.isSubclassOf(base, enclosing)) return result; 594 if (closedWorld.isSubclassOf(base, enclosing)) return result;
597 if (closedWorld.isSubclassOfMixinUseOf(base, enclosing)) return result; 595 if (closedWorld.isSubclassOfMixinUseOf(base, enclosing)) return result;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 if (x.isExact) { 634 if (x.isExact) {
637 return null; 635 return null;
638 } else if (x.isSubclass) { 636 } else if (x.isSubclass) {
639 return closedWorld.strictSubclassesOf(element); 637 return closedWorld.strictSubclassesOf(element);
640 } else { 638 } else {
641 assert(x.isSubtype); 639 assert(x.isSubtype);
642 return closedWorld.strictSubtypesOf(element); 640 return closedWorld.strictSubtypesOf(element);
643 } 641 }
644 } 642 }
645 } 643 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/types/constants.dart ('k') | pkg/compiler/lib/src/types/forwarding_type_mask.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698