Index: pkg/analyzer/lib/src/task/dart.dart |
diff --git a/pkg/analyzer/lib/src/task/dart.dart b/pkg/analyzer/lib/src/task/dart.dart |
index 04529717d7faf8ca74d53c29151be749dc797c97..03fbb2e7c0d7d1d705f907d6b696f3b40a2658d9 100644 |
--- a/pkg/analyzer/lib/src/task/dart.dart |
+++ b/pkg/analyzer/lib/src/task/dart.dart |
@@ -23,6 +23,7 @@ import 'package:analyzer/src/generated/sdk.dart'; |
import 'package:analyzer/src/generated/source.dart'; |
import 'package:analyzer/src/task/driver.dart'; |
import 'package:analyzer/src/task/general.dart'; |
+import 'package:analyzer/src/task/html.dart'; |
import 'package:analyzer/src/task/inputs.dart'; |
import 'package:analyzer/src/task/model.dart'; |
import 'package:analyzer/task/dart.dart'; |
@@ -543,11 +544,12 @@ class BuildClassConstructorsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [classElement]. |
*/ |
- static Map<String, TaskInput> buildInputs(ClassElement classElement) { |
- Source librarySource = classElement.library.source; |
- DartType superType = classElement.supertype; |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ ClassElement element = target; |
+ Source librarySource = element.library.source; |
+ DartType superType = element.supertype; |
if (superType is InterfaceType) { |
- if (classElement.isMixinApplication || classElement.mixins.isNotEmpty) { |
+ if (element.isMixinApplication || element.mixins.isNotEmpty) { |
ClassElement superElement = superType.element; |
return <String, TaskInput>{ |
'libraryDep': LIBRARY_ELEMENT5.of(librarySource), |
@@ -751,9 +753,10 @@ class BuildCompilationUnitElementTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the given |
* [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
return <String, TaskInput>{ |
- PARSED_UNIT_INPUT_NAME: PARSED_UNIT.of(target.unit) |
+ PARSED_UNIT_INPUT_NAME: PARSED_UNIT.of(unit.unit) |
}; |
} |
@@ -952,19 +955,20 @@ class BuildDirectiveElementsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given library [libSource]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source libSource) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
return <String, TaskInput>{ |
- LIBRARY_INPUT: LIBRARY_ELEMENT1.of(libSource), |
+ LIBRARY_INPUT: LIBRARY_ELEMENT1.of(source), |
UNIT_INPUT_NAME: |
- RESOLVED_UNIT1.of(new LibrarySpecificUnit(libSource, libSource)), |
+ RESOLVED_UNIT1.of(new LibrarySpecificUnit(source, source)), |
IMPORTS_LIBRARY_ELEMENT_INPUT_NAME: |
- IMPORTED_LIBRARIES.of(libSource).toMapOf(LIBRARY_ELEMENT1), |
+ IMPORTED_LIBRARIES.of(source).toMapOf(LIBRARY_ELEMENT1), |
EXPORTS_LIBRARY_ELEMENT_INPUT_NAME: |
- EXPORTED_LIBRARIES.of(libSource).toMapOf(LIBRARY_ELEMENT1), |
+ EXPORTED_LIBRARIES.of(source).toMapOf(LIBRARY_ELEMENT1), |
IMPORTS_SOURCE_KIND_INPUT_NAME: |
- IMPORTED_LIBRARIES.of(libSource).toMapOf(SOURCE_KIND), |
+ IMPORTED_LIBRARIES.of(source).toMapOf(SOURCE_KIND), |
EXPORTS_SOURCE_KIND_INPUT_NAME: |
- EXPORTED_LIBRARIES.of(libSource).toMapOf(SOURCE_KIND) |
+ EXPORTED_LIBRARIES.of(source).toMapOf(SOURCE_KIND) |
}; |
} |
@@ -1057,10 +1061,11 @@ class BuildEnumMemberElementsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
return <String, TaskInput>{ |
TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request), |
- UNIT_INPUT: RESOLVED_UNIT1.of(target) |
+ UNIT_INPUT: RESOLVED_UNIT1.of(unit) |
}; |
} |
@@ -1126,11 +1131,12 @@ class BuildExportNamespaceTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given library [libSource]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source libSource) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
return <String, TaskInput>{ |
- LIBRARY_INPUT: LIBRARY_ELEMENT3.of(libSource), |
+ LIBRARY_INPUT: LIBRARY_ELEMENT3.of(source), |
'exportsLibraryPublicNamespace': |
- EXPORT_SOURCE_CLOSURE.of(libSource).toMapOf(LIBRARY_ELEMENT3) |
+ EXPORT_SOURCE_CLOSURE.of(source).toMapOf(LIBRARY_ELEMENT3) |
}; |
} |
@@ -1211,12 +1217,13 @@ class BuildFunctionTypeAliasesTask extends SourceBasedAnalysisTask { |
* given [target]. |
*/ |
static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
+ LibrarySpecificUnit unit = target; |
return <String, TaskInput>{ |
TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request), |
'importsExportNamespace': |
- IMPORTED_LIBRARIES.of(target.library).toMapOf(LIBRARY_ELEMENT4), |
- LIBRARY_INPUT: LIBRARY_ELEMENT4.of(target.library), |
- UNIT_INPUT: RESOLVED_UNIT2.of(target) |
+ IMPORTED_LIBRARIES.of(unit.library).toMapOf(LIBRARY_ELEMENT4), |
+ LIBRARY_INPUT: LIBRARY_ELEMENT4.of(unit.library), |
+ UNIT_INPUT: RESOLVED_UNIT2.of(unit) |
}; |
} |
@@ -1265,11 +1272,11 @@ class BuildLibraryConstructorsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source libSource) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
return <String, TaskInput>{ |
- LIBRARY_INPUT: LIBRARY_ELEMENT5.of(libSource), |
- 'resolvedConstructors': |
- CLASS_ELEMENTS.of(libSource).toListOf(CONSTRUCTORS), |
+ LIBRARY_INPUT: LIBRARY_ELEMENT5.of(source), |
+ 'resolvedConstructors': CLASS_ELEMENTS.of(source).toListOf(CONSTRUCTORS), |
}; |
} |
@@ -1537,12 +1544,13 @@ class BuildLibraryElementTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the given |
* [libSource]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source libSource) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
return <String, TaskInput>{ |
DEFINING_UNIT_INPUT: |
- RESOLVED_UNIT1.of(new LibrarySpecificUnit(libSource, libSource)), |
- PARTS_UNIT_INPUT: INCLUDED_PARTS.of(libSource).toList((Source unit) { |
- return RESOLVED_UNIT1.of(new LibrarySpecificUnit(libSource, unit)); |
+ RESOLVED_UNIT1.of(new LibrarySpecificUnit(source, source)), |
+ PARTS_UNIT_INPUT: INCLUDED_PARTS.of(source).toList((Source unit) { |
+ return RESOLVED_UNIT1.of(new LibrarySpecificUnit(source, unit)); |
}) |
}; |
} |
@@ -1592,8 +1600,9 @@ class BuildPublicNamespaceTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given library [libSource]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source libSource) { |
- return <String, TaskInput>{LIBRARY_INPUT: LIBRARY_ELEMENT2.of(libSource)}; |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
+ return <String, TaskInput>{LIBRARY_INPUT: LIBRARY_ELEMENT2.of(source)}; |
} |
/** |
@@ -1664,11 +1673,12 @@ class BuildSourceClosuresTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given library [libSource]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source libSource) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
return <String, TaskInput>{ |
- IMPORT_INPUT: new _ImportSourceClosureTaskInput(libSource), |
- EXPORT_INPUT: new _ExportSourceClosureTaskInput(libSource), |
- IMPORT_EXPORT_INPUT: new _ImportExportSourceClosureTaskInput(libSource) |
+ IMPORT_INPUT: new _ImportSourceClosureTaskInput(source), |
+ EXPORT_INPUT: new _ExportSourceClosureTaskInput(source), |
+ IMPORT_EXPORT_INPUT: new _ImportExportSourceClosureTaskInput(source) |
}; |
} |
@@ -1725,8 +1735,9 @@ class BuildTypeProviderTask extends SourceBasedAnalysisTask { |
outputs[TYPE_PROVIDER] = typeProvider; |
} |
- static Map<String, TaskInput> buildInputs(AnalysisContextTarget target) { |
- SourceFactory sourceFactory = target.context.sourceFactory; |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ AnalysisContextTarget contextTarget = target; |
+ SourceFactory sourceFactory = contextTarget.context.sourceFactory; |
Source coreSource = sourceFactory.forUri(DartSdk.DART_CORE); |
Source asyncSource = sourceFactory.forUri(DartSdk.DART_ASYNC); |
return <String, TaskInput>{ |
@@ -1739,7 +1750,7 @@ class BuildTypeProviderTask extends SourceBasedAnalysisTask { |
* Create a [BuildTypeProviderTask] based on the given [context]. |
*/ |
static BuildTypeProviderTask createTask( |
- AnalysisContext context, AnalysisContextTarget target) { |
+ AnalysisContext context, AnalysisTarget target) { |
return new BuildTypeProviderTask(context, target); |
} |
} |
@@ -1798,9 +1809,9 @@ class ComputeConstantDependenciesTask extends ConstantEvaluationAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(ConstantEvaluationTarget target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
if (target is Element) { |
- CompilationUnitElementImpl unit = (target as Element) |
+ CompilationUnitElementImpl unit = target |
.getAncestor((Element element) => element is CompilationUnitElement); |
return <String, TaskInput>{ |
UNIT_INPUT: RESOLVED_UNIT6 |
@@ -1813,11 +1824,9 @@ class ComputeConstantDependenciesTask extends ConstantEvaluationAnalysisTask { |
.of(new LibrarySpecificUnit(target.librarySource, target.source)), |
TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) |
}; |
- } else { |
- // Should never happen. |
- assert(false); |
- return <String, TaskInput>{}; |
} |
+ throw new AnalysisException( |
+ 'Cannot build inputs for a ${target.runtimeType}'); |
} |
/** |
@@ -1901,10 +1910,11 @@ class ComputeConstantValueTask extends ConstantEvaluationAnalysisTask { |
* input descriptors describing those inputs for a task with the given |
* [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(ConstantEvaluationTarget target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ ConstantEvaluationTarget evaluationTarget = target; |
return <String, TaskInput>{ |
DEPENDENCIES_INPUT: |
- CONSTANT_DEPENDENCIES.of(target).toListOf(CONSTANT_VALUE), |
+ CONSTANT_DEPENDENCIES.of(evaluationTarget).toListOf(CONSTANT_VALUE), |
TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) |
}; |
} |
@@ -1984,7 +1994,7 @@ class ContainingLibrariesTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
return <String, TaskInput>{}; |
} |
@@ -2066,16 +2076,17 @@ class DartErrorsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
return <String, TaskInput>{ |
- BUILD_DIRECTIVES_ERRORS_INPUT: BUILD_DIRECTIVES_ERRORS.of(target), |
- BUILD_LIBRARY_ERRORS_INPUT: BUILD_LIBRARY_ERRORS.of(target), |
- PARSE_ERRORS_INPUT: PARSE_ERRORS.of(target), |
- SCAN_ERRORS_INPUT: SCAN_ERRORS.of(target), |
+ BUILD_DIRECTIVES_ERRORS_INPUT: BUILD_DIRECTIVES_ERRORS.of(source), |
+ BUILD_LIBRARY_ERRORS_INPUT: BUILD_LIBRARY_ERRORS.of(source), |
+ PARSE_ERRORS_INPUT: PARSE_ERRORS.of(source), |
+ SCAN_ERRORS_INPUT: SCAN_ERRORS.of(source), |
LIBRARY_UNIT_ERRORS_INPUT: CONTAINING_LIBRARIES |
- .of(target) |
+ .of(source) |
.toMap((Source library) { |
- LibrarySpecificUnit unit = new LibrarySpecificUnit(library, target); |
+ LibrarySpecificUnit unit = new LibrarySpecificUnit(library, source); |
return LIBRARY_UNIT_ERRORS.of(unit); |
}) |
}; |
@@ -2131,12 +2142,13 @@ class EvaluateUnitConstantsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
return <String, TaskInput>{ |
- 'libraryElement': LIBRARY_ELEMENT.of(target.library), |
- UNIT_INPUT: RESOLVED_UNIT6.of(target), |
+ 'libraryElement': LIBRARY_ELEMENT.of(unit.library), |
+ UNIT_INPUT: RESOLVED_UNIT6.of(unit), |
CONSTANT_VALUES: |
- COMPILATION_UNIT_CONSTANTS.of(target).toListOf(CONSTANT_VALUE) |
+ COMPILATION_UNIT_CONSTANTS.of(unit).toListOf(CONSTANT_VALUE) |
}; |
} |
@@ -2145,7 +2157,7 @@ class EvaluateUnitConstantsTask extends SourceBasedAnalysisTask { |
* the given [context]. |
*/ |
static EvaluateUnitConstantsTask createTask( |
- AnalysisContext context, LibrarySpecificUnit target) { |
+ AnalysisContext context, AnalysisTarget target) { |
return new EvaluateUnitConstantsTask(context, target); |
} |
} |
@@ -2298,8 +2310,9 @@ class GatherUsedImportedElementsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
- return <String, TaskInput>{UNIT_INPUT: RESOLVED_UNIT6.of(target)}; |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
+ return <String, TaskInput>{UNIT_INPUT: RESOLVED_UNIT6.of(unit)}; |
} |
/** |
@@ -2307,7 +2320,7 @@ class GatherUsedImportedElementsTask extends SourceBasedAnalysisTask { |
* the given [context]. |
*/ |
static GatherUsedImportedElementsTask createTask( |
- AnalysisContext context, LibrarySpecificUnit target) { |
+ AnalysisContext context, AnalysisTarget target) { |
return new GatherUsedImportedElementsTask(context, target); |
} |
} |
@@ -2357,8 +2370,9 @@ class GatherUsedLocalElementsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
- return <String, TaskInput>{UNIT_INPUT: RESOLVED_UNIT6.of(target)}; |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
+ return <String, TaskInput>{UNIT_INPUT: RESOLVED_UNIT6.of(unit)}; |
} |
/** |
@@ -2366,7 +2380,7 @@ class GatherUsedLocalElementsTask extends SourceBasedAnalysisTask { |
* the given [context]. |
*/ |
static GatherUsedLocalElementsTask createTask( |
- AnalysisContext context, LibrarySpecificUnit target) { |
+ AnalysisContext context, AnalysisTarget target) { |
return new GatherUsedLocalElementsTask(context, target); |
} |
} |
@@ -2473,10 +2487,11 @@ class GenerateHintsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
- Source libSource = target.library; |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
+ Source libSource = unit.library; |
return <String, TaskInput>{ |
- RESOLVED_UNIT_INPUT: RESOLVED_UNIT.of(target), |
+ RESOLVED_UNIT_INPUT: RESOLVED_UNIT.of(unit), |
USED_LOCAL_ELEMENTS_INPUT: UNITS.of(libSource).toList((unit) { |
LibrarySpecificUnit target = new LibrarySpecificUnit(libSource, unit); |
return USED_LOCAL_ELEMENTS.of(target); |
@@ -2527,9 +2542,10 @@ class LibraryErrorsReadyTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [library]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source library) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
return <String, TaskInput>{ |
- 'allErrors': UNITS.of(library).toListOf(DART_ERRORS) |
+ 'allErrors': UNITS.of(source).toListOf(DART_ERRORS) |
}; |
} |
@@ -2624,7 +2640,8 @@ class LibraryUnitErrorsTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [unit]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit unit) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
return <String, TaskInput>{ |
BUILD_FUNCTION_TYPE_ALIASES_ERRORS_INPUT: |
BUILD_FUNCTION_TYPE_ALIASES_ERRORS.of(unit), |
@@ -2700,7 +2717,6 @@ class ParseDartTask extends SourceBasedAnalysisTask { |
void internalPerform() { |
Source source = getRequiredSource(); |
LineInfo lineInfo = getRequiredInput(LINE_INFO_INPUT_NAME); |
- int modificationTime = getRequiredInput(MODIFICATION_TIME_INPUT_NAME); |
Token tokenStream = getRequiredInput(TOKEN_STREAM_INPUT_NAME); |
RecordingErrorListener errorListener = new RecordingErrorListener(); |
@@ -2749,9 +2765,7 @@ class ParseDartTask extends SourceBasedAnalysisTask { |
// Compute kind. |
// |
SourceKind sourceKind = SourceKind.LIBRARY; |
- if (modificationTime == -1) { |
- sourceKind = SourceKind.UNKNOWN; |
- } else if (hasPartOfDirective && !hasNonPartOfDirective) { |
+ if (hasPartOfDirective && !hasNonPartOfDirective) { |
sourceKind = SourceKind.PART; |
} |
// |
@@ -2780,11 +2794,10 @@ class ParseDartTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the given |
* [source]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source source) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
return <String, TaskInput>{ |
- LINE_INFO_INPUT_NAME: LINE_INFO.of(source), |
- MODIFICATION_TIME_INPUT_NAME: MODIFICATION_TIME.of(source), |
- TOKEN_STREAM_INPUT_NAME: TOKEN_STREAM.of(source) |
+ LINE_INFO_INPUT_NAME: LINE_INFO.of(target), |
+ TOKEN_STREAM_INPUT_NAME: TOKEN_STREAM.of(target) |
}; |
} |
@@ -2911,11 +2924,12 @@ class ResolveLibraryReferencesTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source libSource) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
return <String, TaskInput>{ |
- LIBRARY_INPUT: LIBRARY_ELEMENT6.of(libSource), |
+ LIBRARY_INPUT: LIBRARY_ELEMENT6.of(source), |
'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE |
- .of(libSource) |
+ .of(source) |
.toMapOf(UNITS) |
.toFlattenList((Source library, Source unit) => |
RESOLVED_UNIT6.of(new LibrarySpecificUnit(library, unit))), |
@@ -2967,11 +2981,12 @@ class ResolveLibraryTypeNamesTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source libSource) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ Source source = target; |
return <String, TaskInput>{ |
- LIBRARY_INPUT: LIBRARY_ELEMENT4.of(libSource), |
+ LIBRARY_INPUT: LIBRARY_ELEMENT4.of(source), |
'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE |
- .of(libSource) |
+ .of(source) |
.toMapOf(UNITS) |
.toFlattenList((Source library, Source unit) => |
RESOLVED_UNIT4.of(new LibrarySpecificUnit(library, unit))), |
@@ -3054,10 +3069,11 @@ class ResolveUnitReferencesTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
return <String, TaskInput>{ |
- LIBRARY_INPUT: LIBRARY_ELEMENT6.of(target.library), |
- UNIT_INPUT: RESOLVED_UNIT5.of(target), |
+ LIBRARY_INPUT: LIBRARY_ELEMENT6.of(unit.library), |
+ UNIT_INPUT: RESOLVED_UNIT5.of(unit), |
TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) |
}; |
} |
@@ -3136,10 +3152,11 @@ class ResolveUnitTypeNamesTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
return <String, TaskInput>{ |
- LIBRARY_INPUT: LIBRARY_ELEMENT4.of(target.library), |
- UNIT_INPUT: RESOLVED_UNIT3.of(target), |
+ LIBRARY_INPUT: LIBRARY_ELEMENT4.of(unit.library), |
+ UNIT_INPUT: RESOLVED_UNIT3.of(unit), |
TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) |
}; |
} |
@@ -3217,13 +3234,14 @@ class ResolveVariableReferencesTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
return <String, TaskInput>{ |
'fullyBuiltLibraryElements': IMPORT_EXPORT_SOURCE_CLOSURE |
- .of(target.library) |
+ .of(unit.library) |
.toListOf(LIBRARY_ELEMENT6), |
- LIBRARY_INPUT: LIBRARY_ELEMENT6.of(target.library), |
- UNIT_INPUT: RESOLVED_UNIT4.of(target), |
+ LIBRARY_INPUT: LIBRARY_ELEMENT6.of(unit.library), |
+ UNIT_INPUT: RESOLVED_UNIT4.of(unit), |
TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) |
}; |
} |
@@ -3270,18 +3288,46 @@ class ScanDartTask extends SourceBasedAnalysisTask { |
@override |
void internalPerform() { |
Source source = getRequiredSource(); |
- String content = getRequiredInput(CONTENT_INPUT_NAME); |
- |
- RecordingErrorListener errorListener = new RecordingErrorListener(); |
- Scanner scanner = |
- new Scanner(source, new CharSequenceReader(content), errorListener); |
- scanner.preserveComments = context.analysisOptions.preserveComments; |
- scanner.enableNullAwareOperators = |
- context.analysisOptions.enableNullAwareOperators; |
- |
- outputs[TOKEN_STREAM] = scanner.tokenize(); |
- outputs[LINE_INFO] = new LineInfo(scanner.lineStarts); |
- outputs[SCAN_ERRORS] = removeDuplicateErrors(errorListener.errors); |
+ if (target is DartScript) { |
+ DartScript script = target; |
+ List<ScriptFragment> fragments = script.fragments; |
+ if (fragments.length < 1) { |
+ throw new AnalysisException('Cannot scan scripts with no fragments'); |
+ } else if (fragments.length > 1) { |
+ throw new AnalysisException( |
+ 'Cannot scan scripts with multiple fragments'); |
+ } |
+ ScriptFragment fragment = fragments[0]; |
+ |
+ RecordingErrorListener errorListener = new RecordingErrorListener(); |
+ Scanner scanner = new Scanner(source, |
+ new SubSequenceReader(fragment.content, fragment.offset), |
+ errorListener); |
+ scanner.setSourceStart(fragment.line, fragment.column); |
+ scanner.preserveComments = context.analysisOptions.preserveComments; |
+ scanner.enableNullAwareOperators = |
+ context.analysisOptions.enableNullAwareOperators; |
+ |
+ outputs[TOKEN_STREAM] = scanner.tokenize(); |
+ outputs[LINE_INFO] = new LineInfo(scanner.lineStarts); |
+ outputs[SCAN_ERRORS] = removeDuplicateErrors(errorListener.errors); |
+ } else if (target is Source) { |
+ String content = getRequiredInput(CONTENT_INPUT_NAME); |
+ |
+ RecordingErrorListener errorListener = new RecordingErrorListener(); |
+ Scanner scanner = |
+ new Scanner(source, new CharSequenceReader(content), errorListener); |
+ scanner.preserveComments = context.analysisOptions.preserveComments; |
+ scanner.enableNullAwareOperators = |
+ context.analysisOptions.enableNullAwareOperators; |
+ |
+ outputs[TOKEN_STREAM] = scanner.tokenize(); |
+ outputs[LINE_INFO] = new LineInfo(scanner.lineStarts); |
+ outputs[SCAN_ERRORS] = removeDuplicateErrors(errorListener.errors); |
+ } else { |
+ throw new AnalysisException( |
+ 'Cannot scan Dart code from a ${target.runtimeType}'); |
+ } |
} |
/** |
@@ -3289,8 +3335,17 @@ class ScanDartTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the given |
* [source]. |
*/ |
- static Map<String, TaskInput> buildInputs(Source source) { |
- return <String, TaskInput>{CONTENT_INPUT_NAME: CONTENT.of(source)}; |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ if (target is Source) { |
+ return <String, TaskInput>{CONTENT_INPUT_NAME: CONTENT.of(target)}; |
+ } else if (target is DartScript) { |
+ // This task does not use the following input; it is included only to add |
+ // a dependency between this value and the containing source so that when |
+ // the containing source is modified these results will be invalidated. |
+ return <String, TaskInput>{'-': DART_SCRIPTS.of(target.source)}; |
+ } |
+ throw new AnalysisException( |
+ 'Cannot build inputs for a ${target.runtimeType}'); |
} |
/** |
@@ -3405,14 +3460,15 @@ class VerifyUnitTask extends SourceBasedAnalysisTask { |
* input descriptors describing those inputs for a task with the |
* given [target]. |
*/ |
- static Map<String, TaskInput> buildInputs(LibrarySpecificUnit target) { |
+ static Map<String, TaskInput> buildInputs(AnalysisTarget target) { |
+ LibrarySpecificUnit unit = target; |
return <String, TaskInput>{ |
'resolvedUnits': IMPORT_EXPORT_SOURCE_CLOSURE |
- .of(target.library) |
+ .of(unit.library) |
.toMapOf(UNITS) |
.toFlattenList((Source library, Source unit) => |
RESOLVED_UNIT.of(new LibrarySpecificUnit(library, unit))), |
- UNIT_INPUT: RESOLVED_UNIT.of(target), |
+ UNIT_INPUT: RESOLVED_UNIT.of(unit), |
TYPE_PROVIDER_INPUT: TYPE_PROVIDER.of(AnalysisContextTarget.request) |
}; |
} |