| Index: tests/compiler/dart2js/kernel/impact_test.dart
|
| diff --git a/tests/compiler/dart2js/kernel/impact_test.dart b/tests/compiler/dart2js/kernel/impact_test.dart
|
| index 9581e13261f4de4cb00fb98ecd5ced5912845ffd..640a925c93324cd90efe3ee55ed79a838190a543 100644
|
| --- a/tests/compiler/dart2js/kernel/impact_test.dart
|
| +++ b/tests/compiler/dart2js/kernel/impact_test.dart
|
| @@ -6,18 +6,22 @@ library dart2js.kernel.impact_test;
|
|
|
| import 'dart:async';
|
| import 'package:async_helper/async_helper.dart';
|
| -import 'package:compiler/src/common.dart';
|
| import 'package:compiler/src/commandline_options.dart';
|
| +import 'package:compiler/src/common.dart';
|
| +import 'package:compiler/src/common/names.dart';
|
| import 'package:compiler/src/common/resolution.dart';
|
| import 'package:compiler/src/compiler.dart';
|
| import 'package:compiler/src/elements/elements.dart';
|
| +import 'package:compiler/src/resolution/registry.dart';
|
| import 'package:compiler/src/ssa/kernel_impact.dart';
|
| import 'package:compiler/src/serialization/equivalence.dart';
|
| +import 'package:compiler/src/universe/feature.dart';
|
| +import 'package:compiler/src/universe/use.dart';
|
| import '../memory_compiler.dart';
|
| import '../serialization/test_helper.dart';
|
|
|
| const Map<String, String> SOURCE = const <String, String>{
|
| - 'main.dart': '''
|
| + 'main.dart': r'''
|
| import 'helper.dart';
|
|
|
| main() {
|
| @@ -28,6 +32,9 @@ main() {
|
| testInt();
|
| testDouble();
|
| testString();
|
| + testStringInterpolation();
|
| + testStringInterpolationConst();
|
| + testStringJuxtaposition();
|
| testSymbol();
|
| testEmptyListLiteral();
|
| testEmptyListLiteralDynamic();
|
| @@ -56,6 +63,9 @@ main() {
|
| testDynamicGet(null);
|
| testDynamicSet(null);
|
| testLocalWithInitializer();
|
| + testLocalFunction();
|
| + testLocalFunctionInvoke();
|
| + testLocalFunctionGet();
|
| testInvokeIndex(null);
|
| testInvokeIndexSet(null);
|
| testAssert();
|
| @@ -73,6 +83,11 @@ testFalse() => false;
|
| testInt() => 42;
|
| testDouble() => 37.5;
|
| testString() => 'foo';
|
| +testStringInterpolation() => '${0}';
|
| +testStringInterpolationConst() {
|
| + const b = '${0}';
|
| +}
|
| +testStringJuxtaposition() => 'a' 'b';
|
| testSymbol() => #main;
|
| testEmptyListLiteral() => [];
|
| testEmptyListLiteralDynamic() => <dynamic>[];
|
| @@ -152,6 +167,17 @@ testDynamicSet(o) => o.foo = 42;
|
| testLocalWithInitializer() {
|
| var l = 42;
|
| }
|
| +testLocalFunction() {
|
| + localFunction() {}
|
| +}
|
| +testLocalFunctionInvoke() {
|
| + localFunction() {}
|
| + localFunction();
|
| +}
|
| +testLocalFunctionGet() {
|
| + localFunction() {}
|
| + localFunction;
|
| +}
|
| testInvokeIndex(o) => o[42];
|
| testInvokeIndexSet(o) => o[42] = null;
|
| testAssert() {
|
| @@ -213,7 +239,37 @@ void checkLibrary(Compiler compiler, LibraryElement library) {
|
|
|
| void checkElement(Compiler compiler, AstElement element) {
|
| ResolutionImpact astImpact = compiler.resolution.getResolutionImpact(element);
|
| + astImpact = laxImpact(element, astImpact);
|
| ResolutionImpact kernelImpact = build(compiler, element.resolvedAst);
|
| testResolutionImpactEquivalence(
|
| astImpact, kernelImpact, const CheckStrategy());
|
| }
|
| +
|
| +/// Lax the precision of [impact] to meet expectancy of the corresponding impact
|
| +/// generated from kernel.
|
| +ResolutionImpact laxImpact(AstElement element, ResolutionImpact impact) {
|
| + ResolutionWorldImpactBuilder builder =
|
| + new ResolutionWorldImpactBuilder('Lax impact of ${element}');
|
| + impact.staticUses.forEach(builder.registerStaticUse);
|
| + impact.dynamicUses.forEach(builder.registerDynamicUse);
|
| + impact.typeUses.forEach(builder.registerTypeUse);
|
| + impact.constantLiterals.forEach(builder.registerConstantLiteral);
|
| + impact.constSymbolNames.forEach(builder.registerConstSymbolName);
|
| + impact.listLiterals.forEach(builder.registerListLiteral);
|
| + impact.mapLiterals.forEach(builder.registerMapLiteral);
|
| + for (Feature feature in impact.features) {
|
| + builder.registerFeature(feature);
|
| + switch (feature) {
|
| + case Feature.STRING_INTERPOLATION:
|
| + case Feature.STRING_JUXTAPOSITION:
|
| + // These are both converted into a string concatenation in kernel so
|
| + // we cannot tell the diferrence.
|
| + builder.registerFeature(Feature.STRING_INTERPOLATION);
|
| + builder.registerFeature(Feature.STRING_JUXTAPOSITION);
|
| + break;
|
| + default:
|
| + }
|
| + }
|
| + impact.nativeData.forEach(builder.registerNativeData);
|
| + return builder;
|
| +}
|
|
|