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

Unified Diff: pkg/compiler/lib/src/elements/elements.dart

Issue 1162603006: Element model cleanup + prepare for easier reimplementation. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 7 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
« no previous file with comments | « pkg/compiler/lib/src/elements/common.dart ('k') | pkg/compiler/lib/src/elements/modelx.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/elements/elements.dart
diff --git a/pkg/compiler/lib/src/elements/elements.dart b/pkg/compiler/lib/src/elements/elements.dart
index 4a820e0b5e238bc4135813b33c1645b315e7f420..c2e809f58432917b3da5fd940337f90a9c666ede 100644
--- a/pkg/compiler/lib/src/elements/elements.dart
+++ b/pkg/compiler/lib/src/elements/elements.dart
@@ -20,6 +20,7 @@ import '../dart2jslib.dart' show InterfaceType,
Script,
FunctionType,
Selector,
+ SourceSpan,
Constant,
Compiler,
Backend,
@@ -199,23 +200,23 @@ abstract class Element implements Entity {
@deprecated DartType computeType(Compiler compiler);
/// `true` if this element is a library.
- bool get isLibrary => kind == ElementKind.LIBRARY;
+ bool get isLibrary;
/// `true` if this element is a compilation unit.
- bool get isCompilationUnit => kind == ElementKind.COMPILATION_UNIT;
+ bool get isCompilationUnit;
/// `true` if this element is defines the scope of prefix used by one or
/// more import declarations.
- bool get isPrefix => kind == ElementKind.PREFIX;
+ bool get isPrefix;
/// `true` if this element is a class declaration or a mixin application.
- bool get isClass => kind == ElementKind.CLASS;
+ bool get isClass;
/// `true` if this element is a type variable declaration.
- bool get isTypeVariable => kind == ElementKind.TYPE_VARIABLE;
+ bool get isTypeVariable;
/// `true` if this element is a typedef declaration.
- bool get isTypedef => kind == ElementKind.TYPEDEF;
+ bool get isTypedef;
/// `true` if this element is a top level function, static or instance
/// method, local function or closure defined by a function expression.
@@ -226,48 +227,46 @@ abstract class Element implements Entity {
/// See also [isConstructor], [isGenerativeConstructor], and
/// [isFactoryConstructor] for constructor properties, and [isAccessor],
/// [isGetter] and [isSetter] for getter/setter properties.
- bool get isFunction => kind == ElementKind.FUNCTION;
+ bool get isFunction;
/// `true` if this element is an operator method.
bool get isOperator;
/// `true` if this element is an accessor, that is either an explicit
/// getter or an explicit setter.
- bool get isAccessor => isGetter || isSetter;
+ bool get isAccessor;
/// `true` if this element is an explicit getter method.
- bool get isGetter => kind == ElementKind.GETTER;
+ bool get isGetter;
/// `true` if this element is an explicit setter method.
- bool get isSetter => kind == ElementKind.SETTER;
+ bool get isSetter;
/// `true` if this element is a generative or factory constructor.
- bool get isConstructor => isGenerativeConstructor || isFactoryConstructor;
+ bool get isConstructor;
/// `true` if this element is a generative constructor, potentially
/// redirecting.
- bool get isGenerativeConstructor =>
- kind == ElementKind.GENERATIVE_CONSTRUCTOR;
+ bool get isGenerativeConstructor;
/// `true` if this element is the body of a generative constructor.
///
/// This is a synthetic element kind used only be the JavaScript backend.
- bool get isGenerativeConstructorBody =>
- kind == ElementKind.GENERATIVE_CONSTRUCTOR_BODY;
+ bool get isGenerativeConstructorBody;
/// `true` if this element is a factory constructor,
/// potentially redirecting.
bool get isFactoryConstructor;
/// `true` if this element is a local variable.
- bool get isVariable => kind == ElementKind.VARIABLE;
+ bool get isVariable;
/// `true` if this element is a top level variable, static or instance field.
- bool get isField => kind == ElementKind.FIELD;
+ bool get isField;
/// `true` if this element is the abstract field implicitly defined by an
/// explicit getter and/or setter.
- bool get isAbstractField => kind == ElementKind.ABSTRACT_FIELD;
+ bool get isAbstractField;
/// `true` if this element is formal parameter either from a constructor,
/// method, or typedef declaration or from an inlined function typed
@@ -275,25 +274,25 @@ abstract class Element implements Entity {
///
/// This property is `false` if this element is an initializing formal.
/// See [isInitializingFormal].
- bool get isParameter => kind == ElementKind.PARAMETER;
+ bool get isParameter;
/// `true` if this element is an initializing formal of constructor, that
/// is a formal of the form `this.foo`.
- bool get isInitializingFormal => kind == ElementKind.INITIALIZING_FORMAL;
+ bool get isInitializingFormal;
/// `true` if this element represents a resolution error.
- bool get isErroneous => kind == ElementKind.ERROR;
+ bool get isErroneous;
/// `true` if this element represents an ambiguous name.
///
/// Ambiguous names occur when two imports/exports contain different entities
/// by the same name. If an ambiguous name is resolved an warning or error
/// is produced.
- bool get isAmbiguous => kind == ElementKind.AMBIGUOUS;
+ bool get isAmbiguous;
/// `true` if this element represents an entity whose access causes one or
/// more warnings.
- bool get isWarnOnUse => kind == ElementKind.WARN_ON_USE;
+ bool get isWarnOnUse;
bool get isClosure;
@@ -340,8 +339,12 @@ abstract class Element implements Entity {
bool get impliesType;
+ // TODO(johnniwinther): Remove this.
Token get position;
+ /// The position of the declaration of this element, if available.
+ SourceSpan get sourcePosition;
+
CompilationUnitElement get compilationUnit;
LibraryElement get library;
LibraryElement get implementationLibrary;
@@ -409,7 +412,6 @@ abstract class Element implements Entity {
String get fixedBackendName;
bool get isAbstract;
- bool isForeign(Backend backend);
Scope buildScope();
@@ -525,7 +527,7 @@ class Elements {
static bool isNativeOrExtendsNative(ClassElement element) {
if (element == null) return false;
if (element.isNative) return true;
- assert(element.resolutionState == STATE_DONE);
+ assert(element.isResolved);
return isNativeOrExtendsNative(element.superclass);
}
@@ -903,6 +905,9 @@ abstract class LibraryElement extends Element
Element findExported(String elementName);
void forEachExport(f(Element element));
+ /// Calls [f] for each [Element] imported into this library.
+ void forEachImport(f(Element element));
+
/// Returns the imports that import element into this library.
Link<Import> getImportsFor(Element element);
@@ -1325,15 +1330,11 @@ abstract class TypeDeclarationElement extends Element implements AstElement {
bool get isResolved;
- int get resolutionState;
-
void ensureResolved(Compiler compiler);
}
abstract class ClassElement extends TypeDeclarationElement
implements ScopeContainerElement {
- int get id;
-
/// The length of the longest inheritance path from [:Object:].
int get hierarchyDepth;
@@ -1364,7 +1365,6 @@ abstract class ClassElement extends TypeDeclarationElement
ClassElement get declaration;
ClassElement get implementation;
- int get supertypeLoadState;
String get nativeTagInfo;
/// `true` if this class is an enum declaration.
@@ -1396,9 +1396,6 @@ abstract class ClassElement extends TypeDeclarationElement
/// Returns `true` if the class hierarchy for this class contains errors.
bool get hasIncompleteHierarchy;
- void addMember(Element element, DiagnosticListener listener);
- void addToScope(Element element, DiagnosticListener listener);
-
void addBackendMember(Element element);
void reverseBackendMembers();
@@ -1429,8 +1426,6 @@ abstract class ClassElement extends TypeDeclarationElement
void forEachBackendMember(void f(Element member));
- List<DartType> computeTypeParameters(Compiler compiler);
-
/// Looks up the member [name] in this class.
Member lookupClassMember(Name name);
« no previous file with comments | « pkg/compiler/lib/src/elements/common.dart ('k') | pkg/compiler/lib/src/elements/modelx.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698