Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(450)

Side by Side Diff: pkg/front_end/test/incremental_resolved_ast_generator_test.dart

Issue 2665043003: Simplify the API for incremental_resolved_ast_generator. (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/front_end/lib/src/incremental_resolved_ast_generator_impl.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 6
7 import 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; 8 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
9 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
10 import 'package:analyzer/file_system/physical_file_system.dart'; 10 import 'package:analyzer/file_system/physical_file_system.dart';
(...skipping 26 matching lines...) Expand all
37 @reflectiveTest 37 @reflectiveTest
38 class IncrementalResolvedAstGeneratorTest { 38 class IncrementalResolvedAstGeneratorTest {
39 static final sdkSummaryUri = Uri.parse('special:sdk_summary'); 39 static final sdkSummaryUri = Uri.parse('special:sdk_summary');
40 40
41 /// Virtual filesystem for testing. 41 /// Virtual filesystem for testing.
42 final fileSystem = new MemoryFileSystem(pathos.posix, Uri.parse('file:///')); 42 final fileSystem = new MemoryFileSystem(pathos.posix, Uri.parse('file:///'));
43 43
44 /// The object under test. 44 /// The object under test.
45 IncrementalResolvedAstGenerator incrementalResolvedAstGenerator; 45 IncrementalResolvedAstGenerator incrementalResolvedAstGenerator;
46 46
47 Future<Map<Uri, ResolvedLibrary>> getInitialProgram(Uri startingUri) async { 47 Future<Map<Uri, Map<Uri, CompilationUnit>>> getInitialProgram(
48 Uri startingUri) async {
48 fileSystem.entityForUri(sdkSummaryUri).writeAsBytesSync(_sdkSummary); 49 fileSystem.entityForUri(sdkSummaryUri).writeAsBytesSync(_sdkSummary);
49 incrementalResolvedAstGenerator = new IncrementalResolvedAstGenerator( 50 incrementalResolvedAstGenerator = new IncrementalResolvedAstGenerator(
50 startingUri, 51 startingUri,
51 new CompilerOptions() 52 new CompilerOptions()
52 ..fileSystem = fileSystem 53 ..fileSystem = fileSystem
53 ..chaseDependencies = true 54 ..chaseDependencies = true
54 ..sdkSummary = sdkSummaryUri 55 ..sdkSummary = sdkSummaryUri
55 ..packagesFileUri = new Uri()); 56 ..packagesFileUri = new Uri());
56 return (await incrementalResolvedAstGenerator.computeDelta()).newState; 57 return (await incrementalResolvedAstGenerator.computeDelta()).newState;
57 } 58 }
58 59
59 test_incrementalUpdate_referenceToCore() async { 60 test_incrementalUpdate_referenceToCore() async {
60 writeFiles({'/foo.dart': 'main() { print(1); }'}); 61 writeFiles({'/foo.dart': 'main() { print(1); }'});
61 var fooUri = Uri.parse('file:///foo.dart'); 62 var fooUri = Uri.parse('file:///foo.dart');
62 var initialProgram = await getInitialProgram(fooUri); 63 var initialProgram = await getInitialProgram(fooUri);
63 expect(initialProgram.keys, unorderedEquals([fooUri])); 64 expect(initialProgram.keys, unorderedEquals([fooUri]));
64 65
65 void _checkMain(CompilationUnit unit, int expectedArgument) { 66 void _checkMain(CompilationUnit unit, int expectedArgument) {
66 var mainStatements = _getFunctionStatements(_getFunction(unit, 'main')); 67 var mainStatements = _getFunctionStatements(_getFunction(unit, 'main'));
67 expect(mainStatements, hasLength(1)); 68 expect(mainStatements, hasLength(1));
68 _checkPrintLiteralInt(mainStatements[0], expectedArgument); 69 _checkPrintLiteralInt(mainStatements[0], expectedArgument);
69 } 70 }
70 71
71 _checkMain(initialProgram[fooUri].definingCompilationUnit, 1); 72 _checkMain(initialProgram[fooUri][fooUri], 1);
72 writeFiles({'/foo.dart': 'main() { print(2); }'}); 73 writeFiles({'/foo.dart': 'main() { print(2); }'});
73 // Verify that the file isn't actually reread until invalidate is called. 74 // Verify that the file isn't actually reread until invalidate is called.
74 var deltaProgram1 = await incrementalResolvedAstGenerator.computeDelta(); 75 var deltaProgram1 = await incrementalResolvedAstGenerator.computeDelta();
75 // TODO(paulberry): since there is no delta, computeDelta should return an 76 // TODO(paulberry): since there is no delta, computeDelta should return an
76 // empty map. 77 // empty map.
77 // expect(deltaProgram1.newState, isEmpty); 78 // expect(deltaProgram1.newState, isEmpty);
78 expect(deltaProgram1.newState.keys, unorderedEquals([fooUri])); 79 expect(deltaProgram1.newState.keys, unorderedEquals([fooUri]));
79 _checkMain(deltaProgram1.newState[fooUri].definingCompilationUnit, 1); 80 _checkMain(deltaProgram1.newState[fooUri][fooUri], 1);
80 incrementalResolvedAstGenerator.invalidateAll(); 81 incrementalResolvedAstGenerator.invalidateAll();
81 var deltaProgram2 = await incrementalResolvedAstGenerator.computeDelta(); 82 var deltaProgram2 = await incrementalResolvedAstGenerator.computeDelta();
82 expect(deltaProgram2.newState.keys, unorderedEquals([fooUri])); 83 expect(deltaProgram2.newState.keys, unorderedEquals([fooUri]));
83 _checkMain(deltaProgram2.newState[fooUri].definingCompilationUnit, 2); 84 _checkMain(deltaProgram2.newState[fooUri][fooUri], 2);
84 } 85 }
85 86
86 test_invalidateAllBeforeInitialProgram() async { 87 test_invalidateAllBeforeInitialProgram() async {
87 incrementalResolvedAstGenerator = new IncrementalResolvedAstGenerator( 88 incrementalResolvedAstGenerator = new IncrementalResolvedAstGenerator(
88 Uri.parse('file:///foo.dart'), 89 Uri.parse('file:///foo.dart'),
89 new CompilerOptions() 90 new CompilerOptions()
90 ..fileSystem = fileSystem 91 ..fileSystem = fileSystem
91 ..chaseDependencies = true 92 ..chaseDependencies = true
92 ..packagesFileUri = new Uri()); 93 ..packagesFileUri = new Uri());
93 incrementalResolvedAstGenerator.invalidateAll(); 94 incrementalResolvedAstGenerator.invalidateAll();
94 } 95 }
95 96
96 test_part() async { 97 test_part() async {
97 writeFiles({ 98 writeFiles({
98 '/foo.dart': 'library foo; part "bar.dart"; main() { print(1); f(); }', 99 '/foo.dart': 'library foo; part "bar.dart"; main() { print(1); f(); }',
99 '/bar.dart': 'part of foo; f() { print(2); }' 100 '/bar.dart': 'part of foo; f() { print(2); }'
100 }); 101 });
101 var fooUri = Uri.parse('file:///foo.dart'); 102 var fooUri = Uri.parse('file:///foo.dart');
102 var barUri = Uri.parse('file:///bar.dart'); 103 var barUri = Uri.parse('file:///bar.dart');
103 var initialProgram = await getInitialProgram(fooUri); 104 var initialProgram = await getInitialProgram(fooUri);
104 expect(initialProgram.keys, unorderedEquals([fooUri])); 105 expect(initialProgram.keys, unorderedEquals([fooUri]));
105 expect(initialProgram[fooUri].partUnits.keys, unorderedEquals([barUri])); 106 expect(initialProgram[fooUri].keys, unorderedEquals([fooUri, barUri]));
106 var mainStatements = _getFunctionStatements( 107 var mainStatements = _getFunctionStatements(
107 _getFunction(initialProgram[fooUri].definingCompilationUnit, 'main')); 108 _getFunction(initialProgram[fooUri][fooUri], 'main'));
108 var fDeclaration = 109 var fDeclaration = _getFunction(initialProgram[fooUri][barUri], 'f');
109 _getFunction(initialProgram[fooUri].partUnits[barUri], 'f');
110 var fStatements = _getFunctionStatements(fDeclaration); 110 var fStatements = _getFunctionStatements(fDeclaration);
111 expect(mainStatements, hasLength(2)); 111 expect(mainStatements, hasLength(2));
112 _checkPrintLiteralInt(mainStatements[0], 1); 112 _checkPrintLiteralInt(mainStatements[0], 1);
113 _checkFunctionCall(mainStatements[1], 113 _checkFunctionCall(mainStatements[1],
114 resolutionMap.elementDeclaredByFunctionDeclaration(fDeclaration)); 114 resolutionMap.elementDeclaredByFunctionDeclaration(fDeclaration));
115 expect(fStatements, hasLength(1)); 115 expect(fStatements, hasLength(1));
116 _checkPrintLiteralInt(fStatements[0], 2); 116 _checkPrintLiteralInt(fStatements[0], 2);
117 // TODO(paulberry): now test incremental updates 117 // TODO(paulberry): now test incremental updates
118 } 118 }
119 119
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 } 164 }
165 throw fail('No function declaration found with name "$name"'); 165 throw fail('No function declaration found with name "$name"');
166 } 166 }
167 167
168 NodeList<Statement> _getFunctionStatements(FunctionDeclaration function) { 168 NodeList<Statement> _getFunctionStatements(FunctionDeclaration function) {
169 var body = function.functionExpression.body; 169 var body = function.functionExpression.body;
170 expect(body, new isInstanceOf<BlockFunctionBody>()); 170 expect(body, new isInstanceOf<BlockFunctionBody>());
171 return (body as BlockFunctionBody).block.statements; 171 return (body as BlockFunctionBody).block.statements;
172 } 172 }
173 } 173 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/incremental_resolved_ast_generator_impl.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698