| Index: pkg/analyzer/lib/src/dart/analysis/driver.dart
|
| diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
|
| index 7033335f7929b16a378faa5132a6cfac373f515e..9a7bcb17f76c1cd3e258e25cda8fcd04350d57f2 100644
|
| --- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
|
| +++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
|
| @@ -415,8 +415,9 @@ class AnalysisDriver {
|
| * We need to clean this up.
|
| */
|
| void _addToStoreUnlinked(
|
| - SummaryDataStore store, String uri, UnlinkedUnit unlinked) {
|
| - store.unlinkedMap[uri] = unlinked;
|
| + SummaryDataStore store, Uri uri, UnlinkedUnit unlinked) {
|
| + String uriStr = uri.toString();
|
| + store.unlinkedMap[uriStr] = unlinked;
|
| }
|
|
|
| /**
|
| @@ -429,7 +430,7 @@ class AnalysisDriver {
|
| AnalysisResult _computeAnalysisResult(String path, {bool withUnit: false}) {
|
| // If we don't need the fully resolved unit, check for the cached result.
|
| if (!withUnit) {
|
| - FileState file = _fsState.getFile(path);
|
| + FileState file = _fsState.getFileForPath(path);
|
| // Prepare the key for the cached result.
|
| String key = _getResolvedUnitKey(file);
|
| if (key == null) {
|
| @@ -534,14 +535,13 @@ class AnalysisDriver {
|
| // Append the defining unit.
|
| {
|
| UnlinkedUnit unlinked = libraryFile.unlinked;
|
| - _addToStoreUnlinked(store, libraryUriStr, unlinked);
|
| + _addToStoreUnlinked(store, libraryFile.uri, unlinked);
|
| }
|
|
|
| // Append parts.
|
| for (FileState part in libraryFile.partedFiles) {
|
| - String partUriStr = part.uri.toString();
|
| UnlinkedUnit unlinked = part.unlinked;
|
| - _addToStoreUnlinked(store, partUriStr, unlinked);
|
| + _addToStoreUnlinked(store, part.uri, unlinked);
|
| }
|
|
|
| // Create nodes for referenced libraries.
|
| @@ -565,7 +565,7 @@ class AnalysisDriver {
|
| if (bytes != null) {
|
| PackageBundle linked = new PackageBundle.fromBuffer(bytes);
|
| _addToStoreLinked(
|
| - store, node.uri.toString(), linked.linkedLibraries.single);
|
| + store, node.file.uri.toString(), linked.linkedLibraries.single);
|
| } else {
|
| libraryUrisToLink.add(node.uri.toString());
|
| }
|
| @@ -578,15 +578,9 @@ class AnalysisDriver {
|
| _logger.run('Link bundles', () {
|
| linkedLibraries = link(libraryUrisToLink, (String uri) {
|
| LinkedLibrary linkedLibrary = store.linkedMap[uri];
|
| - if (linkedLibrary == null) {
|
| - throw new StateError('No linked library for: $uri');
|
| - }
|
| return linkedLibrary;
|
| }, (String uri) {
|
| UnlinkedUnit unlinkedUnit = store.unlinkedMap[uri];
|
| - if (unlinkedUnit == null) {
|
| - throw new StateError('No unlinked unit for: $uri');
|
| - }
|
| return unlinkedUnit;
|
| }, (_) => null, _analysisOptions.strongMode);
|
| _logger.writeln('Linked ${linkedLibraries.length} bundles.');
|
| @@ -688,14 +682,20 @@ class AnalysisDriver {
|
| */
|
| FileState _verifyApiSignature(String path) {
|
| return _logger.run('Verify API signature of $path', () {
|
| - FileState file = _fsState.getFile(path);
|
| - bool apiChanged = file.refresh();
|
| - if (apiChanged) {
|
| + bool anyApiChanged = false;
|
| + List<FileState> files = _fsState.getFilesForPath(path);
|
| + for (FileState file in files) {
|
| + bool apiChanged = file.refresh();
|
| + if (apiChanged) {
|
| + anyApiChanged = true;
|
| + }
|
| + }
|
| + if (anyApiChanged) {
|
| _logger.writeln('API signatures mismatch found for $path');
|
| _dependencySignatureMap.clear();
|
| _filesToAnalyze.addAll(_explicitFiles);
|
| }
|
| - return file;
|
| + return files[0];
|
| });
|
| }
|
|
|
|
|