| 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 443b0517a443670944260bb3be23b418e39686c4..6677376eb6194c04a09169e52b31f29eb282102f 100644
|
| --- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
|
| +++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
|
| @@ -208,6 +208,12 @@ class AnalysisDriver {
|
| * "analyzing" and an analysis result is produced for every added file prior
|
| * to the next time the analysis state transitions to "idle".
|
| *
|
| + * At least one analysis result is produced for every file passed to
|
| + * [addFile] or [changeFile] prior to the next time the analysis state
|
| + * transitions to "idle", unless the file is later removed from analysis
|
| + * using [removeFile]. Analysis results for other files are produced only if
|
| + * the changes affect analysis results of other files.
|
| + *
|
| * More than one result might be produced for the same file, even if the
|
| * client does not change the state of the files.
|
| *
|
| @@ -299,11 +305,6 @@ class AnalysisDriver {
|
| * The [path] must be absolute and normalized.
|
| *
|
| * The results of analysis are eventually produced by the [results] stream.
|
| - *
|
| - * Causes the analysis state to transition to "analyzing" (if it is not in
|
| - * that state already). At least one analysis result will be produced the
|
| - * file prior to the next time the analysis state transitions to "idle",
|
| - * unless the file is later removed from analysis using [removeFile].
|
| */
|
| void addFile(String path) {
|
| _explicitFiles.add(path);
|
| @@ -325,11 +326,6 @@ class AnalysisDriver {
|
| * into the current file state prior to the next time the analysis state
|
| * transitions to "idle".
|
| *
|
| - * If the file content is the same, no new results will be produced because
|
| - * of this notification, including no result for the file itself. Otherwise,
|
| - * one or more results will be produced - for the file itself and other
|
| - * files that that change in the file might affect.
|
| - *
|
| * Invocation of this method will not prevent a [Future] returned from
|
| * [getResult] from completing with a result, but the result is not
|
| * guaranteed to be consistent with the new current file state after this
|
| @@ -685,22 +681,16 @@ class AnalysisDriver {
|
| */
|
| void _verifyApiSignatureOfChangedFile(String path) {
|
| _logger.run('Verify API signature of $path', () {
|
| - String oldContentHash = _fileContentHashMap[path];
|
| String oldSignature = _fileApiSignatureMap[path];
|
| // Compute the new API signature.
|
| // _File.forResolution() also updates the content hash in the cache.
|
| Source source = _sourceForPath(path);
|
| _File newFile = new _File.forResolution(this, source);
|
| - // If the file content hash is the same, we don't need analyzing it.
|
| - if (newFile.contentHash == oldContentHash) {
|
| - _filesToAnalyze.remove(path);
|
| - return;
|
| - }
|
| + String newSignature = newFile.unlinked.apiSignature;
|
| // If the old API signature is not null, then the file was used to
|
| // compute at least one dependency signature. If the new API signature
|
| // is different, then potentially all dependency signatures and
|
| // resolution results are invalid.
|
| - String newSignature = newFile.unlinked.apiSignature;
|
| if (oldSignature != null && oldSignature != newSignature) {
|
| _logger.writeln('API signatures mismatch found for $newFile');
|
| _dependencySignatureMap.clear();
|
|
|