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

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

Issue 1384523003: Refactor resolution of foreign calls. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: 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/resolution/members.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/resolution/registry.dart
diff --git a/pkg/compiler/lib/src/resolution/registry.dart b/pkg/compiler/lib/src/resolution/registry.dart
index de12ef01a2723388b05da8eb3da556ac20eb049b..558c310b403e04f975f37fd4bb4e4543a7559edb 100644
--- a/pkg/compiler/lib/src/resolution/registry.dart
+++ b/pkg/compiler/lib/src/resolution/registry.dart
@@ -5,7 +5,8 @@
library dart2js.resolution.registry;
import '../common/backend_api.dart' show
- Backend;
+ Backend,
+ ForeignResolver;
import '../common/registry.dart' show
Registry;
import '../compiler.dart' show
@@ -21,6 +22,8 @@ import '../elements/elements.dart';
import '../tree/tree.dart';
import '../util/util.dart' show
Setlet;
+import '../universe/call_structure.dart' show
+ CallStructure;
import '../universe/selector.dart' show
Selector;
import '../universe/universe.dart' show
@@ -480,22 +483,13 @@ class ResolutionRegistry implements Registry {
backend.resolutionCallbacks.onMapLiteral(this, type, isConstant);
}
- // TODO(johnniwinther): Remove the [ResolverVisitor] dependency. Its only
- // needed to lookup types in the current scope.
- void registerJsCall(Node node, ResolverVisitor visitor) {
- world.registerJsCall(node, visitor);
- }
-
- // TODO(johnniwinther): Remove the [ResolverVisitor] dependency. Its only
- // needed to lookup types in the current scope.
- void registerJsEmbeddedGlobalCall(Node node, ResolverVisitor visitor) {
- world.registerJsEmbeddedGlobalCall(node, visitor);
- }
-
- // TODO(johnniwinther): Remove the [ResolverVisitor] dependency. Its only
- // needed to lookup types in the current scope.
- void registerJsBuiltinCall(Node node, ResolverVisitor visitor) {
- world.registerJsBuiltinCall(node, visitor);
+ void registerForeignCall(Node node,
+ Element element,
+ CallStructure callStructure,
+ ResolverVisitor visitor) {
+ backend.registerForeignCall(
+ node, element, callStructure,
+ new ForeignResolutionResolver(visitor, this));
}
void registerGetOfStaticFunction(FunctionElement element) {
@@ -619,3 +613,25 @@ class ResolutionRegistry implements Registry {
mapping.containsTryStatement = true;
}
}
+
+class ForeignResolutionResolver implements ForeignResolver {
+ final ResolverVisitor visitor;
+ final ResolutionRegistry registry;
+
+ ForeignResolutionResolver(this.visitor, this.registry);
+
+ @override
+ ConstantExpression getConstant(Node node) {
+ return registry.getConstant(node);
+ }
+
+ @override
+ void registerInstantiatedType(InterfaceType type) {
+ registry.registerInstantiatedType(type);
+ }
+
+ @override
+ DartType resolveTypeFromString(Node node, String typeName) {
+ return visitor.resolveTypeFromString(node, typeName);
+ }
+}
« no previous file with comments | « pkg/compiler/lib/src/resolution/members.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698