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

Unified Diff: pkg/analyzer/lib/src/task/dart.dart

Issue 1193143002: Next steps toward HTML support (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Address comments Created 5 years, 6 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 | « pkg/analyzer/lib/src/plugin/engine_plugin.dart ('k') | pkg/analyzer/lib/src/task/driver.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
};
}
« no previous file with comments | « pkg/analyzer/lib/src/plugin/engine_plugin.dart ('k') | pkg/analyzer/lib/src/task/driver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698