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

Unified Diff: pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart

Issue 2999723002: Add stub versions of KernelInferrerEngine and friends (Closed)
Patch Set: Created 3 years, 4 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/inferrer/kernel_inferrer_engine.dart
diff --git a/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart b/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart
new file mode 100644
index 0000000000000000000000000000000000000000..9b251dd4facb82592f624cab3350b9c3d4ffa621
--- /dev/null
+++ b/pkg/compiler/lib/src/inferrer/kernel_inferrer_engine.dart
@@ -0,0 +1,144 @@
+// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+import 'package:kernel/ast.dart' as ir;
+
+import '../compiler.dart';
+import '../constants/values.dart';
+import '../elements/entities.dart';
+import '../types/types.dart';
+import '../world.dart';
+import 'inferrer_engine.dart';
+import 'type_graph_inferrer.dart';
+import 'type_graph_nodes.dart';
+import 'type_system.dart';
+
+class KernelTypeGraphInferrer extends TypeGraphInferrer<ir.Node> {
+ final Compiler _compiler;
+
+ KernelTypeGraphInferrer(this._compiler, ClosedWorld closedWorld,
+ ClosedWorldRefiner closedWorldRefiner, {bool disableTypeInference: false})
+ : super(closedWorld, closedWorldRefiner,
+ disableTypeInference: disableTypeInference);
+
+ @override
+ InferrerEngine<ir.Node> createInferrerEngineFor(FunctionEntity main) {
+ return new KernelInferrerEngine(
+ _compiler, closedWorld, closedWorldRefiner, main);
+ }
+}
+
+class KernelGlobalTypeInferenceResults
+ extends GlobalTypeInferenceResults<ir.Node> {
+ KernelGlobalTypeInferenceResults(
+ TypesInferrer<ir.Node> inferrer, ClosedWorld closedWorld)
+ : super(inferrer, closedWorld);
+
+ GlobalTypeInferenceMemberResult<ir.Node> createMemberResult(
+ TypeGraphInferrer<ir.Node> inferrer, MemberEntity member,
+ {bool isJsInterop: false}) {
+ return new GlobalTypeInferenceMemberResultImpl<ir.Node>(
+ member,
+ // We store data in the context of the enclosing method, even
+ // for closure elements.
+ inferrer.inferrer.lookupDataOfMember(member),
+ inferrer,
+ isJsInterop,
+ dynamicType);
+ }
+
+ GlobalTypeInferenceParameterResult<ir.Node> createParameterResult(
+ TypeGraphInferrer<ir.Node> inferrer, Local parameter) {
+ return new GlobalTypeInferenceParameterResultImpl<ir.Node>(
+ parameter, inferrer, dynamicType);
+ }
+}
+
+class KernelInferrerEngine extends InferrerEngineImpl<ir.Node> {
+ KernelInferrerEngine(Compiler compiler, ClosedWorld closedWorld,
+ ClosedWorldRefiner closedWorldRefiner, FunctionEntity mainElement)
+ : super(compiler, closedWorld, closedWorldRefiner, mainElement,
+ const KernelTypeSystemStrategy());
+
+ @override
+ ConstantValue getFieldConstant(FieldEntity field) {
+ throw new UnimplementedError('KernelInferrerEngine.getFieldConstant');
+ }
+
+ @override
+ bool isFieldInitializerPotentiallyNull(
+ FieldEntity field, ir.Node initializer) {
+ throw new UnimplementedError(
+ 'KernelInferrerEngine.isFieldInitializerPotentiallyNull');
+ }
+
+ @override
+ TypeInformation computeMemberTypeInformation(
+ MemberEntity member, ir.Node body) {
+ throw new UnimplementedError(
+ 'KernelInferrerEngine.computeMemberTypeInformation');
+ }
+
+ @override
+ FunctionEntity lookupCallMethod(ClassEntity cls) {
+ throw new UnimplementedError('KernelInferrerEngine.lookupCallMethod');
+ }
+
+ @override
+ void forEachParameter(FunctionEntity method, void f(Local parameter)) {
+ throw new UnimplementedError('KernelInferrerEngine.forEachParameter');
+ }
+
+ @override
+ ir.Node computeMemberBody(MemberEntity member) {
+ throw new UnimplementedError('KernelInferrerEngine.computeMemberBody');
+ }
+
+ @override
+ int computeMemberSize(MemberEntity member) {
+ throw new UnimplementedError('KernelInferrerEngine.computeMemberSize');
+ }
+
+ @override
+ GlobalTypeInferenceElementData<ir.Node> createElementData() {
+ throw new UnimplementedError('KernelInferrerEngine.createElementData');
+ }
+}
+
+class KernelTypeSystemStrategy implements TypeSystemStrategy<ir.Node> {
+ const KernelTypeSystemStrategy();
+
+ @override
+ bool checkClassEntity(ClassEntity cls) => true;
+
+ @override
+ bool checkMapNode(ir.Node node) => true;
+
+ @override
+ bool checkListNode(ir.Node node) => true;
+
+ @override
+ bool checkLoopPhiNode(ir.Node node) => true;
+
+ @override
+ bool checkPhiNode(ir.Node node) => true;
+
+ @override
+ void forEachParameter(FunctionEntity function, void f(Local parameter)) {
+ throw new UnimplementedError('KernelTypeSystemStrategy.forEachParameter');
+ }
+
+ @override
+ ParameterTypeInformation createParameterTypeInformation(
+ Local parameter, TypeSystem<ir.Node> types) {
+ throw new UnimplementedError(
+ 'KernelTypeSystemStrategy.createParameterTypeInformation');
+ }
+
+ @override
+ MemberTypeInformation createMemberTypeInformation(MemberEntity member) {
+ throw new UnimplementedError(
+ 'KernelTypeSystemStrategy.createParameterTypeInformation');
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698