Remove CompileMode

Change-Id: I7622231c3c81152236d671324fa58816c540d5b4
Reviewed-on: https://dart-review.googlesource.com/53941
Reviewed-by: Sigmund Cherem <sigmund@google.com>
This commit is contained in:
Johnni Winther 2018-05-08 08:31:43 +00:00 committed by commit-bot@chromium.org
parent 27ae11e4d8
commit 8e885f4393
29 changed files with 86 additions and 121 deletions

View file

@ -89,17 +89,17 @@ main() {
// { a: true, }. Make sure this doesn't happen again.
RegExp danglingComma = new RegExp(r',[ \n]*}');
Future runTests(CompileMode compileMode) async {
Future runTests({bool useKernel}) async {
for (String test in [TEST_ONE, TEST_TWO, TEST_THREE, TEST_FOUR]) {
String generated = await compileAll(test, compileMode: compileMode);
String generated = await compileAll(test, useKernel: useKernel);
Expect.isFalse(danglingComma.hasMatch(generated));
}
}
asyncTest(() async {
print('--test from ast---------------------------------------------------');
await runTests(CompileMode.memory);
await runTests(useKernel: false);
print('--test from kernel------------------------------------------------');
await runTests(CompileMode.kernel);
await runTests(useKernel: true);
});
}

View file

@ -63,45 +63,45 @@ main() {
}
""";
twoClasses(CompileMode compileMode) async {
String generated = await compileAll(TEST_ONE, compileMode: compileMode);
twoClasses({bool useKernel}) async {
String generated = await compileAll(TEST_ONE, useKernel: useKernel);
Expect.isTrue(generated.contains(new RegExp('A: {[ \n]*"\\^": "Object;"')));
Expect.isTrue(generated.contains(new RegExp('B: {[ \n]*"\\^": "Object;"')));
}
subClass(CompileMode compileMode) async {
subClass({bool useKernel}) async {
checkOutput(String generated) {
Expect.isTrue(generated.contains(new RegExp('A: {[ \n]*"\\^": "Object;"')));
Expect.isTrue(generated.contains(new RegExp('B: {[ \n]*"\\^": "A;"')));
}
checkOutput(await compileAll(TEST_TWO, compileMode: compileMode));
checkOutput(await compileAll(TEST_THREE, compileMode: compileMode));
checkOutput(await compileAll(TEST_TWO, useKernel: useKernel));
checkOutput(await compileAll(TEST_THREE, useKernel: useKernel));
}
fieldTest(CompileMode compileMode) async {
String generated = await compileAll(TEST_FOUR, compileMode: compileMode);
fieldTest({bool useKernel}) async {
String generated = await compileAll(TEST_FOUR, useKernel: useKernel);
Expect.isTrue(generated
.contains(new RegExp('B: {[ \n]*"\\^": "A;y,z,x",[ \n]*static:')));
}
constructor1(CompileMode compileMode) async {
String generated = await compileAll(TEST_FIVE, compileMode: compileMode);
constructor1({bool useKernel}) async {
String generated = await compileAll(TEST_FIVE, useKernel: useKernel);
Expect.isTrue(generated.contains(new RegExp(r"new [$A-Z]+\.A\(a\);")));
}
main() {
runTests(CompileMode compileMode) async {
await twoClasses(compileMode);
await subClass(compileMode);
await fieldTest(compileMode);
await constructor1(compileMode);
runTests({bool useKernel}) async {
await twoClasses(useKernel: useKernel);
await subClass(useKernel: useKernel);
await fieldTest(useKernel: useKernel);
await constructor1(useKernel: useKernel);
}
asyncTest(() async {
print('--test from ast---------------------------------------------------');
await runTests(CompileMode.memory);
await runTests(useKernel: false);
print('--test from kernel------------------------------------------------');
await runTests(CompileMode.kernel);
await runTests(useKernel: true);
});
}

View file

@ -36,18 +36,18 @@ main() {
// we just verify that their members are in the correct order.
RegExp regexp = new RegExp(r"foo\$0?:(.|\n)*bar\$0:(.|\n)*gee\$0:");
runTests(CompileMode compileMode) async {
String generated1 = await compileAll(TEST_ONE, compileMode: compileMode);
runTests({bool useKernel}) async {
String generated1 = await compileAll(TEST_ONE, useKernel: useKernel);
Expect.isTrue(regexp.hasMatch(generated1));
String generated2 = await compileAll(TEST_TWO, compileMode: compileMode);
String generated2 = await compileAll(TEST_TWO, useKernel: useKernel);
Expect.isTrue(regexp.hasMatch(generated2));
}
asyncTest(() async {
print('--test from ast---------------------------------------------------');
await runTests(CompileMode.memory);
await runTests(useKernel: false);
print('--test from kernel------------------------------------------------');
await runTests(CompileMode.kernel);
await runTests(useKernel: true);
});
}

View file

@ -58,10 +58,9 @@ Future closureInvocation({bool useKernel, bool minify, String prefix}) async {
// Make sure that the bailout version does not introduce a second version of
// the closure.
Future closureBailout(CompileMode compileMode,
{bool minify, String prefix}) async {
Future closureBailout({bool useKernel, bool minify, String prefix}) async {
String generated =
await compileAll(TEST_BAILOUT, compileMode: compileMode, minify: minify);
await compileAll(TEST_BAILOUT, useKernel: useKernel, minify: minify);
RegExp regexp = new RegExp("$prefix\\\$0:${minify ? "" : " "}function");
Iterator<Match> matches = regexp.allMatches(generated).iterator;
checkNumberOfMatches(matches, 1);
@ -72,10 +71,8 @@ main() {
await closureInvocation(
useKernel: useKernel, minify: false, prefix: "call");
await closureInvocation(useKernel: useKernel, minify: true, prefix: "");
CompileMode compileMode =
useKernel ? CompileMode.kernel : CompileMode.memory;
await closureBailout(compileMode, minify: false, prefix: "call");
await closureBailout(compileMode, minify: true, prefix: "");
await closureBailout(useKernel: useKernel, minify: false, prefix: "call");
await closureBailout(useKernel: useKernel, minify: true, prefix: "");
}
asyncTest(() async {

View file

@ -18,8 +18,7 @@ foo(a) {
main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST, useKernel: useKernel);
Expect.isFalse(generated.contains('return 42'), 'dead code not eliminated');
}

View file

@ -39,9 +39,7 @@ main() {
main() {
runTests({bool useKernel}) async {
CompileMode compileMode =
useKernel ? CompileMode.kernel : CompileMode.memory;
String generated1 = await compileAll(TEST1, compileMode: compileMode);
String generated1 = await compileAll(TEST1, useKernel: useKernel);
// Direct call through field.
Expect.isTrue(generated1.contains(r'this._fun.call$1(zzz)'));
// No stub.
@ -49,7 +47,7 @@ main() {
// No call to stub.
Expect.isFalse(generated1.contains(r'_fun$1('));
String generated2 = await compileAll(TEST2, compileMode: compileMode);
String generated2 = await compileAll(TEST2, useKernel: useKernel);
// No call through field.
Expect.isFalse(generated2.contains(r'this._fun.call$1(zzz)'));
// Call through stub.

View file

@ -20,8 +20,7 @@ main() {
main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST_GUIDE,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST_GUIDE, useKernel: useKernel);
Expect.isTrue(generated.contains("42"));
Expect.isFalse(generated.contains("TITLE"));
}

View file

@ -21,13 +21,10 @@ main() { return x; }
main() {
runTests({bool useKernel}) async {
CompileMode compileMode =
useKernel ? CompileMode.kernel : CompileMode.memory;
String generated1 = await compileAll(TEST_NULL0, compileMode: compileMode);
String generated1 = await compileAll(TEST_NULL0, useKernel: useKernel);
Expect.isTrue(generated1.contains("null"));
String generated2 = await compileAll(TEST_NULL1, compileMode: compileMode);
String generated2 = await compileAll(TEST_NULL1, useKernel: useKernel);
Expect.isTrue(generated2.contains("null"));
}

View file

@ -91,9 +91,8 @@ main() {
runTests({bool useKernel}) async {
test(String code, Function f) async {
String generated = await compileAll(code,
disableInlining: true,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated =
await compileAll(code, disableInlining: true, useKernel: useKernel);
Expect.isTrue(f(generated));
}

View file

@ -41,21 +41,18 @@ main() {
main() {
runTests({bool useKernel}) async {
CompileMode compileMode =
useKernel ? CompileMode.kernel : CompileMode.memory;
String generated1 =
await compileAll(SHOULD_NOT_BE_BOXED_TEST, compileMode: compileMode);
await compileAll(SHOULD_NOT_BE_BOXED_TEST, useKernel: useKernel);
Expect.isTrue(generated1.contains('main_closure(i)'),
'for-loop variable should not have been boxed');
String generated2 =
await compileAll(SHOULD_BE_BOXED_TEST, compileMode: compileMode);
await compileAll(SHOULD_BE_BOXED_TEST, useKernel: useKernel);
Expect.isFalse(generated2.contains('main_closure(i)'),
'for-loop variable should have been boxed');
String generated3 =
await compileAll(ONLY_UPDATE_LOOP_VAR_TEST, compileMode: compileMode);
await compileAll(ONLY_UPDATE_LOOP_VAR_TEST, useKernel: useKernel);
Expect.isFalse(generated3.contains('main_closure(i)'),
'for-loop variable should have been boxed');
Expect.isFalse(generated3.contains(', _box_0.b = 3,'),

View file

@ -127,20 +127,17 @@ main() {
checkNumberOfMatches(new RegExp("shr").allMatches(generated).iterator, 1);
});
CompileMode compileMode =
useKernel ? CompileMode.kernel : CompileMode.memory;
await compileAll(TEST_FIVE, compileMode: compileMode).then((generated) {
await compileAll(TEST_FIVE, useKernel: useKernel).then((generated) {
checkNumberOfMatches(
new RegExp("get\\\$foo").allMatches(generated).iterator, 1);
});
await compileAll(TEST_SIX, compileMode: compileMode).then((generated) {
await compileAll(TEST_SIX, useKernel: useKernel).then((generated) {
Expect.isTrue(generated.contains('for (t1 = a.field === 54; t1;)'));
});
await compileAll(TEST_SEVEN, compileMode: compileMode).then((generated) {
await compileAll(TEST_SEVEN, useKernel: useKernel).then((generated) {
Expect.isTrue(generated.contains('for (t1 = a.field === 54; t1;)'));
});
await compileAll(TEST_EIGHT, compileMode: compileMode).then((generated) {
await compileAll(TEST_EIGHT, useKernel: useKernel).then((generated) {
Expect.isTrue(generated.contains('for (; i < t1; ++i)'));
});
}

View file

@ -24,8 +24,7 @@ main() {
main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST1,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST1, useKernel: useKernel);
// Check that we're using the index operator on the object returned
// by the A factory.
Expect.isTrue(generated.contains('[0] = 42'));

View file

@ -90,7 +90,7 @@ main() {
""";
checkRangeError(String test, {bool hasRangeError}) async {
String generated = await compileAll(test, compileMode: CompileMode.memory);
String generated = await compileAll(test, useKernel: false);
Expect.equals(
hasRangeError,
generated.contains('ioore'),

View file

@ -69,29 +69,24 @@ main() {
}
main() {
asyncTest(() async {
String generated1 =
await compileAll(TEST1, compileMode: CompileMode.memory);
runTests({bool useKernel}) async {
bool useKernel = false;
String generated1 = await compileAll(TEST1, useKernel: useKernel);
Expect.isTrue(generated1.contains('if (typeof t1'));
String generated2 =
await compileAll(TEST2, compileMode: CompileMode.memory);
String generated2 = await compileAll(TEST2, useKernel: useKernel);
Expect.isTrue(generated2.contains('if (typeof t1'));
String generated3 =
await compileAll(TEST3, compileMode: CompileMode.memory);
String generated3 = await compileAll(TEST3, useKernel: useKernel);
Expect.isTrue(generated3.contains('if (typeof t1'));
String generated4 =
await compileAll(TEST4, compileMode: CompileMode.memory);
String generated4 = await compileAll(TEST4, useKernel: useKernel);
Expect.isTrue(generated4.contains('if (typeof t1'));
String generated5 =
await compileAll(TEST5, compileMode: CompileMode.memory);
String generated5 = await compileAll(TEST5, useKernel: useKernel);
Expect.isFalse(generated5.contains('iae'));
String generated6 =
await compileAll(TEST6, compileMode: CompileMode.memory);
String generated6 = await compileAll(TEST6, useKernel: useKernel);
Expect.isFalse(generated6.contains('iae'));
var memberInvocations = const <String>[
@ -105,9 +100,7 @@ main() {
];
for (String member in memberInvocations) {
String generated = await compileAll(generateTest('$member'),
expectedErrors: 0,
expectedWarnings: 0,
compileMode: CompileMode.memory);
expectedErrors: 0, expectedWarnings: 0, useKernel: useKernel);
Expect.isTrue(
generated.contains('+ 42'),
"Missing '+ 42' code for invocation '$member':\n"
@ -123,5 +116,12 @@ main() {
"Unexpected 'if (t1 == null)' code for invocation '$member':\n"
"$generated");*/
}
}
asyncTest(() async {
print('--test from ast---------------------------------------------------');
await runTests(useKernel: false);
print('--test from kernel------------------------------------------------');
await runTests(useKernel: true);
});
}

View file

@ -236,9 +236,8 @@ void main() {
main() {
runTests({bool useKernel}) async {
test(String code, String expected) async {
String generated = await compileAll(code,
disableInlining: false,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated =
await compileAll(code, disableInlining: false, useKernel: useKernel);
Expect.isTrue(
generated.contains(expected),
"Generated code didn't contain '$expected'.\n"

View file

@ -19,8 +19,7 @@ main() {
main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST, useKernel: useKernel);
Expect.isTrue(generated
.contains(new RegExp('A: {[ \n]*"\\^": "Object;",[ \n]*static:')));

View file

@ -23,8 +23,7 @@ main() {
main() {
runTest({bool useKernel}) async {
String generated = await compileAll(CODE,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(CODE, useKernel: useKernel);
RegExp regexp = new RegExp(r'A\$0: function');
Iterator<Match> matches = regexp.allMatches(generated).iterator;
checkNumberOfMatches(matches, 1);

View file

@ -17,8 +17,7 @@ main() {
main() {
runTest({bool useKernel}) async {
String generated = await compileAll(CODE,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(CODE, useKernel: useKernel);
RegExp regexp = new RegExp(r'\A: {[ \n]*"\^": "[A-Za-z]+;"');
Iterator<Match> matches = regexp.allMatches(generated).iterator;
checkNumberOfMatches(matches, 1);

View file

@ -30,8 +30,7 @@ baz(a) {
main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST, useKernel: useKernel);
RegExp regexp = new RegExp('foo\\\$1\\\$a: function');
Iterator<Match> matches = regexp.allMatches(generated).iterator;
checkNumberOfMatches(matches, 1);

View file

@ -18,8 +18,7 @@ main() {
main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST1,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST1, useKernel: useKernel);
Expect.isFalse(generated.contains('foo.length'));
}

View file

@ -24,8 +24,7 @@ main() {
void main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST, useKernel: useKernel);
Expect.isTrue(generated.contains('return c + c;'),
"Expected generated code to contain 'return c + c;':\n$generated");
}

View file

@ -51,8 +51,7 @@ main() {
void main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST, useKernel: useKernel);
if (generated.contains(r'=== true')) {
print(generated);
Expect.fail("missing elision of '=== true'");

View file

@ -10,8 +10,8 @@ import '../compiler_helper.dart';
main() {
runTest({bool useKernel}) async {
String code = await compileAll(r'''main() { print(main); }''',
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String code =
await compileAll(r'''main() { print(main); }''', useKernel: useKernel);
// At some point, we will have to closurize global functions
// differently, at which point this test will break. Then it is time
// to implement a way to call a Dart closure from JS foreign

View file

@ -9,7 +9,7 @@ import '../compiler_helper.dart';
main() {
runTest({bool useKernel}) async {
String code = await compileAll(r'''main() { return "foo" + "bar"; }''',
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
useKernel: useKernel);
Expect.isTrue(!code.contains(r'$add'));
}

View file

@ -8,17 +8,14 @@ import '../compiler_helper.dart';
main() {
runTests({bool useKernel}) async {
CompileMode compileMode =
useKernel ? CompileMode.kernel : CompileMode.memory;
String code1 = await compileAll(
r'''main() { return "${2}${true}${'a'}${3.14}"; }''',
compileMode: compileMode);
useKernel: useKernel);
Expect.isTrue(code1.contains(r'2truea3.14'));
String code2 = await compileAll(
r'''main() { return "foo ${new Object()}"; }''',
compileMode: compileMode);
useKernel: useKernel);
Expect.isFalse(code2.contains(r'$add'));
}

View file

@ -27,8 +27,7 @@ use(x) {
main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST_ONE,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST_ONE, useKernel: useKernel);
Expect.isFalse(generated.contains('Tarantula!'), "failed to remove 'foo'");
Expect.isTrue(generated.contains('Coelacanth!'));
}

View file

@ -27,8 +27,7 @@ main() {
void main() {
runTest({bool useKernel}) async {
String generated = await compileAll(TEST,
compileMode: useKernel ? CompileMode.kernel : CompileMode.memory);
String generated = await compileAll(TEST, useKernel: useKernel);
Expect.isTrue(generated.contains('return 42'));
Expect.isTrue(generated.contains('return 54'));
Expect.isFalse(generated.contains('return 68'));

View file

@ -36,20 +36,17 @@ main() {
main() {
runTests({bool useKernel}) async {
CompileMode compileMode =
useKernel ? CompileMode.kernel : CompileMode.memory;
// Test that we know the type of captured, non-mutated variables.
String generated1 = await compileAll(TEST1, compileMode: compileMode);
String generated1 = await compileAll(TEST1, useKernel: useKernel);
Expect.isTrue(generated1.contains('+ 87'));
// Test that we know the type of captured, mutated variables.
String generated2 = await compileAll(TEST2, compileMode: compileMode);
String generated2 = await compileAll(TEST2, useKernel: useKernel);
Expect.isTrue(generated2.contains('+ 87'));
// Test that we know when types of a captured, mutated variable
// conflict.
String generated3 = await compileAll(TEST3, compileMode: compileMode);
String generated3 = await compileAll(TEST3, useKernel: useKernel);
Expect.isFalse(generated3.contains('+ 87'));
}

View file

@ -39,8 +39,6 @@ import 'memory_compiler.dart';
import 'output_collector.dart';
export 'output_collector.dart';
enum CompileMode { memory, kernel }
/// Compile [code] and returns either the code for [methodName] or, if
/// [returnAll] is true, the code for the entire program.
///
@ -112,11 +110,12 @@ Future<String> compileAll(String code,
bool minify: false,
int expectedErrors,
int expectedWarnings,
CompileMode compileMode: CompileMode.memory}) async {
bool useKernel: false}) async {
OutputCollector outputCollector = new OutputCollector();
DiagnosticCollector diagnosticCollector = new DiagnosticCollector();
if (coreSource != null) {
throw new UnsupportedError('coreSource is not supported for $compileMode');
throw new UnsupportedError(
'coreSource is not supported for useKernel=$useKernel');
}
List<String> options = <String>[];
if (disableInlining) {
@ -128,8 +127,8 @@ Future<String> compileAll(String code,
if (minify) {
options.add(Flags.minify);
}
if (compileMode == CompileMode.kernel) {
options.add(Flags.useKernel);
if (!useKernel) {
options.add(Flags.useOldFrontend);
}
CompilationResult result = await runCompiler(
memorySourceFiles: {'main.dart': code},