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

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

Issue 1806263004: add --x-package-warnings-prefix option to dartanalyzer (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 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
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 dc40c0d6f3fe3927b1173258deaf65a83f8eccc9..c604c34702d032b1582bb68363a1b0819a8cd0ab 100644
--- a/pkg/analyzer_cli/lib/src/driver.dart
+++ b/pkg/analyzer_cli/lib/src/driver.dart
@@ -79,10 +79,6 @@ class Driver implements CommandLineStarter {
/// `null` if [_analyzeAll] hasn't been called yet.
AnalysisContext _context;
- /// If [_context] is not `null`, the [CommandLineOptions] that guided its
- /// creation.
- CommandLineOptions _previousOptions;
-
@override
EmbeddedResolverProvider embeddedUriResolverProvider;
@@ -101,6 +97,9 @@ class Driver implements CommandLineStarter {
@override
void start(List<String> args) {
+ if (_context != null) {
+ throw new StateError("start() can only be called once");
Brian Wilkerson 2016/03/18 14:13:17 Start *is* only called once, and it seems unlikely
skybrian 2016/03/18 22:32:44 It's to make it easier for the next reader to tell
+ }
int startTime = new DateTime.now().millisecondsSinceEpoch;
StringUtilities.INTERNER = new MappedInterner();
@@ -134,7 +133,8 @@ class Driver implements CommandLineStarter {
}
if (options.perfReport != null) {
- String json = makePerfReport(startTime, currentTimeMillis(), options);
+ String json =
+ makePerfReport(startTime, currentTimeMillis(), options, _context);
new File(options.perfReport).writeAsStringSync(json);
}
}
@@ -229,55 +229,6 @@ class Driver implements CommandLineStarter {
});
}
- /// Determine whether the context created during a previous call to
- /// [_analyzeAll] can be re-used in order to analyze using [options].
- bool _canContextBeReused(CommandLineOptions options) {
- // TODO(paulberry): add a command-line option that disables context re-use.
- if (_context == null) {
- return false;
- }
- if (options.packageRootPath != _previousOptions.packageRootPath) {
- return false;
- }
- if (options.packageConfigPath != _previousOptions.packageConfigPath) {
- return false;
- }
- if (!_equalMaps(
- options.definedVariables, _previousOptions.definedVariables)) {
- return false;
- }
- if (options.log != _previousOptions.log) {
- return false;
- }
- if (options.disableHints != _previousOptions.disableHints) {
- return false;
- }
- if (options.enableStrictCallChecks !=
- _previousOptions.enableStrictCallChecks) {
- return false;
- }
- if (options.showPackageWarnings != _previousOptions.showPackageWarnings) {
- return false;
- }
- if (options.showSdkWarnings != _previousOptions.showSdkWarnings) {
- return false;
- }
- if (options.lints != _previousOptions.lints) {
- return false;
- }
- if (options.strongMode != _previousOptions.strongMode) {
- return false;
- }
- if (options.enableSuperMixins != _previousOptions.enableSuperMixins) {
- return false;
- }
- if (options.enableConditionalDirectives !=
- _previousOptions.enableConditionalDirectives) {
- return false;
- }
- return true;
- }
-
/// Decide on the appropriate policy for which files need to be fully parsed
/// and which files need to be diet parsed, based on [options], and return an
/// [AnalyzeFunctionBodiesPredicate] that implements this policy.
@@ -292,38 +243,14 @@ class Driver implements CommandLineStarter {
return (Source source) => true;
}
- // Determine the set of packages requiring a full parse. Use null to
- // represent the case where all packages require a full parse.
- Set<String> packagesRequiringFullParse;
- if (options.showPackageWarnings) {
- // We are showing warnings from all packages so all packages require a
- // full parse.
- packagesRequiringFullParse = null;
- } else {
- // We aren't showing warnings for dependent packages, but we may still
- // need to show warnings for "self" packages, so we need to do a full
- // parse in any package containing files mentioned on the command line.
- // TODO(paulberry): implement this. As a temporary workaround, we're
- // fully parsing all packages.
- packagesRequiringFullParse = null;
- }
return (Source source) {
if (options.sourceFiles.contains(source.fullName)) {
return true;
} else if (source.uri.scheme == 'dart') {
return options.showSdkWarnings;
- } else if (source.uri.scheme == 'package') {
- if (packagesRequiringFullParse == null) {
- return true;
- } else if (source.uri.pathSegments.length == 0) {
- // We should never see a URI like this, but fully parse it to be
- // safe.
- return true;
- } else {
- return packagesRequiringFullParse
- .contains(source.uri.pathSegments[0]);
- }
} else {
+ // TODO(paulberry): diet parse package: imports where we don't want
+ // diagnostics. (Full parse is still needed for "self" packages.)
return true;
}
};
@@ -472,23 +399,17 @@ class Driver implements CommandLineStarter {
/// Create an analysis context that is prepared to analyze sources according
/// to the given [options], and store it in [_context].
void _createAnalysisContext(CommandLineOptions options) {
- if (_canContextBeReused(options)) {
- return;
- }
- _previousOptions = options;
-
- // Create a context.
- AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
- _context = context;
+ assert(_context == null);
+ _context = AnalysisEngine.instance.createAnalysisContext();
// Choose a package resolution policy and a diet parsing policy based on
// the command-line options.
SourceFactory sourceFactory = _chooseUriResolutionPolicy(
- options, (context as InternalAnalysisContext).embedderYamlLocator);
+ options, (_context as InternalAnalysisContext).embedderYamlLocator);
AnalyzeFunctionBodiesPredicate dietParsingPolicy =
_chooseDietParsingPolicy(options);
- context.sourceFactory = sourceFactory;
+ _context.sourceFactory = sourceFactory;
setAnalysisContextOptions(_context, options,
(AnalysisOptionsImpl contextOptions) {
@@ -599,19 +520,6 @@ class Driver implements CommandLineStarter {
_processAnalysisOptions(context, options);
}
- /// Perform a deep comparison of two string maps.
- static bool _equalMaps(Map<String, String> m1, Map<String, String> m2) {
- if (m1.length != m2.length) {
- return false;
- }
- for (String key in m1.keys) {
- if (!m2.containsKey(key) || m1[key] != m2[key]) {
- return false;
- }
- }
- return true;
- }
-
static fileSystem.File _getOptionsFile(CommandLineOptions options) {
fileSystem.File file;
String filePath = options.analysisOptionsFile;

Powered by Google App Engine
This is Rietveld 408576698