Index: pkg/analyzer_cli/lib/src/driver.dart |
diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart |
index 26ddb0073b8efa83a48b497a027d54af88412e89..4fac0ba3d1893c6c71a7f7c399cf759b7080c379 100644 |
--- a/pkg/analyzer_cli/lib/src/driver.dart |
+++ b/pkg/analyzer_cli/lib/src/driver.dart |
@@ -561,13 +561,8 @@ class Driver implements CommandLineStarter { |
SummaryDataStore summaryDataStore = new SummaryDataStore( |
useSummaries ? options.buildSummaryInputs : <String>[]); |
- // Create a temporary source factory without an SDK resolver |
- // for resolving "include:" directives in analysis options files. |
- SourceFactory tempSourceFactory = _chooseUriResolutionPolicy( |
- options, embedderMap, packageInfo, summaryDataStore, false, null); |
- |
AnalysisOptionsImpl analysisOptions = |
- createAnalysisOptions(resourceProvider, tempSourceFactory, options); |
+ createAnalysisOptionsForCommandLineOptions(resourceProvider, options); |
analysisOptions.analyzeFunctionBodiesPredicate = |
_chooseDietParsingPolicy(options); |
@@ -740,45 +735,40 @@ class Driver implements CommandLineStarter { |
} |
} |
- static AnalysisOptionsImpl createAnalysisOptions( |
- file_system.ResourceProvider resourceProvider, |
- SourceFactory sourceFactory, |
- CommandLineOptions options) { |
- // Prepare context options. |
- AnalysisOptionsImpl analysisOptions = |
- createAnalysisOptionsForCommandLineOptions(options); |
+ static AnalysisOptionsImpl createAnalysisOptionsForCommandLineOptions( |
+ ResourceProvider resourceProvider, CommandLineOptions options) { |
+ if (options.analysisOptionsFile != null) { |
+ file_system.File file = |
+ resourceProvider.getFile(options.analysisOptionsFile); |
+ if (!file.exists) { |
+ printAndFail('Options file not found: ${options.analysisOptionsFile}', |
+ exitCode: ErrorSeverity.ERROR.ordinal); |
+ } |
+ } |
- // Process analysis options file (and notify all interested parties). |
- _processAnalysisOptions( |
- resourceProvider, sourceFactory, analysisOptions, options); |
- return analysisOptions; |
- } |
+ AnalysisOptionsImpl contextOptions = new ContextBuilder( |
+ resourceProvider, null, null, |
+ options: options.contextBuilderOptions) |
+ .getAnalysisOptions(options.sourceFiles.isNotEmpty |
+ ? options.sourceFiles[0] |
+ : path.current); |
- static AnalysisOptionsImpl createAnalysisOptionsForCommandLineOptions( |
- CommandLineOptions options) { |
- AnalysisOptionsImpl contextOptions = new AnalysisOptionsImpl(); |
contextOptions.trackCacheDependencies = false; |
contextOptions.disableCacheFlushing = options.disableCacheFlushing; |
contextOptions.hint = !options.disableHints; |
- contextOptions.enableStrictCallChecks = options.enableStrictCallChecks; |
- contextOptions.enableSuperMixins = options.enableSuperMixins; |
contextOptions.generateImplicitErrors = options.showPackageWarnings; |
contextOptions.generateSdkErrors = options.showSdkWarnings; |
- contextOptions.lint = options.lints; |
- contextOptions.strongMode = options.strongMode; |
- contextOptions.implicitCasts = options.implicitCasts; |
- contextOptions.implicitDynamic = options.implicitDynamic; |
+ |
return contextOptions; |
} |
static void setAnalysisContextOptions( |
file_system.ResourceProvider resourceProvider, |
- SourceFactory sourceFactory, |
AnalysisContext context, |
CommandLineOptions options, |
void configureContextOptions(AnalysisOptionsImpl contextOptions)) { |
AnalysisOptionsImpl analysisOptions = |
- createAnalysisOptions(resourceProvider, sourceFactory, options); |
+ createAnalysisOptionsForCommandLineOptions(resourceProvider, options); |
configureContextOptions(analysisOptions); |
setupAnalysisContext(context, options, analysisOptions); |
} |
@@ -827,55 +817,9 @@ class Driver implements CommandLineStarter { |
return true; |
} |
- static file_system.File _getOptionsFile( |
- file_system.ResourceProvider resourceProvider, |
- CommandLineOptions options) { |
- file_system.File file; |
- String filePath = options.analysisOptionsFile; |
- if (filePath != null) { |
- file = resourceProvider.getFile(filePath); |
- if (!file.exists) { |
- printAndFail('Options file not found: $filePath', |
- exitCode: ErrorSeverity.ERROR.ordinal); |
- } |
- } else { |
- filePath = AnalysisEngine.ANALYSIS_OPTIONS_FILE; |
- file = resourceProvider.getFile(filePath); |
- if (!file.exists) { |
- filePath = AnalysisEngine.ANALYSIS_OPTIONS_YAML_FILE; |
- file = resourceProvider.getFile(filePath); |
- } |
- } |
- return file; |
- } |
- |
/// Convert [sourcePath] into an absolute path. |
static String _normalizeSourcePath(String sourcePath) => |
path.normalize(new io.File(sourcePath).absolute.path); |
- |
- static void _processAnalysisOptions( |
- file_system.ResourceProvider resourceProvider, |
- SourceFactory sourceFactory, |
- AnalysisOptionsImpl analysisOptions, |
- CommandLineOptions options) { |
- file_system.File file = _getOptionsFile(resourceProvider, options); |
- |
- AnalysisOptionsProvider analysisOptionsProvider = |
- new AnalysisOptionsProvider(sourceFactory); |
- Map<String, YamlNode> optionMap = |
- analysisOptionsProvider.getOptionsFromFile(file); |
- |
- // Fill in lint rule defaults in case lints are enabled and rules are |
- // not specified in an options file. |
- if (options.lints && !containsLintRuleEntry(optionMap)) { |
- analysisOptions.lintRules = Registry.ruleRegistry.defaultRules; |
- } |
- |
- // Ask engine to further process options. |
- if (optionMap != null) { |
- applyToAnalysisOptions(analysisOptions, optionMap); |
- } |
- } |
} |
/// Provides a framework to read command line options from stdin and feed them |