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

Side by Side Diff: pkg/analyzer_cli/lib/src/driver.dart

Issue 2976683002: Refactor creating AnalysisOptionsImpl and declared variables. (Closed)
Patch Set: Created 3 years, 5 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 unified diff | Download patch
« no previous file with comments | « pkg/analyzer_cli/lib/src/build_mode.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:io' as io; 6 import 'dart:io' as io;
7 7
8 import 'package:analyzer/error/error.dart'; 8 import 'package:analyzer/error/error.dart';
9 import 'package:analyzer/file_system/file_system.dart' as file_system; 9 import 'package:analyzer/file_system/file_system.dart' as file_system;
10 import 'package:analyzer/file_system/file_system.dart'; 10 import 'package:analyzer/file_system/file_system.dart';
(...skipping 566 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 analysisOptions.analyzeFunctionBodiesPredicate = 577 analysisOptions.analyzeFunctionBodiesPredicate =
578 _chooseDietParsingPolicy(options); 578 _chooseDietParsingPolicy(options);
579 579
580 // If we have the analysis driver, and the new analysis options are the 580 // If we have the analysis driver, and the new analysis options are the
581 // same, we can reuse this analysis driver. 581 // same, we can reuse this analysis driver.
582 if (_context != null && 582 if (_context != null &&
583 _equalAnalysisOptions(_context.analysisOptions, analysisOptions)) { 583 _equalAnalysisOptions(_context.analysisOptions, analysisOptions)) {
584 return; 584 return;
585 } 585 }
586 586
587 // Set up logging.
588 if (options.log) {
589 AnalysisEngine.instance.logger = new StdLogger();
590 }
591
587 // Save stats from previous context before clobbering it. 592 // Save stats from previous context before clobbering it.
588 if (_context != null) { 593 if (_context != null) {
589 _analyzedFileCount += _context.sources.length; 594 _analyzedFileCount += _context.sources.length;
590 } 595 }
591 596
592 // Find package info. 597 // Find package info.
593 _PackageInfo packageInfo = _findPackages(options); 598 _PackageInfo packageInfo = _findPackages(options);
594 599
595 // Process embedders. 600 // Process embedders.
596 Map<file_system.Folder, YamlMap> embedderMap = 601 Map<file_system.Folder, YamlMap> embedderMap =
(...skipping 22 matching lines...) Expand all
619 summaryDataStore.addBundle(null, sdkBundle); 624 summaryDataStore.addBundle(null, sdkBundle);
620 } 625 }
621 626
622 // Choose a package resolution policy and a diet parsing policy based on 627 // Choose a package resolution policy and a diet parsing policy based on
623 // the command-line options. 628 // the command-line options.
624 SourceFactory sourceFactory = _chooseUriResolutionPolicy(options, 629 SourceFactory sourceFactory = _chooseUriResolutionPolicy(options,
625 embedderMap, packageInfo, summaryDataStore, true, analysisOptions); 630 embedderMap, packageInfo, summaryDataStore, true, analysisOptions);
626 631
627 // Create a context. 632 // Create a context.
628 _context = AnalysisEngine.instance.createAnalysisContext(); 633 _context = AnalysisEngine.instance.createAnalysisContext();
629 setupAnalysisContext(_context, options, analysisOptions); 634 _context.analysisOptions = analysisOptions;
630 _context.sourceFactory = sourceFactory; 635 _context.sourceFactory = sourceFactory;
636 declareVariables(context.declaredVariables, options);
631 637
632 if (options.enableNewAnalysisDriver) { 638 if (options.enableNewAnalysisDriver) {
633 PerformanceLog log = new PerformanceLog(null); 639 PerformanceLog log = new PerformanceLog(null);
634 AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(log); 640 AnalysisDriverScheduler scheduler = new AnalysisDriverScheduler(log);
635 analysisDriver = new AnalysisDriver( 641 analysisDriver = new AnalysisDriver(
636 scheduler, 642 scheduler,
637 log, 643 log,
638 resourceProvider, 644 resourceProvider,
639 analysisDriverMemoryByteStore, 645 analysisDriverMemoryByteStore,
640 new FileContentOverlay(), 646 new FileContentOverlay(),
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 contextOptions.generateImplicitErrors = options.showPackageWarnings; 860 contextOptions.generateImplicitErrors = options.showPackageWarnings;
855 contextOptions.generateSdkErrors = options.showSdkWarnings; 861 contextOptions.generateSdkErrors = options.showSdkWarnings;
856 if (options.enableAssertInitializer != null) { 862 if (options.enableAssertInitializer != null) {
857 contextOptions.enableAssertInitializer = options.enableAssertInitializer; 863 contextOptions.enableAssertInitializer = options.enableAssertInitializer;
858 } 864 }
859 865
860 _directoryToAnalysisOptions[contextRootDirectory] = contextOptions; 866 _directoryToAnalysisOptions[contextRootDirectory] = contextOptions;
861 return contextOptions; 867 return contextOptions;
862 } 868 }
863 869
864 static void setAnalysisContextOptions( 870 /// Copy variables defined in the [options] into [declaredVariables].
865 file_system.ResourceProvider resourceProvider, 871 static void declareVariables(
866 AnalysisContext context, 872 DeclaredVariables declaredVariables, CommandLineOptions options) {
867 CommandLineOptions options) {
868 AnalysisOptionsImpl analysisOptions =
869 createAnalysisOptionsForCommandLineOptions(resourceProvider, options);
870 setupAnalysisContext(context, options, analysisOptions);
871 }
872
873 static void setupAnalysisContext(AnalysisContext context,
874 CommandLineOptions options, AnalysisOptionsImpl analysisOptions) {
875 Map<String, String> definedVariables = options.definedVariables; 873 Map<String, String> definedVariables = options.definedVariables;
876 if (definedVariables.isNotEmpty) { 874 if (definedVariables.isNotEmpty) {
877 DeclaredVariables declaredVariables = context.declaredVariables;
878 definedVariables.forEach((String variableName, String value) { 875 definedVariables.forEach((String variableName, String value) {
879 declaredVariables.define(variableName, value); 876 declaredVariables.define(variableName, value);
880 }); 877 });
881 } 878 }
882
883 if (options.log) {
884 AnalysisEngine.instance.logger = new StdLogger();
885 }
886
887 // Set context options.
888 context.analysisOptions = analysisOptions;
889 } 879 }
890 880
891 /// Return whether the [newOptions] are equal to the [previous]. 881 /// Return whether the [newOptions] are equal to the [previous].
892 static bool _equalCommandLineOptions( 882 static bool _equalCommandLineOptions(
893 CommandLineOptions previous, CommandLineOptions newOptions) { 883 CommandLineOptions previous, CommandLineOptions newOptions) {
894 if (previous == null || newOptions == null) { 884 if (previous == null || newOptions == null) {
895 return false; 885 return false;
896 } 886 }
897 if (newOptions.packageRootPath != previous.packageRootPath) { 887 if (newOptions.packageRootPath != previous.packageRootPath) {
898 return false; 888 return false;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 for (var package in packages) { 995 for (var package in packages) {
1006 var packageName = path.basename(package.path); 996 var packageName = path.basename(package.path);
1007 var realPath = package.resolveSymbolicLinksSync(); 997 var realPath = package.resolveSymbolicLinksSync();
1008 result[packageName] = [ 998 result[packageName] = [
1009 PhysicalResourceProvider.INSTANCE.getFolder(realPath) 999 PhysicalResourceProvider.INSTANCE.getFolder(realPath)
1010 ]; 1000 ];
1011 } 1001 }
1012 return result; 1002 return result;
1013 } 1003 }
1014 } 1004 }
OLDNEW
« no previous file with comments | « pkg/analyzer_cli/lib/src/build_mode.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698