Chromium Code Reviews| 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..4cba785e041209885aab761bb5cbc1dfc12d9686 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,48 @@ 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) |
|
Brian Wilkerson
2017/02/23 21:29:23
Might be good to create a ContextBuilder in one pl
danrubel
2017/02/23 21:51:20
Good point. I'll do that when we start using Conte
|
| + .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; |
| + |
| + // The following options are updated as appropriate by the |
| + // ContextBuilder getAnalysisOptions(...) |
| + //contextOptions.enableStrictCallChecks = options.enableStrictCallChecks; |
| + //contextOptions.enableSuperMixins = options.enableSuperMixins; |
| + //contextOptions.strongMode = options.strongMode; |
| + //contextOptions.implicitCasts = options.implicitCasts; |
| + //contextOptions.implicitDynamic = options.implicitDynamic; |
|
Brian Wilkerson
2017/02/23 21:29:22
Did you intend to remove these?
danrubel
2017/02/23 21:51:20
Yeah. Forgot to do so. Now removed.
|
| + |
| 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 +825,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 |