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

Unified Diff: pkg/analyzer_cli/lib/src/driver.dart

Issue 2347133004: Allow input summaries to be specified when running analyzer_cli in non-build mode. (Closed)
Patch Set: Created 4 years, 3 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 | « no previous file | pkg/analyzer_cli/test/options_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 b16b78780bdbc9b1e9cbaba98615834fd4fcbde4..2593aef1c77783cc7f187ff5371d7c7d1ef9f153 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -32,6 +32,7 @@ import 'package:analyzer/src/generated/utilities_general.dart'
show PerformanceTag;
import 'package:analyzer/src/services/lint.dart';
import 'package:analyzer/src/source/source_resource.dart';
+import 'package:analyzer/src/summary/package_bundle_reader.dart';
import 'package:analyzer/src/summary/summary_sdk.dart' show SummaryBasedDartSdk;
import 'package:analyzer/src/task/options.dart';
import 'package:analyzer_cli/src/analyzer_impl.dart';
@@ -78,7 +79,7 @@ class Driver implements CommandLineStarter {
/// The context that was most recently created by a call to [_analyzeAll], or
/// `null` if [_analyzeAll] hasn't been called yet.
- AnalysisContext _context;
+ InternalAnalysisContext _context;
/// The total number of source files loaded by an AnalysisContext.
int _analyzedFileCount = 0;
@@ -314,6 +315,10 @@ class Driver implements CommandLineStarter {
if (options.incrementalCachePath != _previousOptions.incrementalCachePath) {
return false;
}
+ if (!_equalLists(
+ options.buildSummaryInputs, _previousOptions.buildSummaryInputs)) {
+ return false;
+ }
return true;
}
@@ -347,8 +352,11 @@ class Driver implements CommandLineStarter {
/// Decide on the appropriate method for resolving URIs based on the given
/// [options] and [customUrlMappings] settings, and return a
/// [SourceFactory] that has been configured accordingly.
- SourceFactory _chooseUriResolutionPolicy(CommandLineOptions options,
- Map<file_system.Folder, YamlMap> embedderMap, _PackageInfo packageInfo) {
+ SourceFactory _chooseUriResolutionPolicy(
+ CommandLineOptions options,
+ Map<file_system.Folder, YamlMap> embedderMap,
+ _PackageInfo packageInfo,
+ SummaryDataStore summaryDataStore) {
// Create a custom package resolver if one has been specified.
if (packageResolverProvider != null) {
file_system.Folder folder = resourceProvider.getResource('.');
@@ -359,6 +367,7 @@ class Driver implements CommandLineStarter {
// TODO(brianwilkerson) This doesn't handle sdk extensions.
List<UriResolver> resolvers = <UriResolver>[
sdkResolver,
+ new InSummaryUriResolver(resourceProvider, summaryDataStore),
resolver,
new file_system.ResourceUriResolver(resourceProvider)
];
@@ -417,6 +426,9 @@ class Driver implements CommandLineStarter {
resolvers.add(new SdkExtUriResolver(packageInfo.packageMap));
}
+ // Then package URIs from summaries.
+ resolvers.add(new InSummaryUriResolver(resourceProvider, summaryDataStore));
+
// Then package URIs.
if (packageUriResolver != null) {
resolvers.add(packageUriResolver);
@@ -505,15 +517,26 @@ class Driver implements CommandLineStarter {
// No summaries in the presence of embedders or extenders.
bool useSummaries = embedderMap.isEmpty && !hasSdkExt;
+ if (!useSummaries && options.buildSummaryInputs.isNotEmpty) {
+ throw new _DriverError(
+ 'Summaries are not supported in this configuration');
Brian Wilkerson 2016/09/16 19:27:30 Could we be more specific? Maybe something like S
Paul Berry 2016/09/16 21:50:14 Done.
+ }
+
+ // Read any input summaries.
+ SummaryDataStore summaryDataStore = new SummaryDataStore(
+ useSummaries ? options.buildSummaryInputs : <String>[]);
+
// Once options and embedders are processed, setup the SDK.
_setupSdk(options, useSummaries);
// Choose a package resolution policy and a diet parsing policy based on
// the command-line options.
- SourceFactory sourceFactory =
- _chooseUriResolutionPolicy(options, embedderMap, packageInfo);
+ SourceFactory sourceFactory = _chooseUriResolutionPolicy(
+ options, embedderMap, packageInfo, summaryDataStore);
_context.sourceFactory = sourceFactory;
+ _context.resultProvider =
+ new InputPackagesResultProvider(_context, summaryDataStore);
incrementalSession = configureIncrementalAnalysis(options, context);
}
@@ -693,6 +716,19 @@ class Driver implements CommandLineStarter {
_processAnalysisOptions(resourceProvider, context, options);
}
+ /// Perform a deep comparison of two string lists.
+ static bool _equalLists(List<String> l1, List<String> l2) {
+ if (l1.length != l2.length) {
+ return false;
+ }
+ for (int i = 0; i < l1.length; i++) {
+ if (l1[i] != l2[i]) {
+ return false;
+ }
+ }
+ return true;
+ }
+
/// Perform a deep comparison of two string maps.
static bool _equalMaps(Map<String, String> m1, Map<String, String> m2) {
if (m1.length != m2.length) {
« no previous file with comments | « no previous file | pkg/analyzer_cli/test/options_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698