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

Side by Side Diff: pkg/analyzer/lib/src/dart/analysis/file_state.dart

Issue 2653683004: Stop using SDK summary bundle. Analyze dart:xxx as any other libraries. (Closed)
Patch Set: Restore optional SDK bundle. 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
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:convert'; 5 import 'dart:convert';
6 import 'dart:typed_data'; 6 import 'dart:typed_data';
7 7
8 import 'package:analyzer/dart/ast/ast.dart'; 8 import 'package:analyzer/dart/ast/ast.dart';
9 import 'package:analyzer/dart/ast/token.dart'; 9 import 'package:analyzer/dart/ast/token.dart';
10 import 'package:analyzer/error/listener.dart'; 10 import 'package:analyzer/error/listener.dart';
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 return _transitiveFiles; 294 return _transitiveFiles;
295 } 295 }
296 296
297 /** 297 /**
298 * Return the signature of the file, based on the [transitiveFiles]. 298 * Return the signature of the file, based on the [transitiveFiles].
299 */ 299 */
300 String get transitiveSignature { 300 String get transitiveSignature {
301 if (_transitiveSignature == null) { 301 if (_transitiveSignature == null) {
302 ApiSignature signature = new ApiSignature(); 302 ApiSignature signature = new ApiSignature();
303 signature.addUint32List(_fsState._salt); 303 signature.addUint32List(_fsState._salt);
304 signature.addString(_fsState._sdkApiSignature);
305 signature.addInt(transitiveFiles.length); 304 signature.addInt(transitiveFiles.length);
306 transitiveFiles 305 transitiveFiles
307 .map((file) => file.apiSignature) 306 .map((file) => file.apiSignature)
308 .forEach(signature.addBytes); 307 .forEach(signature.addBytes);
309 signature.addString(uri.toString()); 308 signature.addString(uri.toString());
310 _transitiveSignature = signature.toHex(); 309 _transitiveSignature = signature.toHex();
311 } 310 }
312 return _transitiveSignature; 311 return _transitiveSignature;
313 } 312 }
314 313
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 _fsState._partToLibraries[part]?.remove(this); 428 _fsState._partToLibraries[part]?.remove(this);
430 } 429 }
431 } 430 }
432 431
433 // Build the graph. 432 // Build the graph.
434 _importedFiles = <FileState>[]; 433 _importedFiles = <FileState>[];
435 _exportedFiles = <FileState>[]; 434 _exportedFiles = <FileState>[];
436 _partedFiles = <FileState>[]; 435 _partedFiles = <FileState>[];
437 _exportFilters = <NameFilter>[]; 436 _exportFilters = <NameFilter>[];
438 for (UnlinkedImport import in _unlinked.imports) { 437 for (UnlinkedImport import in _unlinked.imports) {
439 if (!import.isImplicit) { 438 String uri = import.isImplicit ? 'dart:core' : import.uri;
440 String uri = import.uri; 439 FileState file = _fileForRelativeUri(uri);
441 if (_isDartFileUri(uri)) { 440 if (file != null) {
442 FileState file = _fileForRelativeUri(uri); 441 _importedFiles.add(file);
443 if (file != null) {
444 _importedFiles.add(file);
445 }
446 }
447 } 442 }
448 } 443 }
449 for (UnlinkedExportPublic export in _unlinked.publicNamespace.exports) { 444 for (UnlinkedExportPublic export in _unlinked.publicNamespace.exports) {
450 String uri = export.uri; 445 String uri = export.uri;
451 if (_isDartFileUri(uri)) { 446 FileState file = _fileForRelativeUri(uri);
452 FileState file = _fileForRelativeUri(uri); 447 if (file != null) {
453 if (file != null) { 448 _exportedFiles.add(file);
454 _exportedFiles.add(file); 449 _exportFilters
455 _exportFilters 450 .add(new NameFilter.forUnlinkedCombinators(export.combinators));
456 .add(new NameFilter.forUnlinkedCombinators(export.combinators));
457 }
458 } 451 }
459 } 452 }
460 for (String uri in _unlinked.publicNamespace.parts) { 453 for (String uri in _unlinked.publicNamespace.parts) {
461 if (_isDartFileUri(uri)) { 454 FileState file = _fileForRelativeUri(uri);
462 FileState file = _fileForRelativeUri(uri); 455 if (file != null) {
463 if (file != null) { 456 _partedFiles.add(file);
464 _partedFiles.add(file); 457 // TODO(scheglov) Sort for stable results?
465 // TODO(scheglov) Sort for stable results? 458 _fsState._partToLibraries
466 _fsState._partToLibraries 459 .putIfAbsent(file, () => <FileState>[])
467 .putIfAbsent(file, () => <FileState>[]) 460 .add(this);
468 .add(this);
469 }
470 } 461 }
471 } 462 }
472 463
473 // Compute referenced files. 464 // Compute referenced files.
474 Set<FileState> oldDirectReferencedFiles = _directReferencedFiles; 465 Set<FileState> oldDirectReferencedFiles = _directReferencedFiles;
475 _directReferencedFiles = new Set<FileState>() 466 _directReferencedFiles = new Set<FileState>()
476 ..addAll(_importedFiles) 467 ..addAll(_importedFiles)
477 ..addAll(_exportedFiles) 468 ..addAll(_exportedFiles)
478 ..addAll(_partedFiles); 469 ..addAll(_partedFiles);
479 470
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 if (a.length != b.length) { 508 if (a.length != b.length) {
518 return false; 509 return false;
519 } 510 }
520 for (int i = 0; i < a.length; i++) { 511 for (int i = 0; i < a.length; i++) {
521 if (a[i] != b[i]) { 512 if (a[i] != b[i]) {
522 return false; 513 return false;
523 } 514 }
524 } 515 }
525 return true; 516 return true;
526 } 517 }
527
528 static bool _isDartFileUri(String uri) {
529 return !uri.startsWith('dart:');
530 }
531 } 518 }
532 519
533 /** 520 /**
534 * Information about known file system state. 521 * Information about known file system state.
535 */ 522 */
536 class FileSystemState { 523 class FileSystemState {
537 final PerformanceLog _logger; 524 final PerformanceLog _logger;
538 final ResourceProvider _resourceProvider; 525 final ResourceProvider _resourceProvider;
539 final ByteStore _byteStore; 526 final ByteStore _byteStore;
540 final FileContentOverlay _contentOverlay; 527 final FileContentOverlay _contentOverlay;
541 final SourceFactory _sourceFactory; 528 final SourceFactory _sourceFactory;
542 final AnalysisOptions _analysisOptions; 529 final AnalysisOptions _analysisOptions;
543 final Uint32List _salt; 530 final Uint32List _salt;
544 final String _sdkApiSignature;
545 531
546 /** 532 /**
547 * Mapping from a URI to the corresponding [FileState]. 533 * Mapping from a URI to the corresponding [FileState].
548 */ 534 */
549 final Map<Uri, FileState> _uriToFile = {}; 535 final Map<Uri, FileState> _uriToFile = {};
550 536
551 /** 537 /**
552 * All known file paths. 538 * All known file paths.
553 */ 539 */
554 final Set<String> knownFilePaths = new Set<String>(); 540 final Set<String> knownFilePaths = new Set<String>();
(...skipping 15 matching lines...) Expand all
570 556
571 FileSystemStateTestView _testView; 557 FileSystemStateTestView _testView;
572 558
573 FileSystemState( 559 FileSystemState(
574 this._logger, 560 this._logger,
575 this._byteStore, 561 this._byteStore,
576 this._contentOverlay, 562 this._contentOverlay,
577 this._resourceProvider, 563 this._resourceProvider,
578 this._sourceFactory, 564 this._sourceFactory,
579 this._analysisOptions, 565 this._analysisOptions,
580 this._salt, 566 this._salt) {
581 this._sdkApiSignature) {
582 _testView = new FileSystemStateTestView(this); 567 _testView = new FileSystemStateTestView(this);
583 } 568 }
584 569
585 /** 570 /**
586 * Return the known files. 571 * Return the known files.
587 */ 572 */
588 Iterable<FileState> get knownFiles => 573 Iterable<FileState> get knownFiles =>
589 _pathToFiles.values.map((files) => files.first); 574 _pathToFiles.values.map((files) => files.first);
590 575
591 @visibleForTesting 576 @visibleForTesting
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
695 .where((f) => f._transitiveFiles == null) 680 .where((f) => f._transitiveFiles == null)
696 .toSet(); 681 .toSet();
697 } 682 }
698 683
699 Set<FileState> get filesWithoutTransitiveSignature { 684 Set<FileState> get filesWithoutTransitiveSignature {
700 return state._uriToFile.values 685 return state._uriToFile.values
701 .where((f) => f._transitiveSignature == null) 686 .where((f) => f._transitiveSignature == null)
702 .toSet(); 687 .toSet();
703 } 688 }
704 } 689 }
OLDNEW
« no previous file with comments | « pkg/analyzer/lib/src/dart/analysis/driver.dart ('k') | pkg/analyzer/test/src/dart/analysis/driver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698