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

Side by Side Diff: pkg/analyzer/test/src/dart/analysis/file_state_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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 import 'dart:convert'; 6 import 'dart:convert';
7 import 'dart:typed_data'; 7 import 'dart:typed_data';
8 8
9 import 'package:analyzer/file_system/file_system.dart'; 9 import 'package:analyzer/file_system/file_system.dart';
10 import 'package:analyzer/file_system/memory_file_system.dart'; 10 import 'package:analyzer/file_system/memory_file_system.dart';
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 new ResourceUriResolver(provider) 58 new ResourceUriResolver(provider)
59 ], null, provider); 59 ], null, provider);
60 AnalysisOptions analysisOptions = new AnalysisOptionsImpl() 60 AnalysisOptions analysisOptions = new AnalysisOptionsImpl()
61 ..strongMode = true; 61 ..strongMode = true;
62 fileSystemState = new FileSystemState(logger, byteStore, contentOverlay, 62 fileSystemState = new FileSystemState(logger, byteStore, contentOverlay,
63 provider, sourceFactory, analysisOptions, new Uint32List(0)); 63 provider, sourceFactory, analysisOptions, new Uint32List(0));
64 } 64 }
65 65
66 test_definedClassMemberNames() { 66 test_definedClassMemberNames() {
67 String path = _p('/aaa/lib/a.dart'); 67 String path = _p('/aaa/lib/a.dart');
68 provider.newFile( 68 provider.newFile(path, r'''
69 path,
70 r'''
71 class A { 69 class A {
72 int a, b; 70 int a, b;
73 A(); 71 A();
74 A.c(); 72 A.c();
75 d() {} 73 d() {}
76 get e => null; 74 get e => null;
77 set f(_) {} 75 set f(_) {}
78 } 76 }
79 class B { 77 class B {
80 g() {} 78 g() {}
81 } 79 }
82 '''); 80 ''');
83 FileState file = fileSystemState.getFileForPath(path); 81 FileState file = fileSystemState.getFileForPath(path);
84 expect(file.definedClassMemberNames, 82 expect(file.definedClassMemberNames,
85 unorderedEquals(['a', 'b', 'd', 'e', 'f', 'g'])); 83 unorderedEquals(['a', 'b', 'd', 'e', 'f', 'g']));
86 } 84 }
87 85
88 test_definedTopLevelNames() { 86 test_definedTopLevelNames() {
89 String path = _p('/aaa/lib/a.dart'); 87 String path = _p('/aaa/lib/a.dart');
90 provider.newFile( 88 provider.newFile(path, r'''
91 path,
92 r'''
93 class A {} 89 class A {}
94 class B = Object with A; 90 class B = Object with A;
95 typedef C(); 91 typedef C();
96 D() {} 92 D() {}
97 get E => null; 93 get E => null;
98 set F(_) {} 94 set F(_) {}
99 var G, H; 95 var G, H;
100 '''); 96 ''');
101 FileState file = fileSystemState.getFileForPath(path); 97 FileState file = fileSystemState.getFileForPath(path);
102 expect(file.definedTopLevelNames, 98 expect(file.definedTopLevelNames,
103 unorderedEquals(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])); 99 unorderedEquals(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']));
104 } 100 }
105 101
106 test_exportedTopLevelDeclarations_export() { 102 test_exportedTopLevelDeclarations_export() {
107 String a = _p('/aaa/lib/a.dart'); 103 String a = _p('/aaa/lib/a.dart');
108 String b = _p('/aaa/lib/b.dart'); 104 String b = _p('/aaa/lib/b.dart');
109 provider.newFile( 105 provider.newFile(a, r'''
110 a,
111 r'''
112 class A {} 106 class A {}
113 '''); 107 ''');
114 provider.newFile( 108 provider.newFile(b, r'''
115 b,
116 r'''
117 export 'a.dart'; 109 export 'a.dart';
118 class B {} 110 class B {}
119 '''); 111 ''');
120 FileState file = fileSystemState.getFileForPath(b); 112 FileState file = fileSystemState.getFileForPath(b);
121 Map<String, TopLevelDeclaration> declarations = 113 Map<String, TopLevelDeclaration> declarations =
122 file.exportedTopLevelDeclarations; 114 file.exportedTopLevelDeclarations;
123 expect(declarations.keys, unorderedEquals(['A', 'B'])); 115 expect(declarations.keys, unorderedEquals(['A', 'B']));
124 } 116 }
125 117
126 test_exportedTopLevelDeclarations_export2_show() { 118 test_exportedTopLevelDeclarations_export2_show() {
127 String a = _p('/aaa/lib/a.dart'); 119 String a = _p('/aaa/lib/a.dart');
128 String b = _p('/aaa/lib/b.dart'); 120 String b = _p('/aaa/lib/b.dart');
129 String c = _p('/aaa/lib/c.dart'); 121 String c = _p('/aaa/lib/c.dart');
130 provider.newFile( 122 provider.newFile(a, r'''
131 a,
132 r'''
133 class A1 {} 123 class A1 {}
134 class A2 {} 124 class A2 {}
135 class A3 {} 125 class A3 {}
136 '''); 126 ''');
137 provider.newFile( 127 provider.newFile(b, r'''
138 b,
139 r'''
140 export 'a.dart' show A1, A2; 128 export 'a.dart' show A1, A2;
141 class B1 {} 129 class B1 {}
142 class B2 {} 130 class B2 {}
143 '''); 131 ''');
144 provider.newFile( 132 provider.newFile(c, r'''
145 c,
146 r'''
147 export 'b.dart' show A2, A3, B1; 133 export 'b.dart' show A2, A3, B1;
148 class C {} 134 class C {}
149 '''); 135 ''');
150 _assertExportedTopLevelDeclarations(c, ['A2', 'B1', 'C']); 136 _assertExportedTopLevelDeclarations(c, ['A2', 'B1', 'C']);
151 } 137 }
152 138
153 test_exportedTopLevelDeclarations_export_flushOnChange() { 139 test_exportedTopLevelDeclarations_export_flushOnChange() {
154 String a = _p('/aaa/lib/a.dart'); 140 String a = _p('/aaa/lib/a.dart');
155 String b = _p('/aaa/lib/b.dart'); 141 String b = _p('/aaa/lib/b.dart');
156 provider.newFile( 142 provider.newFile(a, r'''
157 a,
158 r'''
159 class A {} 143 class A {}
160 '''); 144 ''');
161 provider.newFile( 145 provider.newFile(b, r'''
162 b,
163 r'''
164 export 'a.dart'; 146 export 'a.dart';
165 class B {} 147 class B {}
166 '''); 148 ''');
167 149
168 // Initial exported declarations. 150 // Initial exported declarations.
169 _assertExportedTopLevelDeclarations(b, ['A', 'B']); 151 _assertExportedTopLevelDeclarations(b, ['A', 'B']);
170 152
171 // Update a.dart, so a.dart and b.dart exported declarations are flushed. 153 // Update a.dart, so a.dart and b.dart exported declarations are flushed.
172 provider.newFile(a, 'class A {} class A2 {}'); 154 provider.newFile(a, 'class A {} class A2 {}');
173 fileSystemState.getFileForPath(a).refresh(); 155 fileSystemState.getFileForPath(a).refresh();
174 _assertExportedTopLevelDeclarations(b, ['A', 'A2', 'B']); 156 _assertExportedTopLevelDeclarations(b, ['A', 'A2', 'B']);
175 } 157 }
176 158
177 test_exportedTopLevelDeclarations_export_hide() { 159 test_exportedTopLevelDeclarations_export_hide() {
178 String a = _p('/aaa/lib/a.dart'); 160 String a = _p('/aaa/lib/a.dart');
179 String b = _p('/aaa/lib/b.dart'); 161 String b = _p('/aaa/lib/b.dart');
180 provider.newFile( 162 provider.newFile(a, r'''
181 a,
182 r'''
183 class A1 {} 163 class A1 {}
184 class A2 {} 164 class A2 {}
185 class A3 {} 165 class A3 {}
186 '''); 166 ''');
187 provider.newFile( 167 provider.newFile(b, r'''
188 b,
189 r'''
190 export 'a.dart' hide A2; 168 export 'a.dart' hide A2;
191 class B {} 169 class B {}
192 '''); 170 ''');
193 _assertExportedTopLevelDeclarations(b, ['A1', 'A3', 'B']); 171 _assertExportedTopLevelDeclarations(b, ['A1', 'A3', 'B']);
194 } 172 }
195 173
196 test_exportedTopLevelDeclarations_export_preferLocal() { 174 test_exportedTopLevelDeclarations_export_preferLocal() {
197 String a = _p('/aaa/lib/a.dart'); 175 String a = _p('/aaa/lib/a.dart');
198 String b = _p('/aaa/lib/b.dart'); 176 String b = _p('/aaa/lib/b.dart');
199 provider.newFile( 177 provider.newFile(a, r'''
200 a,
201 r'''
202 class V {} 178 class V {}
203 '''); 179 ''');
204 provider.newFile( 180 provider.newFile(b, r'''
205 b,
206 r'''
207 export 'a.dart'; 181 export 'a.dart';
208 int V; 182 int V;
209 '''); 183 ''');
210 FileState file = fileSystemState.getFileForPath(b); 184 FileState file = fileSystemState.getFileForPath(b);
211 Map<String, TopLevelDeclaration> declarations = 185 Map<String, TopLevelDeclaration> declarations =
212 file.exportedTopLevelDeclarations; 186 file.exportedTopLevelDeclarations;
213 expect(declarations.keys, unorderedEquals(['V'])); 187 expect(declarations.keys, unorderedEquals(['V']));
214 expect(declarations['V'].kind, TopLevelDeclarationKind.variable); 188 expect(declarations['V'].kind, TopLevelDeclarationKind.variable);
215 } 189 }
216 190
217 test_exportedTopLevelDeclarations_export_show() { 191 test_exportedTopLevelDeclarations_export_show() {
218 String a = _p('/aaa/lib/a.dart'); 192 String a = _p('/aaa/lib/a.dart');
219 String b = _p('/aaa/lib/b.dart'); 193 String b = _p('/aaa/lib/b.dart');
220 provider.newFile( 194 provider.newFile(a, r'''
221 a,
222 r'''
223 class A1 {} 195 class A1 {}
224 class A2 {} 196 class A2 {}
225 '''); 197 ''');
226 provider.newFile( 198 provider.newFile(b, r'''
227 b,
228 r'''
229 export 'a.dart' show A2; 199 export 'a.dart' show A2;
230 class B {} 200 class B {}
231 '''); 201 ''');
232 _assertExportedTopLevelDeclarations(b, ['A2', 'B']); 202 _assertExportedTopLevelDeclarations(b, ['A2', 'B']);
233 } 203 }
234 204
235 test_exportedTopLevelDeclarations_export_show2() { 205 test_exportedTopLevelDeclarations_export_show2() {
236 String a = _p('/aaa/lib/a.dart'); 206 String a = _p('/aaa/lib/a.dart');
237 String b = _p('/aaa/lib/b.dart'); 207 String b = _p('/aaa/lib/b.dart');
238 String c = _p('/aaa/lib/c.dart'); 208 String c = _p('/aaa/lib/c.dart');
239 String d = _p('/aaa/lib/d.dart'); 209 String d = _p('/aaa/lib/d.dart');
240 provider.newFile( 210 provider.newFile(a, r'''
241 a,
242 r'''
243 export 'b.dart' show Foo; 211 export 'b.dart' show Foo;
244 export 'c.dart' show Bar; 212 export 'c.dart' show Bar;
245 '''); 213 ''');
246 provider.newFile( 214 provider.newFile(b, r'''
247 b,
248 r'''
249 export 'd.dart'; 215 export 'd.dart';
250 '''); 216 ''');
251 provider.newFile( 217 provider.newFile(c, r'''
252 c,
253 r'''
254 export 'd.dart'; 218 export 'd.dart';
255 '''); 219 ''');
256 provider.newFile( 220 provider.newFile(d, r'''
257 d,
258 r'''
259 class Foo {} 221 class Foo {}
260 class Bar {} 222 class Bar {}
261 '''); 223 ''');
262 _assertExportedTopLevelDeclarations(a, ['Foo', 'Bar']); 224 _assertExportedTopLevelDeclarations(a, ['Foo', 'Bar']);
263 } 225 }
264 226
265 test_exportedTopLevelDeclarations_import() { 227 test_exportedTopLevelDeclarations_import() {
266 String a = _p('/aaa/lib/a.dart'); 228 String a = _p('/aaa/lib/a.dart');
267 String b = _p('/aaa/lib/b.dart'); 229 String b = _p('/aaa/lib/b.dart');
268 provider.newFile( 230 provider.newFile(a, r'''
269 a,
270 r'''
271 class A {} 231 class A {}
272 '''); 232 ''');
273 provider.newFile( 233 provider.newFile(b, r'''
274 b,
275 r'''
276 import 'a.dart'; 234 import 'a.dart';
277 class B {} 235 class B {}
278 '''); 236 ''');
279 _assertExportedTopLevelDeclarations(b, ['B']); 237 _assertExportedTopLevelDeclarations(b, ['B']);
280 } 238 }
281 239
282 test_exportedTopLevelDeclarations_parts() { 240 test_exportedTopLevelDeclarations_parts() {
283 String a = _p('/aaa/lib/a.dart'); 241 String a = _p('/aaa/lib/a.dart');
284 String a2 = _p('/aaa/lib/a2.dart'); 242 String a2 = _p('/aaa/lib/a2.dart');
285 provider.newFile( 243 provider.newFile(a, r'''
286 a,
287 r'''
288 library lib; 244 library lib;
289 part 'a2.dart'; 245 part 'a2.dart';
290 class A1 {} 246 class A1 {}
291 '''); 247 ''');
292 provider.newFile( 248 provider.newFile(a2, r'''
293 a2,
294 r'''
295 part of lib; 249 part of lib;
296 class A2 {} 250 class A2 {}
297 '''); 251 ''');
298 _assertExportedTopLevelDeclarations(a, ['A1', 'A2']); 252 _assertExportedTopLevelDeclarations(a, ['A1', 'A2']);
299 } 253 }
300 254
301 test_getFileForPath_doesNotExist() { 255 test_getFileForPath_doesNotExist() {
302 String path = _p('/aaa/lib/a.dart'); 256 String path = _p('/aaa/lib/a.dart');
303 FileState file = fileSystemState.getFileForPath(path); 257 FileState file = fileSystemState.getFileForPath(path);
304 expect(file.path, path); 258 expect(file.path, path);
305 expect(file.uri, Uri.parse('package:aaa/a.dart')); 259 expect(file.uri, Uri.parse('package:aaa/a.dart'));
306 expect(file.content, ''); 260 expect(file.content, '');
307 expect(file.contentHash, _md5('')); 261 expect(file.contentHash, _md5(''));
308 expect(_excludeSdk(file.importedFiles), isEmpty); 262 expect(_excludeSdk(file.importedFiles), isEmpty);
309 expect(file.exportedFiles, isEmpty); 263 expect(file.exportedFiles, isEmpty);
310 expect(file.partedFiles, isEmpty); 264 expect(file.partedFiles, isEmpty);
311 expect(_excludeSdk(file.directReferencedFiles), isEmpty); 265 expect(_excludeSdk(file.directReferencedFiles), isEmpty);
312 expect(file.isPart, isFalse); 266 expect(file.isPart, isFalse);
313 expect(file.library, isNull); 267 expect(file.library, isNull);
314 expect(file.unlinked, isNotNull); 268 expect(file.unlinked, isNotNull);
315 expect(file.unlinked.classes, isEmpty); 269 expect(file.unlinked.classes, isEmpty);
316 } 270 }
317 271
318 test_getFileForPath_emptyUri() { 272 test_getFileForPath_emptyUri() {
319 String path = _p('/test.dart'); 273 String path = _p('/test.dart');
320 provider.newFile( 274 provider.newFile(path, r'''
321 path,
322 r'''
323 import ''; 275 import '';
324 export ''; 276 export '';
325 part ''; 277 part '';
326 '''); 278 ''');
327 279
328 FileState file = fileSystemState.getFileForPath(path); 280 FileState file = fileSystemState.getFileForPath(path);
329 _assertIsUnresolvedFile(file.importedFiles[0]); 281 _assertIsUnresolvedFile(file.importedFiles[0]);
330 _assertIsUnresolvedFile(file.exportedFiles[0]); 282 _assertIsUnresolvedFile(file.exportedFiles[0]);
331 _assertIsUnresolvedFile(file.partedFiles[0]); 283 _assertIsUnresolvedFile(file.partedFiles[0]);
332 } 284 }
333 285
334 test_getFileForPath_hasLibraryDirective_hasPartOfDirective() { 286 test_getFileForPath_hasLibraryDirective_hasPartOfDirective() {
335 String a = _p('/test/lib/a.dart'); 287 String a = _p('/test/lib/a.dart');
336 provider.newFile( 288 provider.newFile(a, r'''
337 a,
338 r'''
339 library L; 289 library L;
340 part of L; 290 part of L;
341 '''); 291 ''');
342 FileState file = fileSystemState.getFileForPath(a); 292 FileState file = fileSystemState.getFileForPath(a);
343 expect(file.isPart, isFalse); 293 expect(file.isPart, isFalse);
344 } 294 }
345 295
346 test_getFileForPath_invalidUri() { 296 test_getFileForPath_invalidUri() {
347 String a = _p('/aaa/lib/a.dart'); 297 String a = _p('/aaa/lib/a.dart');
348 String a1 = _p('/aaa/lib/a1.dart'); 298 String a1 = _p('/aaa/lib/a1.dart');
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 384
435 expect(fileSystemState.getFilesForPath(a1), [file]); 385 expect(fileSystemState.getFilesForPath(a1), [file]);
436 } 386 }
437 387
438 test_getFileForPath_onlyDartFiles() { 388 test_getFileForPath_onlyDartFiles() {
439 String not_dart = _p('/test/lib/not_dart.txt'); 389 String not_dart = _p('/test/lib/not_dart.txt');
440 String a = _p('/test/lib/a.dart'); 390 String a = _p('/test/lib/a.dart');
441 String b = _p('/test/lib/b.dart'); 391 String b = _p('/test/lib/b.dart');
442 String c = _p('/test/lib/c.dart'); 392 String c = _p('/test/lib/c.dart');
443 String d = _p('/test/lib/d.dart'); 393 String d = _p('/test/lib/d.dart');
444 provider.newFile( 394 provider.newFile(a, r'''
445 a,
446 r'''
447 library lib; 395 library lib;
448 import 'dart:math'; 396 import 'dart:math';
449 import 'b.dart'; 397 import 'b.dart';
450 import 'not_dart.txt'; 398 import 'not_dart.txt';
451 export 'c.dart'; 399 export 'c.dart';
452 export 'not_dart.txt'; 400 export 'not_dart.txt';
453 part 'd.dart'; 401 part 'd.dart';
454 part 'not_dart.txt'; 402 part 'not_dart.txt';
455 '''); 403 ''');
456 FileState file = fileSystemState.getFileForPath(a); 404 FileState file = fileSystemState.getFileForPath(a);
457 expect(_excludeSdk(file.importedFiles).map((f) => f.path), 405 expect(_excludeSdk(file.importedFiles).map((f) => f.path),
458 unorderedEquals([b, not_dart])); 406 unorderedEquals([b, not_dart]));
459 expect( 407 expect(
460 file.exportedFiles.map((f) => f.path), unorderedEquals([c, not_dart])); 408 file.exportedFiles.map((f) => f.path), unorderedEquals([c, not_dart]));
461 expect(file.partedFiles.map((f) => f.path), unorderedEquals([d, not_dart])); 409 expect(file.partedFiles.map((f) => f.path), unorderedEquals([d, not_dart]));
462 expect(_excludeSdk(fileSystemState.knownFilePaths), 410 expect(_excludeSdk(fileSystemState.knownFilePaths),
463 unorderedEquals([a, b, c, d, not_dart])); 411 unorderedEquals([a, b, c, d, not_dart]));
464 } 412 }
465 413
466 test_getFileForPath_part() { 414 test_getFileForPath_part() {
467 String a1 = _p('/aaa/lib/a1.dart'); 415 String a1 = _p('/aaa/lib/a1.dart');
468 String a2 = _p('/aaa/lib/a2.dart'); 416 String a2 = _p('/aaa/lib/a2.dart');
469 provider.newFile( 417 provider.newFile(a1, r'''
470 a1,
471 r'''
472 library a1; 418 library a1;
473 part 'a2.dart'; 419 part 'a2.dart';
474 '''); 420 ''');
475 provider.newFile( 421 provider.newFile(a2, r'''
476 a2,
477 r'''
478 part of a1; 422 part of a1;
479 class A2 {} 423 class A2 {}
480 '''); 424 ''');
481 425
482 FileState file_a2 = fileSystemState.getFileForPath(a2); 426 FileState file_a2 = fileSystemState.getFileForPath(a2);
483 expect(file_a2.path, a2); 427 expect(file_a2.path, a2);
484 expect(file_a2.uri, Uri.parse('package:aaa/a2.dart')); 428 expect(file_a2.uri, Uri.parse('package:aaa/a2.dart'));
485 429
486 expect(file_a2.unlinked, isNotNull); 430 expect(file_a2.unlinked, isNotNull);
487 expect(file_a2.unlinked.classes, hasLength(1)); 431 expect(file_a2.unlinked.classes, hasLength(1));
(...skipping 14 matching lines...) Expand all
502 expect(file_a1.partedFiles[0], same(file_a2)); 446 expect(file_a1.partedFiles[0], same(file_a2));
503 expect( 447 expect(
504 _excludeSdk(file_a1.directReferencedFiles), unorderedEquals([file_a2])); 448 _excludeSdk(file_a1.directReferencedFiles), unorderedEquals([file_a2]));
505 449
506 // Now the part knows its library. 450 // Now the part knows its library.
507 expect(file_a2.library, same(file_a1)); 451 expect(file_a2.library, same(file_a1));
508 452
509 // Now update the library, and refresh its file. 453 // Now update the library, and refresh its file.
510 // The 'a2.dart' is not referenced anymore. 454 // The 'a2.dart' is not referenced anymore.
511 // So the part file does not have the library anymore. 455 // So the part file does not have the library anymore.
512 provider.newFile( 456 provider.newFile(a1, r'''
513 a1,
514 r'''
515 library a1; 457 library a1;
516 part 'not-a2.dart'; 458 part 'not-a2.dart';
517 '''); 459 ''');
518 file_a1.refresh(); 460 file_a1.refresh();
519 expect(file_a2.library, isNull); 461 expect(file_a2.library, isNull);
520 } 462 }
521 463
522 test_getFileForPath_samePath() { 464 test_getFileForPath_samePath() {
523 String path = _p('/aaa/lib/a.dart'); 465 String path = _p('/aaa/lib/a.dart');
524 FileState file1 = fileSystemState.getFileForPath(path); 466 FileState file1 = fileSystemState.getFileForPath(path);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 expect(fileSystemState.hasUri(templatePath), isFalse); 504 expect(fileSystemState.hasUri(templatePath), isFalse);
563 expect(fileSystemState.hasUri(generatedPath), isTrue); 505 expect(fileSystemState.hasUri(generatedPath), isTrue);
564 } 506 }
565 507
566 test_knownFilesSetChanges() async { 508 test_knownFilesSetChanges() async {
567 fileSystemState.test.knownFilesDelay = new Duration(milliseconds: 5); 509 fileSystemState.test.knownFilesDelay = new Duration(milliseconds: 5);
568 510
569 String a = _p('/test/lib/a.dart'); 511 String a = _p('/test/lib/a.dart');
570 String b = _p('/test/lib/b.dart'); 512 String b = _p('/test/lib/b.dart');
571 String c = _p('/test/lib/c.dart'); 513 String c = _p('/test/lib/c.dart');
572 provider.newFile( 514 provider.newFile(a, r'''
573 a,
574 r'''
575 import 'b.dart'; 515 import 'b.dart';
576 '''); 516 ''');
577 provider.newFile(b, ''); 517 provider.newFile(b, '');
578 provider.newFile(c, ''); 518 provider.newFile(c, '');
579 519
580 Stream<KnownFilesSetChange> broadcastEvents = 520 Stream<KnownFilesSetChange> broadcastEvents =
581 fileSystemState.knownFilesSetChanges.asBroadcastStream(); 521 fileSystemState.knownFilesSetChanges.asBroadcastStream();
582 522
583 FileState file = fileSystemState.getFileForPath(a); 523 FileState file = fileSystemState.getFileForPath(a);
584 { 524 {
585 KnownFilesSetChange event = await broadcastEvents.first; 525 KnownFilesSetChange event = await broadcastEvents.first;
586 expect(event.added, contains(a)); 526 expect(event.added, contains(a));
587 expect(event.added, contains(b)); 527 expect(event.added, contains(b));
588 expect(event.removed, isEmpty); 528 expect(event.removed, isEmpty);
589 } 529 }
590 530
591 // Update a.dart to import c.dart and refresh. 531 // Update a.dart to import c.dart and refresh.
592 // So, c.dart should be reported as added in the next change event. 532 // So, c.dart should be reported as added in the next change event.
593 provider.newFile( 533 provider.newFile(a, r'''
594 a,
595 r'''
596 import 'b.dart'; 534 import 'b.dart';
597 import 'c.dart'; 535 import 'c.dart';
598 '''); 536 ''');
599 file.refresh(); 537 file.refresh();
600 { 538 {
601 KnownFilesSetChange event = await broadcastEvents.first; 539 KnownFilesSetChange event = await broadcastEvents.first;
602 expect(event.added, contains(c)); 540 expect(event.added, contains(c));
603 expect(event.removed, isEmpty); 541 expect(event.removed, isEmpty);
604 } 542 }
605 } 543 }
606 544
607 test_referencedNames() { 545 test_referencedNames() {
608 String path = _p('/aaa/lib/a.dart'); 546 String path = _p('/aaa/lib/a.dart');
609 provider.newFile( 547 provider.newFile(path, r'''
610 path,
611 r'''
612 A foo(B p) { 548 A foo(B p) {
613 foo(null); 549 foo(null);
614 C c = new C(p); 550 C c = new C(p);
615 return c; 551 return c;
616 } 552 }
617 '''); 553 ''');
618 FileState file = fileSystemState.getFileForPath(path); 554 FileState file = fileSystemState.getFileForPath(path);
619 expect(file.referencedNames, unorderedEquals(['A', 'B', 'C'])); 555 expect(file.referencedNames, unorderedEquals(['A', 'B', 'C']));
620 } 556 }
621 557
622 test_refresh_differentApiSignature() { 558 test_refresh_differentApiSignature() {
623 String path = _p('/aaa/lib/a.dart'); 559 String path = _p('/aaa/lib/a.dart');
624 provider.newFile( 560 provider.newFile(path, r'''
625 path,
626 r'''
627 class A {} 561 class A {}
628 '''); 562 ''');
629 FileState file = fileSystemState.getFileForPath(path); 563 FileState file = fileSystemState.getFileForPath(path);
630 expect(file.unlinked.classes[0].name, 'A'); 564 expect(file.unlinked.classes[0].name, 'A');
631 List<int> signature = file.apiSignature; 565 List<int> signature = file.apiSignature;
632 566
633 // Update the resource and refresh the file state. 567 // Update the resource and refresh the file state.
634 provider.newFile( 568 provider.newFile(path, r'''
635 path,
636 r'''
637 class B {} 569 class B {}
638 '''); 570 ''');
639 bool apiSignatureChanged = file.refresh(); 571 bool apiSignatureChanged = file.refresh();
640 expect(apiSignatureChanged, isTrue); 572 expect(apiSignatureChanged, isTrue);
641 573
642 expect(file.unlinked.classes[0].name, 'B'); 574 expect(file.unlinked.classes[0].name, 'B');
643 expect(file.apiSignature, isNot(signature)); 575 expect(file.apiSignature, isNot(signature));
644 } 576 }
645 577
646 test_refresh_sameApiSignature() { 578 test_refresh_sameApiSignature() {
647 String path = _p('/aaa/lib/a.dart'); 579 String path = _p('/aaa/lib/a.dart');
648 provider.newFile( 580 provider.newFile(path, r'''
649 path,
650 r'''
651 class C { 581 class C {
652 foo() { 582 foo() {
653 print(111); 583 print(111);
654 } 584 }
655 } 585 }
656 '''); 586 ''');
657 FileState file = fileSystemState.getFileForPath(path); 587 FileState file = fileSystemState.getFileForPath(path);
658 List<int> signature = file.apiSignature; 588 List<int> signature = file.apiSignature;
659 589
660 // Update the resource and refresh the file state. 590 // Update the resource and refresh the file state.
661 provider.newFile( 591 provider.newFile(path, r'''
662 path,
663 r'''
664 class C { 592 class C {
665 foo() { 593 foo() {
666 print(222); 594 print(222);
667 } 595 }
668 } 596 }
669 '''); 597 ''');
670 bool apiSignatureChanged = file.refresh(); 598 bool apiSignatureChanged = file.refresh();
671 expect(apiSignatureChanged, isFalse); 599 expect(apiSignatureChanged, isFalse);
672 600
673 expect(file.apiSignature, signature); 601 expect(file.apiSignature, signature);
674 } 602 }
675 603
676 test_subtypedNames() { 604 test_subtypedNames() {
677 String path = _p('/test.dart'); 605 String path = _p('/test.dart');
678 provider.newFile( 606 provider.newFile(path, r'''
679 path,
680 r'''
681 class X extends A {} 607 class X extends A {}
682 class Y extends A with B {} 608 class Y extends A with B {}
683 class Z implements C, D {} 609 class Z implements C, D {}
684 '''); 610 ''');
685 FileState file = fileSystemState.getFileForPath(path); 611 FileState file = fileSystemState.getFileForPath(path);
686 expect(file.referencedNames, unorderedEquals(['A', 'B', 'C', 'D'])); 612 expect(file.referencedNames, unorderedEquals(['A', 'B', 'C', 'D']));
687 } 613 }
688 614
689 test_topLevelDeclarations() { 615 test_topLevelDeclarations() {
690 String path = _p('/aaa/lib/a.dart'); 616 String path = _p('/aaa/lib/a.dart');
691 provider.newFile( 617 provider.newFile(path, r'''
692 path,
693 r'''
694 class C {} 618 class C {}
695 typedef F(); 619 typedef F();
696 enum E {E1, E2} 620 enum E {E1, E2}
697 void f() {} 621 void f() {}
698 var V1; 622 var V1;
699 get V2 => null; 623 get V2 => null;
700 set V3(_) {} 624 set V3(_) {}
701 get V4 => null; 625 get V4 => null;
702 set V4(_) {} 626 set V4(_) {}
703 627
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 String _p(String path) => provider.convertPath(path); 810 String _p(String path) => provider.convertPath(path);
887 811
888 static String _md5(String content) { 812 static String _md5(String content) {
889 return hex.encode(md5.convert(UTF8.encode(content)).bytes); 813 return hex.encode(md5.convert(UTF8.encode(content)).bytes);
890 } 814 }
891 } 815 }
892 816
893 class _GeneratedUriResolverMock extends TypedMock implements UriResolver {} 817 class _GeneratedUriResolverMock extends TypedMock implements UriResolver {}
894 818
895 class _SourceMock extends TypedMock implements Source {} 819 class _SourceMock extends TypedMock implements Source {}
OLDNEW
« no previous file with comments | « pkg/analyzer/test/src/dart/analysis/driver_test.dart ('k') | pkg/analyzer/test/src/dart/analysis/index_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698