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

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

Issue 1383503002: Add Resolution and Parsing interfaces for computeType, ensureResolved and parseNode. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Add TODOs. Created 5 years, 3 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/modelx.dart ('k') | pkg/compiler/lib/src/js_backend/backend.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/enqueue.dart
diff --git a/pkg/compiler/lib/src/enqueue.dart b/pkg/compiler/lib/src/enqueue.dart
index b6ecbad9884fb387743da9227aeb1261d1208ae4..50b027f420f728047108e31d4a98b4c1cdaa0cab 100644
--- a/pkg/compiler/lib/src/enqueue.dart
+++ b/pkg/compiler/lib/src/enqueue.dart
@@ -9,6 +9,8 @@ import 'dart:collection' show
import 'common/names.dart' show
Identifiers;
+import 'common/resolution.dart' show
+ Resolution;
import 'common/work.dart' show
ItemCompilationContext,
WorkItem;
@@ -141,6 +143,9 @@ abstract class Enqueuer {
this.itemCompilationContextCreator,
this.strategy);
+ // TODO(johnniwinther): Move this to [ResolutionEnqueuer].
+ Resolution get resolution => compiler.resolution;
+
Queue<WorkItem> get queue;
bool get queueIsEmpty => queue.isEmpty;
@@ -192,7 +197,7 @@ abstract class Enqueuer {
{bool mirrorUsage: false}) {
task.measure(() {
ClassElement cls = type.element;
- cls.ensureResolved(compiler);
+ cls.ensureResolved(resolution);
universe.registerTypeInstantiation(
type,
byMirrors: mirrorUsage,
@@ -261,7 +266,7 @@ abstract class Enqueuer {
}
} else if (member.isFunction) {
FunctionElement function = member;
- function.computeType(compiler);
+ function.computeType(resolution);
if (function.name == Identifiers.noSuchMethod_) {
registerNoSuchMethod(function);
}
@@ -286,7 +291,7 @@ abstract class Enqueuer {
}
} else if (member.isGetter) {
FunctionElement getter = member;
- getter.computeType(compiler);
+ getter.computeType(resolution);
if (universe.hasInvokedGetter(getter, compiler.world)) {
addToWorkList(getter);
return;
@@ -299,7 +304,7 @@ abstract class Enqueuer {
}
} else if (member.isSetter) {
FunctionElement setter = member;
- setter.computeType(compiler);
+ setter.computeType(resolution);
if (universe.hasInvokedSetter(setter, compiler.world)) {
addToWorkList(setter);
return;
@@ -321,14 +326,14 @@ abstract class Enqueuer {
if (_processedClasses.contains(cls)) return;
// The class must be resolved to compute the set of all
// supertypes.
- cls.ensureResolved(compiler);
+ cls.ensureResolved(resolution);
void processClass(ClassElement superclass) {
if (_processedClasses.contains(superclass)) return;
_processedClasses.add(superclass);
recentClasses.add(superclass);
- superclass.ensureResolved(compiler);
+ superclass.ensureResolved(resolution);
superclass.implementation.forEachMember(processInstantiatedClassMember);
if (isResolutionQueue && !superclass.isSynthesized) {
compiler.resolver.checkClass(superclass);
@@ -416,7 +421,7 @@ abstract class Enqueuer {
logEnqueueReflectiveAction(element);
if (element.isTypedef) {
TypedefElement typedef = element;
- typedef.ensureResolved(compiler);
+ typedef.ensureResolved(resolution);
compiler.world.allTypedefs.add(element);
} else if (Elements.isStaticOrTopLevel(element)) {
registerStaticUse(element.declaration);
@@ -450,7 +455,7 @@ abstract class Enqueuer {
if (includeClass) {
logEnqueueReflectiveAction(cls, "register");
ClassElement decl = cls.declaration;
- decl.ensureResolved(compiler);
+ decl.ensureResolved(resolution);
compiler.backend.registerInstantiatedType(
decl.rawType,
this,
@@ -484,7 +489,7 @@ abstract class Enqueuer {
for (ClassElement cls in classes) {
if (compiler.backend.referencedFromMirrorSystem(cls)) {
logEnqueueReflectiveAction(cls);
- cls.ensureResolved(compiler);
+ cls.ensureResolved(resolution);
compiler.backend.registerInstantiatedType(
cls.rawType,
this,
@@ -700,7 +705,7 @@ abstract class Enqueuer {
void registerClosurizedMember(TypedElement element) {
assert(element.isInstanceMember);
- if (element.computeType(compiler).containsTypeVariables) {
+ if (element.computeType(resolution).containsTypeVariables) {
compiler.backend.registerClosureWithFreeTypeVariables(
element, this, compiler.globalDependencies);
}
« no previous file with comments | « pkg/compiler/lib/src/elements/modelx.dart ('k') | pkg/compiler/lib/src/js_backend/backend.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698