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

Unified Diff: pkg/compiler/lib/src/universe/use.dart

Issue 2644533002: Mostly use entities in use.dart (Closed)
Patch Set: Fixes 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 side-by-side diff with in-line comments
Download patch
Index: pkg/compiler/lib/src/universe/use.dart
diff --git a/pkg/compiler/lib/src/universe/use.dart b/pkg/compiler/lib/src/universe/use.dart
index a2ad41172f668f6d8e5dfa8b8d194b9e3a806ba3..581a1b2f4d1bec042e5ba1e2940fbc71a4156b6e 100644
--- a/pkg/compiler/lib/src/universe/use.dart
+++ b/pkg/compiler/lib/src/universe/use.dart
@@ -19,7 +19,14 @@ library dart2js.universe.use;
import '../closure.dart' show BoxFieldElement;
import '../common.dart';
import '../elements/types.dart';
-import '../elements/elements.dart';
+import '../elements/elements.dart'
+ show
+ ConstructorElement,
+ ConstructorBodyElement,
+ Element,
+ Entity,
Siggi Cherem (dart-lang) 2017/01/18 19:27:53 should we move Entity to entities.dart?
Johnni Winther 2017/01/19 12:20:57 Soon-ish.
+ LocalFunctionElement;
+import '../elements/entities.dart';
import '../util/util.dart' show Hashing;
import '../world.dart' show World;
import 'call_structure.dart' show CallStructure;
@@ -41,7 +48,7 @@ class DynamicUse {
DynamicUse(this.selector, this.mask);
- bool appliesUnnamed(Element element, World world) {
+ bool appliesUnnamed(MemberEntity element, World world) {
return selector.appliesUnnamed(element) &&
(mask == null || mask.canHit(element, selector, world));
}
@@ -86,18 +93,17 @@ enum StaticUseKind {
// TODO(johnniwinther): Create backend-specific implementations with better
// invariants.
class StaticUse {
- final Element element;
+ final Entity element;
final StaticUseKind kind;
final int hashCode;
final DartType type;
- StaticUse.internal(Element element, StaticUseKind kind,
- [DartType type = null])
+ StaticUse.internal(Entity element, StaticUseKind kind, [DartType type = null])
: this.element = element,
this.kind = kind,
this.type = type,
this.hashCode = Hashing.objectsHash(element, kind, type) {
- assert(invariant(element, element.isDeclaration,
+ assert(invariant(element, !(element is Element && !element.isDeclaration),
message: "Static use element $element must be "
"the declaration element."));
}
@@ -105,7 +111,7 @@ class StaticUse {
/// Invocation of a static or top-level [element] with the given
/// [callStructure].
factory StaticUse.staticInvoke(
- MethodElement element, CallStructure callStructure) {
+ FunctionEntity element, CallStructure callStructure) {
// TODO(johnniwinther): Use the [callStructure].
assert(invariant(element, element.isStatic || element.isTopLevel,
message: "Static invoke element $element must be a top-level "
@@ -114,7 +120,7 @@ class StaticUse {
}
/// Closurization of a static or top-level function [element].
- factory StaticUse.staticTearOff(MethodElement element) {
+ factory StaticUse.staticTearOff(FunctionEntity element) {
assert(invariant(element, element.isStatic || element.isTopLevel,
message: "Static tear-off element $element must be a top-level "
"or static method."));
@@ -122,7 +128,7 @@ class StaticUse {
}
/// Read access of a static or top-level field or getter [element].
- factory StaticUse.staticGet(MemberElement element) {
+ factory StaticUse.staticGet(MemberEntity element) {
assert(invariant(element, element.isStatic || element.isTopLevel,
message: "Static get element $element must be a top-level "
"or static method."));
@@ -132,7 +138,7 @@ class StaticUse {
}
/// Write access of a static or top-level field or setter [element].
- factory StaticUse.staticSet(MemberElement element) {
+ factory StaticUse.staticSet(MemberEntity element) {
assert(invariant(element, element.isStatic || element.isTopLevel,
message: "Static set element $element must be a top-level "
"or static method."));
@@ -143,7 +149,7 @@ class StaticUse {
/// Invocation of the lazy initializer for a static or top-level field
/// [element].
- factory StaticUse.staticInit(FieldElement element) {
+ factory StaticUse.staticInit(FieldEntity element) {
assert(invariant(element, element.isStatic || element.isTopLevel,
message: "Static init element $element must be a top-level "
"or static method."));
@@ -154,7 +160,7 @@ class StaticUse {
/// Invocation of a super method [element] with the given [callStructure].
factory StaticUse.superInvoke(
- MethodElement element, CallStructure callStructure) {
+ FunctionEntity element, CallStructure callStructure) {
// TODO(johnniwinther): Use the [callStructure].
assert(invariant(element, element.isInstanceMember,
message: "Super invoke element $element must be an instance method."));
@@ -162,7 +168,7 @@ class StaticUse {
}
/// Read access of a super field or getter [element].
- factory StaticUse.superGet(MemberElement element) {
+ factory StaticUse.superGet(MemberEntity element) {
assert(invariant(element, element.isInstanceMember,
message: "Super get element $element must be an instance method."));
assert(invariant(element, element.isField || element.isGetter,
@@ -171,7 +177,7 @@ class StaticUse {
}
/// Write access of a super field [element].
- factory StaticUse.superFieldSet(FieldElement element) {
+ factory StaticUse.superFieldSet(FieldEntity element) {
assert(invariant(element, element.isInstanceMember,
message: "Super set element $element must be an instance method."));
assert(invariant(element, element.isField,
@@ -180,7 +186,7 @@ class StaticUse {
}
/// Write access of a super setter [element].
- factory StaticUse.superSetterSet(SetterElement element) {
+ factory StaticUse.superSetterSet(FunctionEntity element) {
assert(invariant(element, element.isInstanceMember,
message: "Super set element $element must be an instance method."));
assert(invariant(element, element.isSetter,
@@ -189,7 +195,7 @@ class StaticUse {
}
/// Closurization of a super method [element].
- factory StaticUse.superTearOff(MethodElement element) {
+ factory StaticUse.superTearOff(FunctionEntity element) {
assert(invariant(element, element.isInstanceMember && element.isFunction,
message: "Super invoke element $element must be an instance method."));
return new StaticUse.internal(element, StaticUseKind.SUPER_TEAR_OFF);
@@ -198,7 +204,7 @@ class StaticUse {
/// Invocation of a constructor [element] through a this or super
/// constructor call with the given [callStructure].
factory StaticUse.superConstructorInvoke(
- Element element, CallStructure callStructure) {
+ ConstructorElement element, CallStructure callStructure) {
// TODO(johnniwinther): Use the [callStructure].
assert(invariant(element, element.isGenerativeConstructor,
message: "Constructor invoke element $element must be a "
@@ -216,7 +222,7 @@ class StaticUse {
/// Direct invocation of a method [element] with the given [callStructure].
factory StaticUse.directInvoke(
- MethodElement element, CallStructure callStructure) {
+ FunctionEntity element, CallStructure callStructure) {
// TODO(johnniwinther): Use the [callStructure].
assert(invariant(element, element.isInstanceMember,
message: "Direct invoke element $element must be an instance member."));
@@ -226,7 +232,7 @@ class StaticUse {
}
/// Direct read access of a field or getter [element].
- factory StaticUse.directGet(MemberElement element) {
+ factory StaticUse.directGet(MemberEntity element) {
assert(invariant(element, element.isInstanceMember,
message: "Direct get element $element must be an instance member."));
assert(invariant(element, element.isField || element.isGetter,
@@ -235,7 +241,7 @@ class StaticUse {
}
/// Direct write access of a field [element].
- factory StaticUse.directSet(FieldElement element) {
+ factory StaticUse.directSet(FieldEntity element) {
assert(invariant(element, element.isInstanceMember,
message: "Direct set element $element must be an instance member."));
assert(invariant(element, element.isField,
@@ -245,7 +251,10 @@ class StaticUse {
/// Constructor invocation of [element] with the given [callStructure].
factory StaticUse.constructorInvoke(
- ConstructorElement element, CallStructure callStructure) {
+ FunctionEntity element, CallStructure callStructure) {
+ assert(invariant(element, element.isConstructor,
+ message: "Constructor invocation element $element "
+ "must be a constructor."));
// TODO(johnniwinther): Use the [callStructure].
return new StaticUse.internal(element, StaticUseKind.GENERAL);
}
@@ -253,9 +262,12 @@ class StaticUse {
/// Constructor invocation of [element] with the given [callStructure] on
/// [type].
factory StaticUse.typedConstructorInvoke(
- ConstructorElement element, CallStructure callStructure, DartType type) {
+ FunctionEntity element, CallStructure callStructure, DartType type) {
assert(invariant(element, type != null,
message: "No type provided for constructor invocation."));
+ assert(invariant(element, element.isConstructor,
+ message: "Typed constructor invocation element $element "
+ "must be a constructor."));
// TODO(johnniwinther): Use the [callStructure].
return new StaticUse.internal(
element, StaticUseKind.CONSTRUCTOR_INVOKE, type);
@@ -264,9 +276,12 @@ class StaticUse {
/// Constant constructor invocation of [element] with the given
/// [callStructure] on [type].
factory StaticUse.constConstructorInvoke(
- ConstructorElement element, CallStructure callStructure, DartType type) {
+ FunctionEntity element, CallStructure callStructure, DartType type) {
assert(invariant(element, type != null,
message: "No type provided for constructor invocation."));
+ assert(invariant(element, element.isConstructor,
+ message: "Const constructor invocation element $element "
+ "must be a constructor."));
// TODO(johnniwinther): Use the [callStructure].
return new StaticUse.internal(
element, StaticUseKind.CONST_CONSTRUCTOR_INVOKE, type);
@@ -274,21 +289,24 @@ class StaticUse {
/// Constructor redirection to [element] on [type].
factory StaticUse.constructorRedirect(
- ConstructorElement element, InterfaceType type) {
+ FunctionEntity element, InterfaceType type) {
assert(invariant(element, type != null,
- message: "No type provided for constructor invocation."));
+ message: "No type provided for constructor redirection."));
+ assert(invariant(element, element.isConstructor,
+ message: "Constructor redirection element $element "
+ "must be a constructor."));
return new StaticUse.internal(element, StaticUseKind.REDIRECTION, type);
}
/// Initialization of an instance field [element].
- factory StaticUse.fieldInit(FieldElement element) {
+ factory StaticUse.fieldInit(FieldEntity element) {
assert(invariant(element, element.isInstanceMember,
message: "Field init element $element must be an instance field."));
return new StaticUse.internal(element, StaticUseKind.GENERAL);
}
/// Read access of an instance field or boxed field [element].
- factory StaticUse.fieldGet(FieldElement element) {
+ factory StaticUse.fieldGet(FieldEntity element) {
assert(invariant(
element, element.isInstanceMember || element is BoxFieldElement,
message: "Field init element $element must be an instance "
@@ -297,7 +315,7 @@ class StaticUse {
}
/// Write access of an instance field or boxed field [element].
- factory StaticUse.fieldSet(FieldElement element) {
+ factory StaticUse.fieldSet(FieldEntity element) {
assert(invariant(
element, element.isInstanceMember || element is BoxFieldElement,
message: "Field init element $element must be an instance "
@@ -312,12 +330,12 @@ class StaticUse {
/// Unknown use of [element].
@deprecated
- factory StaticUse.foreignUse(Element element) {
+ factory StaticUse.foreignUse(Entity element) {
return new StaticUse.internal(element, StaticUseKind.GENERAL);
}
/// Direct use of [element] as done with `--analyze-all` and `--analyze-main`.
- factory StaticUse.directUse(Element element) {
+ factory StaticUse.directUse(Entity element) {
return new StaticUse.internal(element, StaticUseKind.DIRECT_USE);
}

Powered by Google App Engine
This is Rietveld 408576698