| Index: pkg/compiler/lib/src/ssa/kernel_impact.dart
|
| diff --git a/pkg/compiler/lib/src/ssa/kernel_impact.dart b/pkg/compiler/lib/src/ssa/kernel_impact.dart
|
| index 28eab949e7c2dd5fa910eda6406e715f526c47fc..54d2686958adbc509eff075402c6b2a93e47f4ce 100644
|
| --- a/pkg/compiler/lib/src/ssa/kernel_impact.dart
|
| +++ b/pkg/compiler/lib/src/ssa/kernel_impact.dart
|
| @@ -8,6 +8,7 @@ import '../common.dart';
|
| import '../common/names.dart';
|
| import '../compiler.dart';
|
| import '../constants/expressions.dart';
|
| +import '../core_types.dart';
|
| import '../elements/types.dart';
|
| import '../elements/elements.dart' show AstElement, ResolvedAst;
|
| import '../elements/entities.dart';
|
| @@ -29,8 +30,10 @@ ResolutionImpact build(Compiler compiler, ResolvedAst resolvedAst) {
|
| return compiler.reporter.withCurrentElement(element.implementation, () {
|
| JavaScriptBackend backend = compiler.backend;
|
| Kernel kernel = backend.kernelTask.kernel;
|
| - KernelImpactBuilder builder =
|
| - new KernelImpactBuilder(resolvedAst, compiler, kernel);
|
| + KernelAstAdapter astAdapter = new KernelAstAdapter(kernel, compiler.backend,
|
| + resolvedAst, kernel.nodeToAst, kernel.nodeToElement);
|
| + KernelImpactBuilder builder = new KernelImpactBuilder(
|
| + '${resolvedAst.element}', astAdapter, compiler.commonElements);
|
| if (element.isFunction ||
|
| element.isGetter ||
|
| element.isSetter ||
|
| @@ -62,20 +65,12 @@ ResolutionImpact build(Compiler compiler, ResolvedAst resolvedAst) {
|
| }
|
|
|
| class KernelImpactBuilder extends ir.Visitor {
|
| - final ResolvedAst resolvedAst;
|
| - final Compiler compiler;
|
| -
|
| - JavaScriptBackend get backend => compiler.backend;
|
| -
|
| - ResolutionWorldImpactBuilder impactBuilder;
|
| - KernelWorldBuilder astAdapter;
|
| + final ResolutionWorldImpactBuilder impactBuilder;
|
| + final KernelWorldBuilder astAdapter;
|
| + final CommonElements commonElements;
|
|
|
| - KernelImpactBuilder(this.resolvedAst, this.compiler, Kernel kernel) {
|
| - this.impactBuilder =
|
| - new ResolutionWorldImpactBuilder('${resolvedAst.element}');
|
| - this.astAdapter = new KernelAstAdapter(kernel, compiler.backend,
|
| - resolvedAst, kernel.nodeToAst, kernel.nodeToElement);
|
| - }
|
| + KernelImpactBuilder(String name, this.astAdapter, this.commonElements)
|
| + : this.impactBuilder = new ResolutionWorldImpactBuilder(name);
|
|
|
| /// Add a checked-mode type use of [type] if it is not `dynamic`.
|
| DartType checkType(ir.DartType irType) {
|
| @@ -146,7 +141,7 @@ class KernelImpactBuilder extends ir.Visitor {
|
| impactBuilder.registerFeature(Feature.ASYNC_STAR);
|
| break;
|
| case ir.AsyncMarker.SyncYielding:
|
| - compiler.reporter.internalError(resolvedAst.element,
|
| + throw new SpannableAssertionFailure(CURRENT_ELEMENT_SPANNABLE,
|
| "Unexpected async marker: ${procedure.function.asyncMarker}");
|
| }
|
| if (procedure.isExternal &&
|
| @@ -223,7 +218,7 @@ class KernelImpactBuilder extends ir.Visitor {
|
| DartType elementType = checkType(literal.typeArgument);
|
|
|
| impactBuilder.registerListLiteral(new ListLiteralUse(
|
| - compiler.commonElements.listType(elementType),
|
| + commonElements.listType(elementType),
|
| isConstant: literal.isConst,
|
| isEmpty: literal.expressions.isEmpty));
|
| }
|
| @@ -234,7 +229,7 @@ class KernelImpactBuilder extends ir.Visitor {
|
| DartType keyType = checkType(literal.keyType);
|
| DartType valueType = checkType(literal.valueType);
|
| impactBuilder.registerMapLiteral(new MapLiteralUse(
|
| - compiler.commonElements.mapType(keyType, valueType),
|
| + commonElements.mapType(keyType, valueType),
|
| isConstant: literal.isConst,
|
| isEmpty: literal.entries.isEmpty));
|
| }
|
| @@ -384,7 +379,7 @@ class KernelImpactBuilder extends ir.Visitor {
|
| }
|
|
|
| @override
|
| - void visitDirectGet(ir.StaticGet node) {
|
| + void visitDirectPropertyGet(ir.DirectPropertyGet node) {
|
| handleSuperGet(node.target);
|
| }
|
|
|
|
|