| 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 1801dba8fde9d96c819583906cf0a423e3004ac5..28eab949e7c2dd5fa910eda6406e715f526c47fc 100644
|
| --- a/pkg/compiler/lib/src/ssa/kernel_impact.dart
|
| +++ b/pkg/compiler/lib/src/ssa/kernel_impact.dart
|
| @@ -68,7 +68,7 @@ class KernelImpactBuilder extends ir.Visitor {
|
| JavaScriptBackend get backend => compiler.backend;
|
|
|
| ResolutionWorldImpactBuilder impactBuilder;
|
| - KernelAstAdapter astAdapter;
|
| + KernelWorldBuilder astAdapter;
|
|
|
| KernelImpactBuilder(this.resolvedAst, this.compiler, Kernel kernel) {
|
| this.impactBuilder =
|
| @@ -113,7 +113,8 @@ class KernelImpactBuilder extends ir.Visitor {
|
| impactBuilder.registerFeature(Feature.LAZY_FIELD);
|
| }
|
| }
|
| - if (field.isInstanceMember && astAdapter.isNative(field.enclosingClass)) {
|
| + if (field.isInstanceMember &&
|
| + astAdapter.isNativeClass(field.enclosingClass)) {
|
| impactBuilder
|
| .registerNativeData(astAdapter.getNativeBehaviorForFieldLoad(field));
|
| impactBuilder
|
| @@ -257,16 +258,14 @@ class KernelImpactBuilder extends ir.Visitor {
|
| {bool isConst: false}) {
|
| _visitArguments(node.arguments);
|
| FunctionEntity constructor = astAdapter.getConstructor(target);
|
| - ClassEntity cls = astAdapter.getClass(target.enclosingClass);
|
| - List<DartType> typeArguments =
|
| - astAdapter.getDartTypes(node.arguments.types);
|
| - InterfaceType type = astAdapter.createInterfaceType(cls, typeArguments);
|
| + InterfaceType type = astAdapter.createInterfaceType(
|
| + target.enclosingClass, node.arguments.types);
|
| CallStructure callStructure = astAdapter.getCallStructure(node.arguments);
|
| impactBuilder.registerStaticUse(isConst
|
| ? new StaticUse.constConstructorInvoke(constructor, callStructure, type)
|
| : new StaticUse.typedConstructorInvoke(
|
| constructor, callStructure, type));
|
| - if (typeArguments.any((DartType type) => !type.isDynamic)) {
|
| + if (type.typeArguments.any((DartType type) => !type.isDynamic)) {
|
| impactBuilder.registerFeature(Feature.TYPE_VARIABLE_BOUNDS_CHECK);
|
| }
|
| }
|
| @@ -325,14 +324,9 @@ class KernelImpactBuilder extends ir.Visitor {
|
| astAdapter.getNativeBehaviorForJsEmbeddedGlobalCall(node));
|
| break;
|
| case ForeignKind.JS_INTERCEPTOR_CONSTANT:
|
| - if (node.arguments.positional.length != 1 ||
|
| - node.arguments.named.isNotEmpty) {
|
| - astAdapter.reporter.reportErrorMessage(CURRENT_ELEMENT_SPANNABLE,
|
| - MessageKind.WRONG_ARGUMENT_FOR_JS_INTERCEPTOR_CONSTANT);
|
| - }
|
| - ir.Node argument = node.arguments.positional.first;
|
| - if (argument is ir.TypeLiteral && argument.type is ir.InterfaceType) {
|
| - InterfaceType type = astAdapter.getInterfaceType(argument.type);
|
| + InterfaceType type =
|
| + astAdapter.getInterfaceTypeForJsInterceptorCall(node);
|
| + if (type != null) {
|
| impactBuilder.registerTypeUse(new TypeUse.instantiation(type));
|
| }
|
| break;
|
| @@ -467,16 +461,16 @@ class KernelImpactBuilder extends ir.Visitor {
|
|
|
| @override
|
| void visitFunctionDeclaration(ir.FunctionDeclaration node) {
|
| - impactBuilder
|
| - .registerStaticUse(new StaticUse.closure(astAdapter.getElement(node)));
|
| + impactBuilder.registerStaticUse(
|
| + new StaticUse.closure(astAdapter.getLocalFunction(node)));
|
| handleSignature(node.function);
|
| visitNode(node.function.body);
|
| }
|
|
|
| @override
|
| void visitFunctionExpression(ir.FunctionExpression node) {
|
| - impactBuilder
|
| - .registerStaticUse(new StaticUse.closure(astAdapter.getElement(node)));
|
| + impactBuilder.registerStaticUse(
|
| + new StaticUse.closure(astAdapter.getLocalFunction(node)));
|
| handleSignature(node.function);
|
| visitNode(node.function.body);
|
| }
|
|
|