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

Unified Diff: pkg/compiler/lib/src/common/resolution.dart

Issue 2123073003: remove dependency on compiler from resolution (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: respond to comments Created 4 years, 5 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/common/backend_api.dart ('k') | pkg/compiler/lib/src/compiler.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/common/resolution.dart
diff --git a/pkg/compiler/lib/src/common/resolution.dart b/pkg/compiler/lib/src/common/resolution.dart
index 515aa683796accc14c017d23e3fce24a6e30e294..d48603dc9a22c8c29145e944ee8cd6dbb3b1d352 100644
--- a/pkg/compiler/lib/src/common/resolution.dart
+++ b/pkg/compiler/lib/src/common/resolution.dart
@@ -6,27 +6,35 @@ library dart2js.common.resolution;
import '../common.dart';
import '../compiler.dart' show Compiler;
+import '../compile_time_constants.dart';
import '../constants/expressions.dart' show ConstantExpression;
+import '../constants/values.dart' show ConstantValue;
import '../core_types.dart' show CoreClasses, CoreTypes;
import '../dart_types.dart' show DartType, InterfaceType, Types;
import '../elements/elements.dart'
show
AstElement,
ClassElement,
+ ConstructorElement,
Element,
ExecutableElement,
FunctionElement,
FunctionSignature,
LibraryElement,
MetadataAnnotation,
+ MethodElement,
ResolvedAst,
TypedefElement;
import '../enqueue.dart' show ResolutionEnqueuer;
-import '../options.dart' show ParserOptions;
+import '../id_generator.dart';
+import '../mirrors_used.dart';
+import '../options.dart' show CompilerOptions, ParserOptions;
import '../parser/element_listener.dart' show ScannerOptions;
import '../parser/parser_task.dart';
import '../patch_parser.dart';
-import '../tree/tree.dart' show TypeAnnotation;
+import '../resolution/resolution.dart';
+import '../tree/tree.dart' show Send, TypeAnnotation;
+import '../universe/call_structure.dart' show CallStructure;
import '../universe/world_impact.dart' show WorldImpact;
import 'backend_api.dart';
import 'work.dart' show ItemCompilationContext, WorkItem;
@@ -55,9 +63,8 @@ class ResolutionImpact extends WorldImpact {
Iterable<MapLiteralUse> get mapLiterals => const <MapLiteralUse>[];
Iterable<ListLiteralUse> get listLiterals => const <ListLiteralUse>[];
Iterable<String> get constSymbolNames => const <String>[];
- Iterable<ConstantExpression> get constantLiterals {
- return const <ConstantExpression>[];
- }
+ Iterable<ConstantExpression> get constantLiterals =>
+ const <ConstantExpression>[];
Iterable<dynamic> get nativeData => const <dynamic>[];
}
@@ -206,6 +213,32 @@ abstract class Target {
/// Resolve target specific information for [element] and register it with
/// [registry].
void resolveNativeElement(Element element, NativeRegistry registry) {}
+
+ /// Processes [element] for resolution and returns the [MethodElement] that
+ /// defines the implementation of [element].
+ MethodElement resolveExternalFunction(MethodElement element) => element;
+
+ /// Called when resolving a call to a foreign function. If a non-null value
+ /// is returned, this is stored as native data for [node] in the resolved
+ /// AST.
+ dynamic resolveForeignCall(Send node, Element element,
+ CallStructure callStructure, ForeignResolver resolver) {
+ return null;
+ }
+
+ /// Returns the default superclass for the given [element] in this target.
+ ClassElement defaultSuperclass(ClassElement element);
+
+ /// Returns `true` if [element] is a native element, that is, that the
+ /// corresponding entity already exists in the target language.
+ bool isNative(Element element) => false;
+
+ /// Returns `true` if [element] is a foreign element, that is, that the
+ /// backend has specialized handling for the element.
+ bool isForeign(Element element) => false;
+
+ /// Returns `true` if this target supports async/await.
+ bool get supportsAsyncAwait => true;
}
// TODO(johnniwinther): Rename to `Resolver` or `ResolverContext`.
@@ -216,6 +249,24 @@ abstract class Resolution implements Frontend {
CoreTypes get coreTypes;
Types get types;
Target get target;
+ ResolverTask get resolver;
+ ResolutionEnqueuer get enqueuer;
+ CompilerOptions get options;
+ IdGenerator get idGenerator;
+ ConstantEnvironment get constants;
+ MirrorUsageAnalyzerTask get mirrorUsageAnalyzerTask;
+
+ // TODO(het): Move all elements into common/elements.dart
+ LibraryElement get coreLibrary;
+ FunctionElement get identicalFunction;
+ ClassElement get mirrorSystemClass;
+ FunctionElement get mirrorSystemGetNameFunction;
+ ConstructorElement get mirrorsUsedConstructor;
+ ConstructorElement get symbolConstructor;
+
+ // TODO(het): This is only referenced in a test...
+ /// The constant for the [proxy] variable defined in dart:core.
+ ConstantValue get proxyConstant;
/// If set to `true` resolution caches will not be cleared. Use this only for
/// testing.
@@ -237,6 +288,14 @@ abstract class Resolution implements Frontend {
/// Resolve [element] if it has not already been resolved.
void ensureResolved(Element element);
+ /// Called whenever a class has been resolved.
+ void onClassResolved(ClassElement element);
+
+ /// Registers that [element] has a compile time error.
+ ///
+ /// The error itself is given in [message].
+ void registerCompileTimeError(Element element, DiagnosticMessage message);
+
ResolutionWorkItem createWorkItem(
Element element, ItemCompilationContext compilationContext);
@@ -274,6 +333,10 @@ abstract class Resolution implements Frontend {
void emptyCache();
void forgetElement(Element element);
+
+ /// Returns `true` if [value] is the top-level [proxy] annotation from the
+ /// core library.
+ bool isProxyConstant(ConstantValue value);
}
/// A container of commonly used dependencies for tasks that involve parsing.
« no previous file with comments | « pkg/compiler/lib/src/common/backend_api.dart ('k') | pkg/compiler/lib/src/compiler.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698