| Index: pkg/front_end/test/incremental_kernel_generator_test.dart
|
| diff --git a/pkg/front_end/test/incremental_kernel_generator_test.dart b/pkg/front_end/test/incremental_kernel_generator_test.dart
|
| index f9e6846e87f8174a24082da3a5e2d39359066158..dab55579dfc9fa0dc58097edcc41cc1ecbb0acfa 100644
|
| --- a/pkg/front_end/test/incremental_kernel_generator_test.dart
|
| +++ b/pkg/front_end/test/incremental_kernel_generator_test.dart
|
| @@ -110,6 +110,101 @@ static method main() → dynamic {
|
| }
|
| }
|
|
|
| + test_updatePart() async {
|
| + writeFile('/test/.packages', 'test:lib/');
|
| + String libPath = '/test/lib/test.dart';
|
| + String partPath = '/test/lib/bar.dart';
|
| + Uri libUri = writeFile(
|
| + libPath,
|
| + r'''
|
| +library foo;
|
| +part 'bar.dart';
|
| +var a = 1;
|
| +var c = b;
|
| +void main() {}
|
| +''');
|
| + Uri partUri = writeFile(
|
| + partPath,
|
| + r'''
|
| +part of foo;
|
| +var b = 2;
|
| +var d = a;
|
| +''');
|
| +
|
| + // Check the initial state - types flow between the part and the library.
|
| + Program program = await getInitialState(libUri);
|
| + Library library = _getLibrary(program, libUri);
|
| + expect(
|
| + _getLibraryText(library),
|
| + r'''
|
| +library foo;
|
| +import self as self;
|
| +import "dart:core" as core;
|
| +
|
| +static field core::int a = 1;
|
| +static field core::int c = self::b;
|
| +static field core::int b = 2 /* from file:///test/lib/bar.dart */;
|
| +static field core::int d = self::a /* from file:///test/lib/bar.dart */;
|
| +static method main() → void {}
|
| +''');
|
| +
|
| + // Update [b] in the part, the type is changed in the part and library.
|
| + {
|
| + writeFile(
|
| + partPath,
|
| + r'''
|
| +part of foo;
|
| +var b = 2.3;
|
| +var d = a;
|
| +''');
|
| + incrementalKernelGenerator.invalidate(partUri);
|
| + DeltaProgram delta = await incrementalKernelGenerator.computeDelta();
|
| + Library library = _getLibrary(delta.newProgram, libUri);
|
| + expect(
|
| + _getLibraryText(library),
|
| + r'''
|
| +library foo;
|
| +import self as self;
|
| +import "dart:core" as core;
|
| +
|
| +static field core::int a = 1;
|
| +static field core::double c = self::b;
|
| +static field core::double b = 2.3 /* from file:///test/lib/bar.dart */;
|
| +static field core::int d = self::a /* from file:///test/lib/bar.dart */;
|
| +static method main() → void {}
|
| +''');
|
| + }
|
| +
|
| + // Update [a] in the library, the type is changed in the part and library.
|
| + {
|
| + writeFile(
|
| + libPath,
|
| + r'''
|
| +library foo;
|
| +part 'bar.dart';
|
| +var a = 'aaa';
|
| +var c = b;
|
| +void main() {}
|
| +''');
|
| + incrementalKernelGenerator.invalidate(libUri);
|
| + DeltaProgram delta = await incrementalKernelGenerator.computeDelta();
|
| + Library library = _getLibrary(delta.newProgram, libUri);
|
| + expect(
|
| + _getLibraryText(library),
|
| + r'''
|
| +library foo;
|
| +import self as self;
|
| +import "dart:core" as core;
|
| +
|
| +static field core::String a = "aaa";
|
| +static field core::double c = self::b;
|
| +static field core::double b = 2.3 /* from file:///test/lib/bar.dart */;
|
| +static field core::String d = self::a /* from file:///test/lib/bar.dart */;
|
| +static method main() → void {}
|
| +''');
|
| + }
|
| + }
|
| +
|
| /// Write the given [text] of the file with the given [path] into the
|
| /// virtual filesystem. Return the URI of the file.
|
| Uri writeFile(String path, String text) {
|
| @@ -118,27 +213,6 @@ static method main() → dynamic {
|
| return uri;
|
| }
|
|
|
| -// test_part() async {
|
| -// writeFiles({
|
| -// '/foo.dart': 'library foo; part "bar.dart"; main() { print(1); f(); }',
|
| -// '/bar.dart': 'part of foo; f() { print(2); }'
|
| -// });
|
| -// var fooUri = Uri.parse('file:///foo.dart');
|
| -// var initialState = await getInitialState(fooUri);
|
| -// expect(initialState.keys, unorderedEquals([fooUri]));
|
| -// var library = _getLibrary(initialState[fooUri], fooUri);
|
| -// var mainStatements =
|
| -// _getProcedureStatements(_getProcedure(library, 'main'));
|
| -// var fProcedure = _getProcedure(library, 'f');
|
| -// var fStatements = _getProcedureStatements(fProcedure);
|
| -// expect(mainStatements, hasLength(2));
|
| -// _checkPrintLiteralInt(mainStatements[0], 1);
|
| -// _checkFunctionCall(mainStatements[1], fProcedure);
|
| -// expect(fStatements, hasLength(1));
|
| -// _checkPrintLiteralInt(fStatements[0], 2);
|
| -// TODO(paulberry): now test incremental updates
|
| -// }
|
| -
|
| /// Write the given file contents to the virtual filesystem.
|
| void writeFiles(Map<String, String> contents) {
|
| contents.forEach(writeFile);
|
|
|