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

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

Issue 2975253002: Format analyzer, analysis_server, analyzer_plugin, front_end and kernel with the latest dartfmt. (Closed)
Patch Set: Created 3 years, 5 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
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:front_end/compiler_options.dart'; 7 import 'package:front_end/compiler_options.dart';
8 import 'package:front_end/incremental_kernel_generator.dart'; 8 import 'package:front_end/incremental_kernel_generator.dart';
9 import 'package:front_end/memory_file_system.dart'; 9 import 'package:front_end/memory_file_system.dart';
10 import 'package:front_end/src/incremental/byte_store.dart'; 10 import 'package:front_end/src/incremental/byte_store.dart';
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 .newInstance(compilerOptions, entryPoint, watch: watchFn); 52 .newInstance(compilerOptions, entryPoint, watch: watchFn);
53 return (await incrementalKernelGenerator.computeDelta()).newProgram; 53 return (await incrementalKernelGenerator.computeDelta()).newProgram;
54 } 54 }
55 55
56 test_compile_chain() async { 56 test_compile_chain() async {
57 writeFile('/test/.packages', 'test:lib/'); 57 writeFile('/test/.packages', 'test:lib/');
58 String aPath = '/test/lib/a.dart'; 58 String aPath = '/test/lib/a.dart';
59 String bPath = '/test/lib/b.dart'; 59 String bPath = '/test/lib/b.dart';
60 String cPath = '/test/lib/c.dart'; 60 String cPath = '/test/lib/c.dart';
61 Uri aUri = writeFile(aPath, 'var a = 1;'); 61 Uri aUri = writeFile(aPath, 'var a = 1;');
62 Uri bUri = writeFile( 62 Uri bUri = writeFile(bPath, r'''
63 bPath,
64 r'''
65 import 'a.dart'; 63 import 'a.dart';
66 var b = a; 64 var b = a;
67 '''); 65 ''');
68 Uri cUri = writeFile( 66 Uri cUri = writeFile(cPath, r'''
69 cPath,
70 r'''
71 import 'a.dart'; 67 import 'a.dart';
72 import 'b.dart'; 68 import 'b.dart';
73 var c1 = a; 69 var c1 = a;
74 var c2 = b; 70 var c2 = b;
75 void main() {} 71 void main() {}
76 '''); 72 ''');
77 73
78 { 74 {
79 Program program = await getInitialState(cUri); 75 Program program = await getInitialState(cUri);
80 _assertLibraryUris(program, 76 _assertLibraryUris(program,
81 includes: [aUri, bUri, cUri, Uri.parse('dart:core')]); 77 includes: [aUri, bUri, cUri, Uri.parse('dart:core')]);
82 Library library = _getLibrary(program, cUri); 78 Library library = _getLibrary(program, cUri);
83 expect( 79 expect(_getLibraryText(library), r'''
84 _getLibraryText(library),
85 r'''
86 library; 80 library;
87 import self as self; 81 import self as self;
88 import "dart:core" as core; 82 import "dart:core" as core;
89 import "./a.dart" as a; 83 import "./a.dart" as a;
90 import "./b.dart" as b; 84 import "./b.dart" as b;
91 85
92 static field core::int c1 = a::a; 86 static field core::int c1 = a::a;
93 static field core::int c2 = b::b; 87 static field core::int c2 = b::b;
94 static method main() → void {} 88 static method main() → void {}
95 '''); 89 ''');
96 // The main method is set. 90 // The main method is set.
97 expect(program.mainMethod, isNotNull); 91 expect(program.mainMethod, isNotNull);
98 expect(program.mainMethod.enclosingLibrary.fileUri, cUri.toString()); 92 expect(program.mainMethod.enclosingLibrary.fileUri, cUri.toString());
99 } 93 }
100 94
101 // Update b.dart and recompile c.dart 95 // Update b.dart and recompile c.dart
102 writeFile( 96 writeFile(bPath, r'''
103 bPath,
104 r'''
105 import 'a.dart'; 97 import 'a.dart';
106 var b = 1.2; 98 var b = 1.2;
107 '''); 99 ''');
108 incrementalKernelGenerator.invalidate(bUri); 100 incrementalKernelGenerator.invalidate(bUri);
109 { 101 {
110 DeltaProgram delta = await incrementalKernelGenerator.computeDelta(); 102 DeltaProgram delta = await incrementalKernelGenerator.computeDelta();
111 Program program = delta.newProgram; 103 Program program = delta.newProgram;
112 _assertLibraryUris(program, 104 _assertLibraryUris(program,
113 includes: [bUri, cUri], excludes: [aUri, Uri.parse('dart:core')]); 105 includes: [bUri, cUri], excludes: [aUri, Uri.parse('dart:core')]);
114 Library library = _getLibrary(program, cUri); 106 Library library = _getLibrary(program, cUri);
115 expect( 107 expect(_getLibraryText(library), r'''
116 _getLibraryText(library),
117 r'''
118 library; 108 library;
119 import self as self; 109 import self as self;
120 import "dart:core" as core; 110 import "dart:core" as core;
121 import "./a.dart" as a; 111 import "./a.dart" as a;
122 import "./b.dart" as b; 112 import "./b.dart" as b;
123 113
124 static field core::int c1 = a::a; 114 static field core::int c1 = a::a;
125 static field core::double c2 = b::b; 115 static field core::double c2 = b::b;
126 static method main() → void {} 116 static method main() → void {}
127 '''); 117 ''');
128 // The main method is set even though not the entry point is updated. 118 // The main method is set even though not the entry point is updated.
129 expect(program.mainMethod, isNotNull); 119 expect(program.mainMethod, isNotNull);
130 expect(program.mainMethod.enclosingLibrary.fileUri, cUri.toString()); 120 expect(program.mainMethod.enclosingLibrary.fileUri, cUri.toString());
131 } 121 }
132 } 122 }
133 123
134 test_compile_includePathToMain() async { 124 test_compile_includePathToMain() async {
135 writeFile('/test/.packages', 'test:lib/'); 125 writeFile('/test/.packages', 'test:lib/');
136 String aPath = '/test/lib/a.dart'; 126 String aPath = '/test/lib/a.dart';
137 String bPath = '/test/lib/b.dart'; 127 String bPath = '/test/lib/b.dart';
138 String cPath = '/test/lib/c.dart'; 128 String cPath = '/test/lib/c.dart';
139 String dPath = '/test/lib/d.dart'; 129 String dPath = '/test/lib/d.dart';
140 130
141 // A --> B -> C 131 // A --> B -> C
142 // \-> D 132 // \-> D
143 133
144 Uri aUri = writeFile( 134 Uri aUri = writeFile(aPath, r'''
145 aPath,
146 r'''
147 import 'b.dart'; 135 import 'b.dart';
148 import 'd.dart'; 136 import 'd.dart';
149 main() { 137 main() {
150 b(); 138 b();
151 d(); 139 d();
152 } 140 }
153 '''); 141 ''');
154 Uri bUri = writeFile( 142 Uri bUri = writeFile(bPath, r'''
155 bPath,
156 r'''
157 import 'c.dart'; 143 import 'c.dart';
158 b() { 144 b() {
159 c(); 145 c();
160 } 146 }
161 '''); 147 ''');
162 Uri cUri = writeFile(cPath, 'c() { print(0); }'); 148 Uri cUri = writeFile(cPath, 'c() { print(0); }');
163 Uri dUri = writeFile(dPath, 'd() {}'); 149 Uri dUri = writeFile(dPath, 'd() {}');
164 150
165 { 151 {
166 Program program = await getInitialState(aUri); 152 Program program = await getInitialState(aUri);
(...skipping 15 matching lines...) Expand all
182 excludes: [dUri, Uri.parse('dart:core')]); 168 excludes: [dUri, Uri.parse('dart:core')]);
183 // While a.dart and b.dart are is included (VM needs them), they were not 169 // While a.dart and b.dart are is included (VM needs them), they were not
184 // recompiled, because the change to c.dart was in the function body. 170 // recompiled, because the change to c.dart was in the function body.
185 _assertCompiledUris([cUri]); 171 _assertCompiledUris([cUri]);
186 } 172 }
187 } 173 }
188 174
189 test_updateEntryPoint() async { 175 test_updateEntryPoint() async {
190 writeFile('/test/.packages', 'test:lib/'); 176 writeFile('/test/.packages', 'test:lib/');
191 String path = '/test/lib/test.dart'; 177 String path = '/test/lib/test.dart';
192 Uri uri = writeFile( 178 Uri uri = writeFile(path, r'''
193 path,
194 r'''
195 main() { 179 main() {
196 var v = 1; 180 var v = 1;
197 } 181 }
198 '''); 182 ''');
199 183
200 String initialText = r''' 184 String initialText = r'''
201 library; 185 library;
202 import self as self; 186 import self as self;
203 import "dart:core" as core; 187 import "dart:core" as core;
204 188
205 static method main() → dynamic { 189 static method main() → dynamic {
206 core::int v = 1; 190 core::int v = 1;
207 } 191 }
208 '''; 192 ''';
209 193
210 // Compute the initial state. 194 // Compute the initial state.
211 { 195 {
212 Program program = await getInitialState(uri); 196 Program program = await getInitialState(uri);
213 Library library = _getLibrary(program, uri); 197 Library library = _getLibrary(program, uri);
214 expect(_getLibraryText(library), initialText); 198 expect(_getLibraryText(library), initialText);
215 } 199 }
216 200
217 // Update the entry point library. 201 // Update the entry point library.
218 writeFile( 202 writeFile(path, r'''
219 path,
220 r'''
221 main() { 203 main() {
222 var v = 2.3; 204 var v = 2.3;
223 } 205 }
224 '''); 206 ''');
225 207
226 // We have not invalidated the file, so the delta is empty. 208 // We have not invalidated the file, so the delta is empty.
227 { 209 {
228 DeltaProgram delta = await incrementalKernelGenerator.computeDelta(); 210 DeltaProgram delta = await incrementalKernelGenerator.computeDelta();
229 expect(delta.newProgram.libraries, isEmpty); 211 expect(delta.newProgram.libraries, isEmpty);
230 } 212 }
231 213
232 // Invalidate the file, so get the new text. 214 // Invalidate the file, so get the new text.
233 incrementalKernelGenerator.invalidate(uri); 215 incrementalKernelGenerator.invalidate(uri);
234 { 216 {
235 DeltaProgram delta = await incrementalKernelGenerator.computeDelta(); 217 DeltaProgram delta = await incrementalKernelGenerator.computeDelta();
236 Program program = delta.newProgram; 218 Program program = delta.newProgram;
237 _assertLibraryUris(program, includes: [uri]); 219 _assertLibraryUris(program, includes: [uri]);
238 Library library = _getLibrary(program, uri); 220 Library library = _getLibrary(program, uri);
239 expect( 221 expect(_getLibraryText(library), r'''
240 _getLibraryText(library),
241 r'''
242 library; 222 library;
243 import self as self; 223 import self as self;
244 import "dart:core" as core; 224 import "dart:core" as core;
245 225
246 static method main() → dynamic { 226 static method main() → dynamic {
247 core::double v = 2.3; 227 core::double v = 2.3;
248 } 228 }
249 '''); 229 ''');
250 } 230 }
251 } 231 }
252 232
253 test_watch() async { 233 test_watch() async {
254 writeFile('/test/.packages', 'test:lib/'); 234 writeFile('/test/.packages', 'test:lib/');
255 String aPath = '/test/lib/a.dart'; 235 String aPath = '/test/lib/a.dart';
256 String bPath = '/test/lib/b.dart'; 236 String bPath = '/test/lib/b.dart';
257 String cPath = '/test/lib/c.dart'; 237 String cPath = '/test/lib/c.dart';
258 Uri aUri = writeFile(aPath, ''); 238 Uri aUri = writeFile(aPath, '');
259 Uri bUri = writeFile(bPath, ''); 239 Uri bUri = writeFile(bPath, '');
260 Uri cUri = writeFile( 240 Uri cUri = writeFile(cPath, r'''
261 cPath,
262 r'''
263 import 'a.dart'; 241 import 'a.dart';
264 '''); 242 ''');
265 243
266 var usedFiles = <Uri>[]; 244 var usedFiles = <Uri>[];
267 var unusedFiles = <Uri>[]; 245 var unusedFiles = <Uri>[];
268 watchFn = (Uri uri, bool used) { 246 watchFn = (Uri uri, bool used) {
269 if (used) { 247 if (used) {
270 usedFiles.add(uri); 248 usedFiles.add(uri);
271 } else { 249 } else {
272 unusedFiles.add(uri); 250 unusedFiles.add(uri);
273 } 251 }
274 return new Future.value(); 252 return new Future.value();
275 }; 253 };
276 254
277 { 255 {
278 await getInitialState(cUri); 256 await getInitialState(cUri);
279 // We use at least c.dart and a.dart now. 257 // We use at least c.dart and a.dart now.
280 expect(usedFiles, contains(cUri)); 258 expect(usedFiles, contains(cUri));
281 expect(usedFiles, contains(aUri)); 259 expect(usedFiles, contains(aUri));
282 usedFiles.clear(); 260 usedFiles.clear();
283 expect(unusedFiles, isEmpty); 261 expect(unusedFiles, isEmpty);
284 } 262 }
285 263
286 // Update c.dart to reference also b.dart file. 264 // Update c.dart to reference also b.dart file.
287 writeFile( 265 writeFile(cPath, r'''
288 cPath,
289 r'''
290 import 'a.dart'; 266 import 'a.dart';
291 import 'b.dart'; 267 import 'b.dart';
292 '''); 268 ''');
293 incrementalKernelGenerator.invalidate(cUri); 269 incrementalKernelGenerator.invalidate(cUri);
294 { 270 {
295 await incrementalKernelGenerator.computeDelta(); 271 await incrementalKernelGenerator.computeDelta();
296 // The only new file is b.dart now. 272 // The only new file is b.dart now.
297 expect(usedFiles, [bUri]); 273 expect(usedFiles, [bUri]);
298 usedFiles.clear(); 274 usedFiles.clear();
299 expect(unusedFiles, isEmpty); 275 expect(unusedFiles, isEmpty);
300 } 276 }
301 277
302 // Update c.dart to stop referencing b.dart file. 278 // Update c.dart to stop referencing b.dart file.
303 writeFile( 279 writeFile(cPath, r'''
304 cPath,
305 r'''
306 import 'a.dart'; 280 import 'a.dart';
307 '''); 281 ''');
308 incrementalKernelGenerator.invalidate(cUri); 282 incrementalKernelGenerator.invalidate(cUri);
309 { 283 {
310 await incrementalKernelGenerator.computeDelta(); 284 await incrementalKernelGenerator.computeDelta();
311 // No new used files. 285 // No new used files.
312 expect(usedFiles, isEmpty); 286 expect(usedFiles, isEmpty);
313 // The file b.dart is not used anymore. 287 // The file b.dart is not used anymore.
314 expect(unusedFiles, [bUri]); 288 expect(unusedFiles, [bUri]);
315 unusedFiles.clear(); 289 unusedFiles.clear();
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 throw fail('No library found with URI "$uri"'); 352 throw fail('No library found with URI "$uri"');
379 } 353 }
380 354
381 String _getLibraryText(Library library) { 355 String _getLibraryText(Library library) {
382 StringBuffer buffer = new StringBuffer(); 356 StringBuffer buffer = new StringBuffer();
383 new Printer(buffer, syntheticNames: new NameSystem()) 357 new Printer(buffer, syntheticNames: new NameSystem())
384 .writeLibraryFile(library); 358 .writeLibraryFile(library);
385 return buffer.toString(); 359 return buffer.toString();
386 } 360 }
387 } 361 }
OLDNEW
« no previous file with comments | « pkg/front_end/lib/src/fasta/testing/kernel_chain.dart ('k') | pkg/front_end/test/src/incremental/file_state_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698