| 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
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6514e2172ffdef4e070f03a53535e00c9f2d7d46
|
| --- /dev/null
|
| +++ b/tests/compiler/dart2js/kernel/impact_test.dart
|
| @@ -0,0 +1,101 @@
|
| +// Copyright (c) 2016, 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.
|
| +
|
| +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/resolution.dart';
|
| +import 'package:compiler/src/compiler.dart';
|
| +import 'package:compiler/src/elements/elements.dart';
|
| +import 'package:compiler/src/ssa/kernel_impact.dart';
|
| +import 'package:compiler/src/serialization/equivalence.dart';
|
| +import '../memory_compiler.dart';
|
| +import '../serialization/test_helper.dart';
|
| +
|
| +const Map<String, String> SOURCE = const <String, String>{
|
| + 'main.dart': '''
|
| +main() {
|
| + testEmpty();
|
| + testNull();
|
| + testTrue();
|
| + testFalse();
|
| + testInt();
|
| + testDouble();
|
| + testString();
|
| + testSymbol();
|
| + testEmptyListLiteral();
|
| + testEmptyListLiteralDynamic();
|
| + testEmptyListLiteralTyped();
|
| + testEmptyListLiteralConstant();
|
| + testNonEmptyListLiteral();
|
| + testEmptyMapLiteral();
|
| + testEmptyMapLiteralDynamic();
|
| + testEmptyMapLiteralTyped();
|
| + testEmptyMapLiteralConstant();
|
| + testNonEmptyMapLiteral();
|
| + testNot();
|
| + testUnaryMinus();
|
| + testIfThen();
|
| + testIfThenElse();
|
| +}
|
| +
|
| +testEmpty() {}
|
| +testNull() => null;
|
| +testTrue() => true;
|
| +testFalse() => false;
|
| +testInt() => 42;
|
| +testDouble() => 37.5;
|
| +testString() => 'foo';
|
| +testSymbol() => #main;
|
| +testEmptyListLiteral() => [];
|
| +testEmptyListLiteralDynamic() => <dynamic>[];
|
| +testEmptyListLiteralTyped() => <String>[];
|
| +testEmptyListLiteralConstant() => const [];
|
| +testNonEmptyListLiteral() => [0];
|
| +testEmptyMapLiteral() => {};
|
| +testEmptyMapLiteralDynamic() => <dynamic, dynamic>{};
|
| +testEmptyMapLiteralTyped() => <String, int>{};
|
| +testEmptyMapLiteralConstant() => const {};
|
| +testNonEmptyMapLiteral() => {0: true};
|
| +testNot() => !false;
|
| +testUnaryMinus() => -1;
|
| +testIfThen() {
|
| + if (false) return 42;
|
| + return 1;
|
| +}
|
| +testIfThenElse() {
|
| + if (true) {
|
| + return 42;
|
| + } else {
|
| + return 1;
|
| + }
|
| +}
|
| +'''
|
| +};
|
| +
|
| +main(List<String> args) {
|
| + asyncTest(() async {
|
| + enableDebugMode();
|
| + Uri entryPoint = Uri.parse('memory:main.dart');
|
| + Compiler compiler = compilerFor(
|
| + entryPoint: entryPoint,
|
| + memorySourceFiles: SOURCE,
|
| + options: [Flags.analyzeOnly]);
|
| + compiler.resolution.retainCachesForTesting = true;
|
| + await compiler.run(entryPoint);
|
| + compiler.mainApp.forEachLocalMember(
|
| + (element) => checkElement(compiler, element));
|
| + });
|
| +}
|
| +
|
| +void checkElement(Compiler compiler, AstElement element) {
|
| + ResolutionImpact astImpact =
|
| + compiler.resolution.getResolutionImpact(element);
|
| + ResolutionImpact kernelImpact = build(compiler, element.resolvedAst);
|
| + testResolutionImpactEquivalence(astImpact, kernelImpact,
|
| + const CheckStrategy());
|
| +}
|
|
|