Skip to content

Commit 3dcaea5

Browse files
alexmarkovcommit-bot@chromium.org
authored andcommitted
[vm/aot/tfa] Update TFA unit tests to work with constants-update-2018
Normally, TFA runs after constant evaluation and it expects @pragma annotations in the evaluated form. In unit tests TFA runs after front-end and it was expecting @pragma annotations in the expression form. With constants-update-2018 front-end starts evaluating constants, so TFA unit tests should switch from ExpressionPragmaAnnotationParser to ConstantPragmaAnnotationParser. This CL does not update test expectations as flag is not flipped yet. Test expectations should be updated when flipping a flag using tools/test.py -m release --vm-options -DupdateExpectations=true pkg/vm Change-Id: I94ee2de9f70328ce3ed3ffd9902a92eeb26d3a29 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108840 Reviewed-by: Martin Kustermann <[email protected]> Reviewed-by: Vyacheslav Egorov <[email protected]> Reviewed-by: Samir Jindel <[email protected]> Commit-Queue: Alexander Markov <[email protected]>
1 parent e95b1f7 commit 3dcaea5

File tree

5 files changed

+29
-5
lines changed

5 files changed

+29
-5
lines changed

pkg/front_end/lib/src/api_unstable/vm.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ export '../api_prototype/compiler_options.dart'
88
export '../api_prototype/diagnostic_message.dart'
99
show DiagnosticMessage, DiagnosticMessageHandler, getMessageUri;
1010

11+
export '../api_prototype/experimental_flags.dart'
12+
show defaultExperimentalFlags, ExperimentalFlag;
13+
1114
export '../api_prototype/file_system.dart'
1215
show FileSystem, FileSystemEntity, FileSystemException;
1316

pkg/vm/lib/transformations/pragma.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,14 @@ class ConstantPragmaAnnotationParser extends PragmaAnnotationParser {
5050
if (annotation is ConstantExpression) {
5151
Constant constant = annotation.constant;
5252
if (constant is InstanceConstant) {
53-
if (constant.classReference.node == coreTypes.pragmaClass) {
53+
if (constant.classNode == coreTypes.pragmaClass) {
5454
pragmaConstant = constant;
5555
}
56+
} else if (constant is UnevaluatedConstant) {
57+
throw 'Error: unevaluated constant $constant';
5658
}
59+
} else {
60+
throw 'Error: non-constant annotation $annotation';
5761
}
5862
if (pragmaConstant == null) return null;
5963

pkg/vm/test/common_test_utils.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ Future<Component> compileTestCaseToKernelProgram(Uri sourceUri,
4141
final options = new CompilerOptions()
4242
..target = target
4343
..linkedDependencies = <Uri>[platformKernel]
44+
..environmentDefines = <String, String>{}
4445
..onDiagnostic = (DiagnosticMessage message) {
4546
fail("Compilation error: ${message.plainTextFormatted.join('\n')}");
4647
};

pkg/vm/test/transformations/type_flow/summary_collector_test.dart

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,19 @@
44

55
import 'dart:io';
66

7+
import 'package:front_end/src/api_unstable/vm.dart'
8+
show defaultExperimentalFlags, ExperimentalFlag;
79
import 'package:kernel/ast.dart';
810
import 'package:kernel/class_hierarchy.dart';
911
import 'package:kernel/core_types.dart';
1012
import 'package:kernel/type_environment.dart';
1113
import 'package:test/test.dart';
14+
import 'package:vm/transformations/pragma.dart'
15+
show ConstantPragmaAnnotationParser;
1216
import 'package:vm/transformations/type_flow/native_code.dart';
1317
import 'package:vm/transformations/type_flow/summary_collector.dart';
1418
import 'package:vm/transformations/type_flow/analysis.dart';
15-
import 'annotation_matcher.dart';
19+
import 'annotation_matcher.dart' show ExpressionPragmaAnnotationParser;
1620
import 'package:kernel/target/targets.dart';
1721

1822
import '../../common_test_utils.dart';
@@ -31,7 +35,10 @@ class PrintSummaries extends RecursiveVisitor<Null> {
3135
hierarchy,
3236
new EmptyEntryPointsListener(),
3337
new NativeCodeOracle(
34-
null, new ExpressionPragmaAnnotationParser(coreTypes)),
38+
null,
39+
defaultExperimentalFlags[ExperimentalFlag.constantUpdate2018]
40+
? new ConstantPragmaAnnotationParser(coreTypes)
41+
: new ExpressionPragmaAnnotationParser(coreTypes)),
3542
new GenericInterfacesInfoImpl(hierarchy));
3643

3744
String print(TreeNode node) {

pkg/vm/test/transformations/type_flow/transformer_test.dart

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,15 @@
44

55
import 'dart:io';
66

7+
import 'package:front_end/src/api_unstable/vm.dart'
8+
show defaultExperimentalFlags, ExperimentalFlag;
79
import 'package:kernel/target/targets.dart';
810
import 'package:kernel/ast.dart';
911
import 'package:kernel/core_types.dart';
1012
import 'package:kernel/kernel.dart';
1113
import 'package:test/test.dart';
14+
import 'package:vm/transformations/pragma.dart'
15+
show ConstantPragmaAnnotationParser;
1216
import 'package:vm/transformations/type_flow/transformer.dart'
1317
show transformComponent;
1418
import 'annotation_matcher.dart';
@@ -24,8 +28,13 @@ runTestCase(Uri source) async {
2428

2529
final coreTypes = new CoreTypes(component);
2630

27-
component = transformComponent(target, coreTypes, component,
28-
new ExpressionPragmaAnnotationParser(coreTypes));
31+
component = transformComponent(
32+
target,
33+
coreTypes,
34+
component,
35+
defaultExperimentalFlags[ExperimentalFlag.constantUpdate2018]
36+
? new ConstantPragmaAnnotationParser(coreTypes)
37+
: new ExpressionPragmaAnnotationParser(coreTypes));
2938

3039
final actual = kernelLibraryToString(component.mainMethod.enclosingLibrary);
3140

0 commit comments

Comments
 (0)