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

Unified Diff: pkg/analyzer/lib/src/generated/engine.dart

Issue 647033002: Remove more multi-thread support (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/generated/engine.dart
diff --git a/pkg/analyzer/lib/src/generated/engine.dart b/pkg/analyzer/lib/src/generated/engine.dart
index 53e8644c7658aff34bd1093e15c96bfef1db28cb..15b0ab425f0a0e37ddb08d8e8ccb3e46fab10f78 100644
--- a/pkg/analyzer/lib/src/generated/engine.dart
+++ b/pkg/analyzer/lib/src/generated/engine.dart
@@ -3960,79 +3960,31 @@ class AnalysisContextImpl implements InternalAnalysisContext {
}
/**
- * Record the results produced by performing a [GenerateDartErrorsTask]. If the results were
- * computed from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @return an entry containing the computed results
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
DartEntry _recordGenerateDartErrorsTask(GenerateDartErrorsTask task) {
Source source = task.source;
+ DartEntry dartEntry = _cache.get(source);
Source librarySource = task.libraryElement.source;
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- } else if (sourceEntry is! DartEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent a Dart file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to verify non-Dart file as a Dart file: ${source.fullName}");
- }
- DartEntry dartEntry = sourceEntry;
- int sourceTime = getModificationStamp(source);
scheglov 2014/10/10 19:52:56 The source cannot be modified in _contentCache. Bu
Brian Wilkerson 2014/10/10 20:24:55 Yes, that was my conclusion as well. The original
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (dartEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(source);
- dartEntry = _getReadableDartEntry(source);
- if (dartEntry == null) {
- throw new AnalysisException("A Dart file became a non-Dart file: ${source.fullName}");
- }
- }
- if (thrownException == null) {
- dartEntry.setValueInLibrary(DartEntry.VERIFICATION_ERRORS, librarySource, task.errors);
- ChangeNoticeImpl notice = _getNotice(source);
- notice.setErrors(dartEntry.allErrors, dartEntry.getValue(SourceEntry.LINE_INFO));
- } else {
- dartEntry.recordVerificationErrorInLibrary(librarySource, thrownException);
- }
- } else {
- _logInformation2("Generated errors discarded for ${_debuggingString(source)}; sourceTime = ${sourceTime}, resultTime = ${resultTime}, cacheTime = ${dartEntry.modificationTime}", thrownException);
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the source
- // will be re-verified using the up-to-date sources.
- //
- // dartCopy.setState(DartEntry.VERIFICATION_ERRORS, librarySource, CacheState.INVALID);
- _removeFromParts(source, dartEntry);
- dartEntry.invalidateAllInformation();
- dartEntry.modificationTime = sourceTime;
- _cache.removedAst(source);
- _workManager.add(source, SourcePriority.UNKNOWN);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-verify the source until there's a good chance
- // that we'll be able to do so without error.
- //
- dartEntry.recordVerificationErrorInLibrary(librarySource, thrownException);
- }
- }
if (thrownException != null) {
+ dartEntry.recordVerificationErrorInLibrary(librarySource, thrownException);
throw new AnalysisException('<rethrow>', thrownException);
}
+ dartEntry.setValueInLibrary(
+ DartEntry.VERIFICATION_ERRORS,
+ librarySource,
+ task.errors);
+ ChangeNoticeImpl notice = _getNotice(source);
+ LineInfo lineInfo = dartEntry.getValue(SourceEntry.LINE_INFO);
+ notice.setErrors(dartEntry.allErrors, lineInfo);
return dartEntry;
}
/**
- * Record the results produced by performing a [GenerateDartHintsTask]. If the results were
- * computed from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @return an entry containing the computed results
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
DartEntry _recordGenerateDartHintsTask(GenerateDartHintsTask task) {
Source librarySource = task.libraryElement.source;
@@ -4040,78 +3992,31 @@ class AnalysisContextImpl implements InternalAnalysisContext {
DartEntry libraryEntry = null;
HashMap<Source, TimestampedData<List<AnalysisError>>> hintMap = task.hintMap;
if (hintMap == null) {
- // We don't have any information about which sources to mark as invalid other than the library
- // source.
- SourceEntry sourceEntry = _cache.get(librarySource);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(librarySource);
- } else if (sourceEntry is! DartEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent a Dart file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to generate hints for non-Dart file as a Dart file: ${librarySource.fullName}");
- }
+ // We don't have any information about which sources to mark as invalid
+ // other than the library source.
+ DartEntry libraryEntry = _cache.get(librarySource);
if (thrownException == null) {
- thrownException = new CaughtException(new AnalysisException("GenerateDartHintsTask returned a null hint map without throwing an exception: ${librarySource.fullName}"), null);
+ String message = "GenerateDartHintsTask returned a null hint map "
+ "without throwing an exception: ${librarySource.fullName}";
+ thrownException = new CaughtException(new AnalysisException(message), null);
}
- (sourceEntry as DartEntry).recordHintErrorInLibrary(librarySource, thrownException);
+ libraryEntry.recordHintErrorInLibrary(librarySource, thrownException);
throw new AnalysisException('<rethrow>', thrownException);
}
- for (MapEntry<Source, TimestampedData<List<AnalysisError>>> entry in getMapEntrySet(hintMap)) {
- Source unitSource = entry.getKey();
- TimestampedData<List<AnalysisError>> results = entry.getValue();
- SourceEntry sourceEntry = _cache.get(unitSource);
- if (sourceEntry is! DartEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent a Dart file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to parse non-Dart file as a Dart file: ${unitSource.fullName}");
- }
- DartEntry dartEntry = sourceEntry;
+ hintMap.forEach((Source unitSource, TimestampedData<List<AnalysisError>> results) {
+ DartEntry dartEntry = _cache.get(unitSource);
if (unitSource == librarySource) {
libraryEntry = dartEntry;
}
- int sourceTime = getModificationStamp(unitSource);
- int resultTime = results.modificationTime;
- if (sourceTime == resultTime) {
- if (dartEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(unitSource);
- dartEntry = _getReadableDartEntry(unitSource);
- if (dartEntry == null) {
- throw new AnalysisException("A Dart file became a non-Dart file: ${unitSource.fullName}");
- }
- }
- if (thrownException == null) {
- dartEntry.setValueInLibrary(DartEntry.HINTS, librarySource, results.data);
- ChangeNoticeImpl notice = _getNotice(unitSource);
- notice.setErrors(dartEntry.allErrors, dartEntry.getValue(SourceEntry.LINE_INFO));
- } else {
- dartEntry.recordHintErrorInLibrary(librarySource, thrownException);
- }
+ if (thrownException == null) {
+ dartEntry.setValueInLibrary(DartEntry.HINTS, librarySource, results.data);
+ ChangeNoticeImpl notice = _getNotice(unitSource);
+ LineInfo lineInfo = dartEntry.getValue(SourceEntry.LINE_INFO);
+ notice.setErrors(dartEntry.allErrors, lineInfo);
} else {
- _logInformation2("Generated hints discarded for ${_debuggingString(unitSource)}; sourceTime = ${sourceTime}, resultTime = ${resultTime}, cacheTime = ${dartEntry.modificationTime}", thrownException);
- if (dartEntry.getStateInLibrary(DartEntry.HINTS, librarySource) == CacheState.IN_PROCESS) {
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- // dartCopy.setState(DartEntry.HINTS, librarySource, CacheState.INVALID);
- _removeFromParts(unitSource, dartEntry);
- dartEntry.invalidateAllInformation();
- dartEntry.modificationTime = sourceTime;
- _cache.removedAst(unitSource);
- _workManager.add(unitSource, SourcePriority.UNKNOWN);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- dartEntry.recordHintErrorInLibrary(librarySource, thrownException);
- }
- }
+ dartEntry.recordHintErrorInLibrary(librarySource, thrownException);
}
- }
+ });
if (thrownException != null) {
throw new AnalysisException('<rethrow>', thrownException);
}
@@ -4119,32 +4024,23 @@ class AnalysisContextImpl implements InternalAnalysisContext {
}
/**
- * Record the results produced by performing a [GetContentTask].
- *
- * @param task the task that was performed
- * @return an entry containing the computed results
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
SourceEntry _recordGetContentsTask(GetContentTask task) {
if (!task.isComplete) {
return null;
}
Source source = task.source;
- CaughtException thrownException = task.exception;
SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- }
- if (thrownException == null) {
- sourceEntry.modificationTime = task.modificationTime;
- sourceEntry.setValue(SourceEntry.CONTENT, task.content);
- } else {
+ CaughtException thrownException = task.exception;
+ if (thrownException != null) {
sourceEntry.recordContentError(thrownException);
_workManager.remove(source);
- }
- if (thrownException != null) {
throw new AnalysisException('<rethrow>', thrownException);
}
+ sourceEntry.modificationTime = task.modificationTime;
+ sourceEntry.setValue(SourceEntry.CONTENT, task.content);
return sourceEntry;
}
@@ -4160,680 +4056,253 @@ class AnalysisContextImpl implements InternalAnalysisContext {
if (unit != null) {
ChangeNoticeImpl notice = _getNotice(task.source);
notice.compilationUnit = unit;
- _incrementalAnalysisCache = IncrementalAnalysisCache.cacheResult(task.cache, unit);
+ _incrementalAnalysisCache = IncrementalAnalysisCache.cacheResult(
+ task.cache,
+ unit);
}
return null;
}
/**
- * Record the results produced by performing a [ParseDartTask]. If the results were computed
- * from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @return an entry containing the computed results
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
DartEntry _recordParseDartTaskResults(ParseDartTask task) {
Source source = task.source;
+ DartEntry dartEntry = _cache.get(source);
+ _removeFromParts(source, dartEntry);
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- } else if (sourceEntry is! DartEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent a Dart file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to parse non-Dart file as a Dart file: ${source.fullName}");
- }
- DartEntry dartEntry = sourceEntry as DartEntry;
- int sourceTime = getModificationStamp(source);
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (dartEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(source);
- dartEntry = _getReadableDartEntry(source);
- if (dartEntry == null) {
- throw new AnalysisException("A Dart file became a non-Dart file: ${source.fullName}");
- }
- }
+ if (thrownException != null) {
_removeFromParts(source, dartEntry);
- if (thrownException == null) {
- if (task.hasNonPartOfDirective) {
- dartEntry.setValue(DartEntry.SOURCE_KIND, SourceKind.LIBRARY);
- dartEntry.containingLibrary = source;
- _workManager.add(source, SourcePriority.LIBRARY);
- } else if (task.hasPartOfDirective) {
- dartEntry.setValue(DartEntry.SOURCE_KIND, SourceKind.PART);
- dartEntry.removeContainingLibrary(source);
- _workManager.add(source, SourcePriority.NORMAL_PART);
- } else {
- // The file contains no directives.
- List<Source> containingLibraries = dartEntry.containingLibraries;
- if (containingLibraries.length > 1 || (containingLibraries.length == 1 && containingLibraries[0] != source)) {
- dartEntry.setValue(DartEntry.SOURCE_KIND, SourceKind.PART);
- dartEntry.removeContainingLibrary(source);
- _workManager.add(source, SourcePriority.NORMAL_PART);
- } else {
- dartEntry.setValue(DartEntry.SOURCE_KIND, SourceKind.LIBRARY);
- dartEntry.containingLibrary = source;
- _workManager.add(source, SourcePriority.LIBRARY);
- }
- }
- List<Source> newParts = task.includedSources;
- for (int i = 0; i < newParts.length; i++) {
- Source partSource = newParts[i];
- DartEntry partEntry = _getReadableDartEntry(partSource);
- if (partEntry != null && !identical(partEntry, dartEntry)) {
- // TODO(brianwilkerson) Change the kind of the "part" if it was marked as a library
- // and it has no directives.
- partEntry.addContainingLibrary(source);
- }
- }
- dartEntry.setValue(DartEntry.PARSED_UNIT, task.compilationUnit);
- dartEntry.setValue(DartEntry.PARSE_ERRORS, task.errors);
- dartEntry.setValue(DartEntry.EXPORTED_LIBRARIES, task.exportedSources);
- dartEntry.setValue(DartEntry.IMPORTED_LIBRARIES, task.importedSources);
- dartEntry.setValue(DartEntry.INCLUDED_PARTS, newParts);
- _cache.storedAst(source);
- ChangeNoticeImpl notice = _getNotice(source);
- notice.setErrors(dartEntry.allErrors, task.lineInfo);
- // Verify that the incrementally parsed and resolved unit in the incremental cache
- // is structurally equivalent to the fully parsed unit
- _incrementalAnalysisCache = IncrementalAnalysisCache.verifyStructure(_incrementalAnalysisCache, source, task.compilationUnit);
- } else {
- _removeFromParts(source, dartEntry);
- dartEntry.recordParseError(thrownException);
- _cache.removedAst(source);
- }
+ dartEntry.recordParseError(thrownException);
+ _cache.removedAst(source);
+ throw new AnalysisException('<rethrow>', thrownException);
+ }
+ if (task.hasNonPartOfDirective) {
+ dartEntry.setValue(DartEntry.SOURCE_KIND, SourceKind.LIBRARY);
+ dartEntry.containingLibrary = source;
+ _workManager.add(source, SourcePriority.LIBRARY);
+ } else if (task.hasPartOfDirective) {
+ dartEntry.setValue(DartEntry.SOURCE_KIND, SourceKind.PART);
+ dartEntry.removeContainingLibrary(source);
+ _workManager.add(source, SourcePriority.NORMAL_PART);
} else {
- _logInformation2("Parse results discarded for ${_debuggingString(source)}; sourceTime = ${sourceTime}, resultTime = ${resultTime}, cacheTime = ${dartEntry.modificationTime}", thrownException);
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- // dartCopy.recordParseNotInProcess();
- _removeFromParts(source, dartEntry);
- dartEntry.invalidateAllInformation();
- dartEntry.modificationTime = sourceTime;
- _cache.removedAst(source);
- _workManager.add(source, SourcePriority.UNKNOWN);
+ // The file contains no directives.
+ List<Source> containingLibraries = dartEntry.containingLibraries;
+ if (containingLibraries.length > 1
+ || (containingLibraries.length == 1
+ && containingLibraries[0] != source)) {
+ dartEntry.setValue(DartEntry.SOURCE_KIND, SourceKind.PART);
+ dartEntry.removeContainingLibrary(source);
+ _workManager.add(source, SourcePriority.NORMAL_PART);
} else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- dartEntry.recordParseError(thrownException);
+ dartEntry.setValue(DartEntry.SOURCE_KIND, SourceKind.LIBRARY);
+ dartEntry.containingLibrary = source;
+ _workManager.add(source, SourcePriority.LIBRARY);
}
}
- if (thrownException != null) {
- throw new AnalysisException('<rethrow>', thrownException);
- }
+ List<Source> newParts = task.includedSources;
+ for (int i = 0; i < newParts.length; i++) {
+ Source partSource = newParts[i];
+ DartEntry partEntry = _getReadableDartEntry(partSource);
+ if (partEntry != null && !identical(partEntry, dartEntry)) {
+ // TODO(brianwilkerson) Change the kind of the "part" if it was marked
+ // as a library and it has no directives.
+ partEntry.addContainingLibrary(source);
+ }
+ }
+ dartEntry.setValue(DartEntry.PARSED_UNIT, task.compilationUnit);
+ dartEntry.setValue(DartEntry.PARSE_ERRORS, task.errors);
+ dartEntry.setValue(DartEntry.EXPORTED_LIBRARIES, task.exportedSources);
+ dartEntry.setValue(DartEntry.IMPORTED_LIBRARIES, task.importedSources);
+ dartEntry.setValue(DartEntry.INCLUDED_PARTS, newParts);
+ _cache.storedAst(source);
+ ChangeNoticeImpl notice = _getNotice(source);
+ notice.setErrors(dartEntry.allErrors, task.lineInfo);
+ // Verify that the incrementally parsed and resolved unit in the incremental
+ // cache is structurally equivalent to the fully parsed unit
+ _incrementalAnalysisCache = IncrementalAnalysisCache.verifyStructure(
+ _incrementalAnalysisCache,
+ source,
+ task.compilationUnit);
return dartEntry;
}
/**
- * Record the results produced by performing a [ParseHtmlTask]. If the results were computed
- * from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @return an entry containing the computed results
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
HtmlEntry _recordParseHtmlTaskResults(ParseHtmlTask task) {
Source source = task.source;
+ HtmlEntry htmlEntry = _cache.get(source);
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- } else if (sourceEntry is! HtmlEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent an HTML file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to parse non-HTML file as a HTML file: ${source.fullName}");
- }
- HtmlEntry htmlEntry = sourceEntry;
- int sourceTime = getModificationStamp(source);
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (htmlEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(source);
- htmlEntry = _getReadableHtmlEntry(source);
- if (htmlEntry == null) {
- throw new AnalysisException("An HTML file became a non-HTML file: ${source.fullName}");
- }
- }
- if (thrownException == null) {
- LineInfo lineInfo = task.lineInfo;
- ht.HtmlUnit unit = task.htmlUnit;
- htmlEntry.setValue(SourceEntry.LINE_INFO, lineInfo);
- htmlEntry.setValue(HtmlEntry.PARSED_UNIT, unit);
- htmlEntry.setValue(HtmlEntry.PARSE_ERRORS, task.errors);
- htmlEntry.setValue(HtmlEntry.REFERENCED_LIBRARIES, task.referencedLibraries);
- _cache.storedAst(source);
- ChangeNoticeImpl notice = _getNotice(source);
- notice.setErrors(htmlEntry.allErrors, lineInfo);
- } else {
- htmlEntry.recordParseError(thrownException);
- _cache.removedAst(source);
- }
- } else {
- _logInformation2("Parse results discarded for ${_debuggingString(source)}; sourceTime = ${sourceTime}, resultTime = ${resultTime}, cacheTime = ${htmlEntry.modificationTime}", thrownException);
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- // if (htmlCopy.getState(SourceEntry.LINE_INFO) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(SourceEntry.LINE_INFO, CacheState.INVALID);
- // }
- // if (htmlCopy.getState(HtmlEntry.PARSED_UNIT) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.PARSED_UNIT, CacheState.INVALID);
- // }
- // if (htmlCopy.getState(HtmlEntry.REFERENCED_LIBRARIES) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.REFERENCED_LIBRARIES, CacheState.INVALID);
- // }
- htmlEntry.invalidateAllInformation();
- htmlEntry.modificationTime = sourceTime;
- _cache.removedAst(source);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- htmlEntry.recordParseError(thrownException);
- }
- }
if (thrownException != null) {
+ htmlEntry.recordParseError(thrownException);
+ _cache.removedAst(source);
throw new AnalysisException('<rethrow>', thrownException);
}
+ LineInfo lineInfo = task.lineInfo;
+ htmlEntry.setValue(SourceEntry.LINE_INFO, lineInfo);
+ htmlEntry.setValue(HtmlEntry.PARSED_UNIT, task.htmlUnit);
+ htmlEntry.setValue(HtmlEntry.PARSE_ERRORS, task.errors);
+ htmlEntry.setValue(HtmlEntry.REFERENCED_LIBRARIES, task.referencedLibraries);
+ _cache.storedAst(source);
+ ChangeNoticeImpl notice = _getNotice(source);
+ notice.setErrors(htmlEntry.allErrors, lineInfo);
return htmlEntry;
}
/**
- * Record the results produced by performing a [PolymerBuildHtmlTask]. If the results were
- * computed from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
HtmlEntry _recordPolymerBuildHtmlTaskResults(PolymerBuildHtmlTask task) {
Source source = task.source;
+ HtmlEntry htmlEntry = _cache.get(source);
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- } else if (sourceEntry is! HtmlEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent an HTML file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to resolve non-HTML file as an HTML file: ${source.fullName}");
- }
- HtmlEntry htmlEntry = sourceEntry;
- int sourceTime = getModificationStamp(source);
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (htmlEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(source);
- htmlEntry = _getReadableHtmlEntry(source);
- if (htmlEntry == null) {
- throw new AnalysisException("An HTML file became a non-HTML file: ${source.fullName}");
- }
- }
- if (thrownException == null) {
- htmlEntry.setValue(HtmlEntry.POLYMER_BUILD_ERRORS, task.errors);
- // notify about errors
- ChangeNoticeImpl notice = _getNotice(source);
- notice.setErrors(htmlEntry.allErrors, htmlEntry.getValue(SourceEntry.LINE_INFO));
- } else {
- htmlEntry.recordResolutionError(thrownException);
- }
- } else {
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- htmlEntry.invalidateAllInformation();
- htmlEntry.modificationTime = sourceTime;
- _cache.removedAst(source);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- htmlEntry.recordResolutionError(thrownException);
- }
- }
if (thrownException != null) {
+ htmlEntry.recordResolutionError(thrownException);
throw new AnalysisException('<rethrow>', thrownException);
}
+ htmlEntry.setValue(HtmlEntry.POLYMER_BUILD_ERRORS, task.errors);
+ // notify about errors
+ ChangeNoticeImpl notice = _getNotice(source);
+ LineInfo lineInfo = htmlEntry.getValue(SourceEntry.LINE_INFO);
+ notice.setErrors(htmlEntry.allErrors, lineInfo);
return htmlEntry;
}
/**
- * Record the results produced by performing a [PolymerResolveHtmlTask]. If the results were
- * computed from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
HtmlEntry _recordPolymerResolveHtmlTaskResults(PolymerResolveHtmlTask task) {
Source source = task.source;
+ HtmlEntry htmlEntry = _cache.get(source);
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- } else if (sourceEntry is! HtmlEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent an HTML file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to resolve non-HTML file as an HTML file: ${source.fullName}");
- }
- HtmlEntry htmlEntry = sourceEntry;
- int sourceTime = getModificationStamp(source);
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (htmlEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(source);
- htmlEntry = _getReadableHtmlEntry(source);
- if (htmlEntry == null) {
- throw new AnalysisException("An HTML file became a non-HTML file: ${source.fullName}");
- }
- }
- if (thrownException == null) {
- htmlEntry.setValue(HtmlEntry.POLYMER_RESOLUTION_ERRORS, task.errors);
- // notify about errors
- ChangeNoticeImpl notice = _getNotice(source);
- notice.setErrors(htmlEntry.allErrors, htmlEntry.getValue(SourceEntry.LINE_INFO));
- } else {
- htmlEntry.recordResolutionError(thrownException);
- }
- } else {
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- htmlEntry.invalidateAllInformation();
- htmlEntry.modificationTime = sourceTime;
- _cache.removedAst(source);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- htmlEntry.recordResolutionError(thrownException);
- }
- }
if (thrownException != null) {
+ htmlEntry.recordResolutionError(thrownException);
throw new AnalysisException('<rethrow>', thrownException);
}
+ htmlEntry.setValue(HtmlEntry.POLYMER_RESOLUTION_ERRORS, task.errors);
+ // notify about errors
+ ChangeNoticeImpl notice = _getNotice(source);
+ LineInfo lineInfo = htmlEntry.getValue(SourceEntry.LINE_INFO);
+ notice.setErrors(htmlEntry.allErrors, lineInfo);
return htmlEntry;
}
/**
- * Record the results produced by performing a [ResolveAngularComponentTemplateTask]. If the
- * results were computed from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
HtmlEntry _recordResolveAngularComponentTemplateTaskResults(ResolveAngularComponentTemplateTask task) {
Source source = task.source;
+ HtmlEntry htmlEntry = _cache.get(source);
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- } else if (sourceEntry is! HtmlEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent an HTML file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to resolve non-HTML file as an HTML file: ${source.fullName}");
- }
- HtmlEntry htmlEntry = sourceEntry;
- int sourceTime = getModificationStamp(source);
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (htmlEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(source);
- htmlEntry = _getReadableHtmlEntry(source);
- if (htmlEntry == null) {
- throw new AnalysisException("An HTML file became a non-HTML file: ${source.fullName}");
- }
- }
- if (thrownException == null) {
- htmlEntry.setValue(HtmlEntry.ANGULAR_ERRORS, task.resolutionErrors);
- // notify about errors
- ChangeNoticeImpl notice = _getNotice(source);
- notice.htmlUnit = task.resolvedUnit;
- notice.setErrors(htmlEntry.allErrors, htmlEntry.getValue(SourceEntry.LINE_INFO));
- } else {
- htmlEntry.recordResolutionError(thrownException);
- }
- } else {
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- // if (htmlCopy.getState(HtmlEntry.ANGULAR_ERRORS) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.ANGULAR_ERRORS, CacheState.INVALID);
- // }
- // if (htmlCopy.getState(HtmlEntry.ELEMENT) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.ELEMENT, CacheState.INVALID);
- // }
- // if (htmlCopy.getState(HtmlEntry.RESOLUTION_ERRORS) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.RESOLUTION_ERRORS, CacheState.INVALID);
- // }
- htmlEntry.invalidateAllInformation();
- htmlEntry.modificationTime = sourceTime;
- _cache.removedAst(source);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- htmlEntry.recordResolutionError(thrownException);
- }
- }
if (thrownException != null) {
+ htmlEntry.recordResolutionError(thrownException);
throw new AnalysisException('<rethrow>', thrownException);
}
+ htmlEntry.setValue(HtmlEntry.ANGULAR_ERRORS, task.resolutionErrors);
+ // notify about errors
+ ChangeNoticeImpl notice = _getNotice(source);
+ notice.htmlUnit = task.resolvedUnit;
+ LineInfo lineInfo = htmlEntry.getValue(SourceEntry.LINE_INFO);
+ notice.setErrors(htmlEntry.allErrors, lineInfo);
return htmlEntry;
}
/**
- * Record the results produced by performing a [ResolveAngularEntryHtmlTask]. If the results
- * were computed from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
HtmlEntry _recordResolveAngularEntryHtmlTaskResults(ResolveAngularEntryHtmlTask task) {
Source source = task.source;
+ HtmlEntry htmlEntry = _cache.get(source);
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- } else if (sourceEntry is! HtmlEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent an HTML file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to resolve non-HTML file as an HTML file: ${source.fullName}");
- }
- HtmlEntry htmlEntry = sourceEntry as HtmlEntry;
- int sourceTime = getModificationStamp(source);
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (htmlEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(source);
- htmlEntry = _getReadableHtmlEntry(source);
- if (htmlEntry == null) {
- throw new AnalysisException("An HTML file became a non-HTML file: ${source.fullName}");
- }
- }
- if (thrownException == null) {
- htmlEntry.setValue(HtmlEntry.RESOLVED_UNIT, task.resolvedUnit);
- _recordAngularEntryPoint(htmlEntry, task);
- _cache.storedAst(source);
- ChangeNoticeImpl notice = _getNotice(source);
- notice.htmlUnit = task.resolvedUnit;
- notice.setErrors(htmlEntry.allErrors, htmlEntry.getValue(SourceEntry.LINE_INFO));
- } else {
- htmlEntry.recordResolutionError(thrownException);
- }
- } else {
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- // if (htmlCopy.getState(HtmlEntry.ANGULAR_ERRORS) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.ANGULAR_ERRORS, CacheState.INVALID);
- // }
- // if (htmlCopy.getState(HtmlEntry.ELEMENT) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.ELEMENT, CacheState.INVALID);
- // }
- // if (htmlCopy.getState(HtmlEntry.RESOLUTION_ERRORS) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.RESOLUTION_ERRORS, CacheState.INVALID);
- // }
- htmlEntry.invalidateAllInformation();
- htmlEntry.modificationTime = sourceTime;
- _cache.removedAst(source);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- htmlEntry.recordResolutionError(thrownException);
- }
- }
if (thrownException != null) {
+ htmlEntry.recordResolutionError(thrownException);
throw new AnalysisException('<rethrow>', thrownException);
}
+ htmlEntry.setValue(HtmlEntry.RESOLVED_UNIT, task.resolvedUnit);
+ _recordAngularEntryPoint(htmlEntry, task);
+ _cache.storedAst(source);
+ ChangeNoticeImpl notice = _getNotice(source);
+ notice.htmlUnit = task.resolvedUnit;
+ LineInfo lineInfo = htmlEntry.getValue(SourceEntry.LINE_INFO);
+ notice.setErrors(htmlEntry.allErrors, lineInfo);
return htmlEntry;
}
/**
- * Record the results produced by performing a [ResolveDartUnitTask]. If the results were
- * computed from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @return an entry containing the computed results
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
DartEntry _recordResolveDartUnitTaskResults(ResolveDartUnitTask task) {
Source unitSource = task.source;
+ DartEntry dartEntry = _cache.get(unitSource);
Source librarySource = task.librarySource;
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(unitSource);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(unitSource);
- } else if (sourceEntry is! DartEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent a Dart file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to resolve non-Dart file as a Dart file: ${unitSource.fullName}");
- }
- DartEntry dartEntry = sourceEntry as DartEntry;
- int sourceTime = getModificationStamp(unitSource);
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (dartEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(unitSource);
- dartEntry = _getReadableDartEntry(unitSource);
- if (dartEntry == null) {
- throw new AnalysisException("A Dart file became a non-Dart file: ${unitSource.fullName}");
- }
- }
- if (thrownException == null) {
- dartEntry.setValueInLibrary(DartEntry.RESOLVED_UNIT, librarySource, task.resolvedUnit);
- _cache.storedAst(unitSource);
- } else {
- dartEntry.recordResolutionErrorInLibrary(librarySource, thrownException);
- _cache.removedAst(unitSource);
- }
- } else {
- _logInformation2("Resolution results discarded for ${_debuggingString(unitSource)}; sourceTime = ${sourceTime}, resultTime = ${resultTime}, cacheTime = ${dartEntry.modificationTime}", thrownException);
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- // if (dartCopy.getState(DartEntry.RESOLVED_UNIT) == CacheState.IN_PROCESS) {
- // dartCopy.setState(DartEntry.RESOLVED_UNIT, librarySource, CacheState.INVALID);
- // }
- _removeFromParts(unitSource, dartEntry);
- dartEntry.invalidateAllInformation();
- dartEntry.modificationTime = sourceTime;
- _cache.removedAst(unitSource);
- _workManager.add(unitSource, SourcePriority.UNKNOWN);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- dartEntry.recordResolutionErrorInLibrary(librarySource, thrownException);
- }
- }
if (thrownException != null) {
+ dartEntry.recordResolutionErrorInLibrary(librarySource, thrownException);
+ _cache.removedAst(unitSource);
throw new AnalysisException('<rethrow>', thrownException);
}
+ dartEntry.setValueInLibrary(
+ DartEntry.RESOLVED_UNIT,
+ librarySource,
+ task.resolvedUnit);
+ _cache.storedAst(unitSource);
return dartEntry;
}
/**
- * Record the results produced by performing a [ResolveHtmlTask]. If the results were
- * computed from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @return an entry containing the computed results
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
HtmlEntry _recordResolveHtmlTaskResults(ResolveHtmlTask task) {
Source source = task.source;
+ HtmlEntry htmlEntry = _cache.get(source);
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- } else if (sourceEntry is! HtmlEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent an HTML file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to resolve non-HTML file as an HTML file: ${source.fullName}");
- }
- HtmlEntry htmlEntry = sourceEntry;
- int sourceTime = getModificationStamp(source);
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (htmlEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(source);
- htmlEntry = _getReadableHtmlEntry(source);
- if (htmlEntry == null) {
- throw new AnalysisException("An HTML file became a non-HTML file: ${source.fullName}");
- }
- }
- if (thrownException == null) {
- htmlEntry.setState(HtmlEntry.PARSED_UNIT, CacheState.FLUSHED);
- htmlEntry.setValue(HtmlEntry.RESOLVED_UNIT, task.resolvedUnit);
- htmlEntry.setValue(HtmlEntry.ELEMENT, task.element);
- htmlEntry.setValue(HtmlEntry.RESOLUTION_ERRORS, task.resolutionErrors);
- _cache.storedAst(source);
- ChangeNoticeImpl notice = _getNotice(source);
- notice.htmlUnit = task.resolvedUnit;
- notice.setErrors(htmlEntry.allErrors, htmlEntry.getValue(SourceEntry.LINE_INFO));
- } else {
- htmlEntry.recordResolutionError(thrownException);
- _cache.removedAst(source);
- }
- } else {
- _logInformation2("Resolution results discarded for ${_debuggingString(source)}; sourceTime = ${sourceTime}, resultTime = ${resultTime}, cacheTime = ${htmlEntry.modificationTime}", thrownException);
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- // if (htmlCopy.getState(HtmlEntry.ELEMENT) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.ELEMENT, CacheState.INVALID);
- // }
- // if (htmlCopy.getState(HtmlEntry.RESOLUTION_ERRORS) == CacheState.IN_PROCESS) {
- // htmlCopy.setState(HtmlEntry.RESOLUTION_ERRORS, CacheState.INVALID);
- // }
- htmlEntry.invalidateAllInformation();
- htmlEntry.modificationTime = sourceTime;
- _cache.removedAst(source);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- htmlEntry.recordResolutionError(thrownException);
- }
- }
if (thrownException != null) {
+ htmlEntry.recordResolutionError(thrownException);
+ _cache.removedAst(source);
throw new AnalysisException('<rethrow>', thrownException);
}
+ htmlEntry.setState(HtmlEntry.PARSED_UNIT, CacheState.FLUSHED);
+ htmlEntry.setValue(HtmlEntry.RESOLVED_UNIT, task.resolvedUnit);
+ htmlEntry.setValue(HtmlEntry.ELEMENT, task.element);
+ htmlEntry.setValue(HtmlEntry.RESOLUTION_ERRORS, task.resolutionErrors);
+ _cache.storedAst(source);
+ ChangeNoticeImpl notice = _getNotice(source);
+ notice.htmlUnit = task.resolvedUnit;
+ LineInfo lineInfo = htmlEntry.getValue(SourceEntry.LINE_INFO);
+ notice.setErrors(htmlEntry.allErrors, lineInfo);
return htmlEntry;
}
/**
- * Record the results produced by performing a [ScanDartTask]. If the results were computed
- * from data that is now out-of-date, then the results will not be recorded.
- *
- * @param task the task that was performed
- * @return an entry containing the computed results
- * @throws AnalysisException if the results could not be recorded
+ * Record the results produced by performing a [task] and return the cache
+ * entry associated with the results.
*/
DartEntry _recordScanDartTaskResults(ScanDartTask task) {
Source source = task.source;
+ DartEntry dartEntry = _cache.get(source);
CaughtException thrownException = task.exception;
- SourceEntry sourceEntry = _cache.get(source);
- if (sourceEntry == null) {
- throw new ObsoleteSourceAnalysisException(source);
- } else if (sourceEntry is! DartEntry) {
- // This shouldn't be possible because we should never have performed the task if the source
- // didn't represent a Dart file, but check to be safe.
- throw new AnalysisException("Internal error: attempting to parse non-Dart file as a Dart file: ${source.fullName}");
- }
- DartEntry dartEntry = sourceEntry;
- int sourceTime = getModificationStamp(source);
- int resultTime = task.modificationTime;
- if (sourceTime == resultTime) {
- if (dartEntry.modificationTime != sourceTime) {
- // The source has changed without the context being notified. Simulate notification.
- _sourceChanged(source);
- dartEntry = _getReadableDartEntry(source);
- if (dartEntry == null) {
- throw new AnalysisException("A Dart file became a non-Dart file: ${source.fullName}");
- }
- }
- if (thrownException == null) {
- LineInfo lineInfo = task.lineInfo;
- dartEntry.setValue(SourceEntry.LINE_INFO, lineInfo);
- dartEntry.setValue(DartEntry.TOKEN_STREAM, task.tokenStream);
- dartEntry.setValue(DartEntry.SCAN_ERRORS, task.errors);
- _cache.storedAst(source);
- ChangeNoticeImpl notice = _getNotice(source);
- notice.setErrors(dartEntry.allErrors, lineInfo);
- } else {
- _removeFromParts(source, dartEntry);
- dartEntry.recordScanError(thrownException);
- _cache.removedAst(source);
- }
- } else {
- _logInformation2("Scan results discarded for ${_debuggingString(source)}; sourceTime = ${sourceTime}, resultTime = ${resultTime}, cacheTime = ${dartEntry.modificationTime}", thrownException);
- if (thrownException == null || resultTime >= 0) {
- //
- // The analysis was performed on out-of-date sources. Mark the cache so that the sources
- // will be re-analyzed using the up-to-date sources.
- //
- // dartCopy.recordScanNotInProcess();
- _removeFromParts(source, dartEntry);
- dartEntry.invalidateAllInformation();
- dartEntry.modificationTime = sourceTime;
- _cache.removedAst(source);
- _workManager.add(source, SourcePriority.UNKNOWN);
- } else {
- //
- // We could not determine whether the sources were up-to-date or out-of-date. Mark the
- // cache so that we won't attempt to re-analyze the sources until there's a good chance
- // that we'll be able to do so without error.
- //
- dartEntry.recordScanError(thrownException);
- }
- }
if (thrownException != null) {
+ _removeFromParts(source, dartEntry);
+ dartEntry.recordScanError(thrownException);
+ _cache.removedAst(source);
throw new AnalysisException('<rethrow>', thrownException);
}
+ LineInfo lineInfo = task.lineInfo;
+ dartEntry.setValue(SourceEntry.LINE_INFO, lineInfo);
+ dartEntry.setValue(DartEntry.TOKEN_STREAM, task.tokenStream);
+ dartEntry.setValue(DartEntry.SCAN_ERRORS, task.errors);
+ _cache.storedAst(source);
+ ChangeNoticeImpl notice = _getNotice(source);
+ notice.setErrors(dartEntry.allErrors, lineInfo);
return dartEntry;
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698