| Index: pkg/front_end/test/incremental_resolved_ast_generator_test.dart
|
| diff --git a/pkg/front_end/test/incremental_resolved_ast_generator_test.dart b/pkg/front_end/test/incremental_resolved_ast_generator_test.dart
|
| deleted file mode 100644
|
| index 5a8682d443d7050a3b62c721ed42829834d7843c..0000000000000000000000000000000000000000
|
| --- a/pkg/front_end/test/incremental_resolved_ast_generator_test.dart
|
| +++ /dev/null
|
| @@ -1,172 +0,0 @@
|
| -// Copyright (c) 2017, 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.
|
| -
|
| -import 'dart:async';
|
| -
|
| -import 'package:analyzer/dart/ast/ast.dart';
|
| -import 'package:analyzer/dart/ast/standard_resolution_map.dart';
|
| -import 'package:analyzer/dart/element/element.dart';
|
| -import 'package:analyzer/file_system/physical_file_system.dart';
|
| -import 'package:analyzer/src/dart/sdk/sdk.dart';
|
| -import 'package:front_end/compiler_options.dart';
|
| -import 'package:front_end/incremental_resolved_ast_generator.dart';
|
| -import 'package:front_end/memory_file_system.dart';
|
| -import 'package:test/test.dart';
|
| -import 'package:test_reflective_loader/test_reflective_loader.dart';
|
| -
|
| -main() {
|
| - defineReflectiveSuite(() {
|
| - defineReflectiveTests(IncrementalResolvedAstGeneratorTest);
|
| - });
|
| -}
|
| -
|
| -final _sdkSummary = _readSdkSummary();
|
| -
|
| -List<int> _readSdkSummary() {
|
| - var resourceProvider = PhysicalResourceProvider.INSTANCE;
|
| - var sdk = new FolderBasedDartSdk(resourceProvider,
|
| - FolderBasedDartSdk.defaultSdkDirectory(resourceProvider))
|
| - ..useSummary = true;
|
| - var path = resourceProvider.pathContext
|
| - .join(sdk.directory.path, 'lib', '_internal', 'strong.sum');
|
| - return resourceProvider.getFile(path).readAsBytesSync();
|
| -}
|
| -
|
| -@reflectiveTest
|
| -class IncrementalResolvedAstGeneratorTest {
|
| - static final sdkSummaryUri = Uri.parse('special:sdk_summary');
|
| -
|
| - /// Virtual filesystem for testing.
|
| - final fileSystem = new MemoryFileSystem(Uri.parse('file:///'));
|
| -
|
| - /// The object under test.
|
| - IncrementalResolvedAstGenerator incrementalResolvedAstGenerator;
|
| -
|
| - Future<Map<Uri, Map<Uri, CompilationUnit>>> getInitialProgram(
|
| - Uri startingUri) async {
|
| - fileSystem.entityForUri(sdkSummaryUri).writeAsBytesSync(_sdkSummary);
|
| - incrementalResolvedAstGenerator = new IncrementalResolvedAstGenerator(
|
| - startingUri,
|
| - new CompilerOptions()
|
| - ..fileSystem = fileSystem
|
| - ..chaseDependencies = true
|
| - ..sdkSummary = sdkSummaryUri
|
| - ..packagesFileUri = new Uri());
|
| - return (await incrementalResolvedAstGenerator.computeDelta()).newState;
|
| - }
|
| -
|
| - test_incrementalUpdate_referenceToCore() async {
|
| - writeFiles({'/foo.dart': 'main() { print(1); }'});
|
| - var fooUri = Uri.parse('file:///foo.dart');
|
| - var initialProgram = await getInitialProgram(fooUri);
|
| - expect(initialProgram.keys, unorderedEquals([fooUri]));
|
| -
|
| - void _checkMain(CompilationUnit unit, int expectedArgument) {
|
| - var mainStatements = _getFunctionStatements(_getFunction(unit, 'main'));
|
| - expect(mainStatements, hasLength(1));
|
| - _checkPrintLiteralInt(mainStatements[0], expectedArgument);
|
| - }
|
| -
|
| - _checkMain(initialProgram[fooUri][fooUri], 1);
|
| - writeFiles({'/foo.dart': 'main() { print(2); }'});
|
| - // Verify that the file isn't actually reread until invalidate is called.
|
| - var deltaProgram1 = await incrementalResolvedAstGenerator.computeDelta();
|
| - // TODO(paulberry): since there is no delta, computeDelta should return an
|
| - // empty map.
|
| - // expect(deltaProgram1.newState, isEmpty);
|
| - expect(deltaProgram1.newState.keys, unorderedEquals([fooUri]));
|
| - _checkMain(deltaProgram1.newState[fooUri][fooUri], 1);
|
| - incrementalResolvedAstGenerator.invalidateAll();
|
| - var deltaProgram2 = await incrementalResolvedAstGenerator.computeDelta();
|
| - expect(deltaProgram2.newState.keys, unorderedEquals([fooUri]));
|
| - _checkMain(deltaProgram2.newState[fooUri][fooUri], 2);
|
| - }
|
| -
|
| - test_invalidateAllBeforeInitialProgram() async {
|
| - incrementalResolvedAstGenerator = new IncrementalResolvedAstGenerator(
|
| - Uri.parse('file:///foo.dart'),
|
| - new CompilerOptions()
|
| - ..fileSystem = fileSystem
|
| - ..chaseDependencies = true
|
| - ..packagesFileUri = new Uri());
|
| - incrementalResolvedAstGenerator.invalidateAll();
|
| - }
|
| -
|
| - 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 barUri = Uri.parse('file:///bar.dart');
|
| - var initialProgram = await getInitialProgram(fooUri);
|
| - expect(initialProgram.keys, unorderedEquals([fooUri]));
|
| - expect(initialProgram[fooUri].keys, unorderedEquals([fooUri, barUri]));
|
| - var mainStatements = _getFunctionStatements(
|
| - _getFunction(initialProgram[fooUri][fooUri], 'main'));
|
| - var fDeclaration = _getFunction(initialProgram[fooUri][barUri], 'f');
|
| - var fStatements = _getFunctionStatements(fDeclaration);
|
| - expect(mainStatements, hasLength(2));
|
| - _checkPrintLiteralInt(mainStatements[0], 1);
|
| - _checkFunctionCall(mainStatements[1],
|
| - resolutionMap.elementDeclaredByFunctionDeclaration(fDeclaration));
|
| - 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((path, text) {
|
| - fileSystem
|
| - .entityForUri(Uri.parse('file://$path'))
|
| - .writeAsStringSync(text);
|
| - });
|
| - }
|
| -
|
| - void _checkFunctionCall(Statement statement, Element expectedTarget) {
|
| - expect(statement, new isInstanceOf<ExpressionStatement>());
|
| - var expressionStatement = statement as ExpressionStatement;
|
| - expect(
|
| - expressionStatement.expression, new isInstanceOf<MethodInvocation>());
|
| - var methodInvocation = expressionStatement.expression as MethodInvocation;
|
| - expect(
|
| - resolutionMap.staticElementForIdentifier(methodInvocation.methodName),
|
| - expectedTarget);
|
| - }
|
| -
|
| - void _checkPrintLiteralInt(Statement statement, int expectedArgument) {
|
| - expect(statement, new isInstanceOf<ExpressionStatement>());
|
| - var expressionStatement = statement as ExpressionStatement;
|
| - expect(
|
| - expressionStatement.expression, new isInstanceOf<MethodInvocation>());
|
| - var methodInvocation = expressionStatement.expression as MethodInvocation;
|
| - expect(methodInvocation.methodName.name, 'print');
|
| - var printElement =
|
| - resolutionMap.staticElementForIdentifier(methodInvocation.methodName);
|
| - expect(printElement, isNotNull);
|
| - expect(printElement.library.source.uri, Uri.parse('dart:core'));
|
| - expect(methodInvocation.argumentList.arguments, hasLength(1));
|
| - expect(methodInvocation.argumentList.arguments[0],
|
| - new isInstanceOf<IntegerLiteral>());
|
| - var integerLiteral =
|
| - methodInvocation.argumentList.arguments[0] as IntegerLiteral;
|
| - expect(integerLiteral.value, expectedArgument);
|
| - }
|
| -
|
| - FunctionDeclaration _getFunction(CompilationUnit unit, String name) {
|
| - for (var declaration in unit.declarations) {
|
| - if (declaration is FunctionDeclaration && declaration.name.name == name) {
|
| - return declaration;
|
| - }
|
| - }
|
| - throw fail('No function declaration found with name "$name"');
|
| - }
|
| -
|
| - NodeList<Statement> _getFunctionStatements(FunctionDeclaration function) {
|
| - var body = function.functionExpression.body;
|
| - expect(body, new isInstanceOf<BlockFunctionBody>());
|
| - return (body as BlockFunctionBody).block.statements;
|
| - }
|
| -}
|
|
|