Try no implicit casts in pkg/analyzer_cli.

Change-Id: Ied093d1d988e944b497121e654956e93e61ee52d
Reviewed-on: https://dart-review.googlesource.com/69002
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
This commit is contained in:
Devon Carew 2018-08-08 22:14:12 +00:00 committed by commit-bot@chromium.org
parent 3d25d3761b
commit a0b335ac6c
7 changed files with 49 additions and 56 deletions

View file

@ -1,4 +1,6 @@
analyzer:
strong-mode:
implicit-casts: false
exclude:
- test/data/**
linter:

View file

@ -85,7 +85,7 @@ class ContextCacheEntry {
/// The actual calculation to get the [AnalysisOptionsImpl], with no caching.
/// This should not be used except behind the getter which caches this result
/// automatically.
AnalysisOptions _getAnalysisOptions() {
AnalysisOptionsImpl _getAnalysisOptions() {
AnalysisOptionsImpl contextOptions = builder.getAnalysisOptions(
requestedSourceDirectory,
verbosePrint: clOptions.verbose ? verbosePrint : null);

View file

@ -655,7 +655,7 @@ class Driver extends Object with HasContextMixin implements CommandLineStarter {
/// Return whether [a] and [b] options are equal for the purpose of
/// command line analysis.
bool _equalAnalysisOptions(AnalysisOptionsImpl a, AnalysisOptions b) {
bool _equalAnalysisOptions(AnalysisOptions a, AnalysisOptions b) {
return a.enableLazyAssignmentOperators == b.enableLazyAssignmentOperators &&
a.enableSuperMixins == b.enableSuperMixins &&
a.enableTiming == b.enableTiming &&

View file

@ -160,49 +160,50 @@ class CommandLineOptions {
/// Initialize options from the given parsed [args].
CommandLineOptions._fromArgs(ArgResults args)
: buildAnalysisOutput = args['build-analysis-output'],
buildMode = args['build-mode'],
buildModePersistentWorker = args['persistent_worker'],
: buildAnalysisOutput = cast(args['build-analysis-output']),
buildMode = cast(args['build-mode']),
buildModePersistentWorker = cast(args['persistent_worker']),
buildSummaryInputs =
(args['build-summary-input'] as List).cast<String>(),
buildSummaryUnlinkedInputs =
(args['build-summary-unlinked-input'] as List).cast<String>(),
buildSummaryOnly = args['build-summary-only'],
buildSummaryOnlyUnlinked = args['build-summary-only-unlinked'],
buildSummaryOutput = args['build-summary-output'],
buildSummaryOutputSemantic = args['build-summary-output-semantic'],
buildSuppressExitCode = args['build-suppress-exit-code'],
buildSummaryOnly = cast(args['build-summary-only']),
buildSummaryOnlyUnlinked = cast(args['build-summary-only-unlinked']),
buildSummaryOutput = cast(args['build-summary-output']),
buildSummaryOutputSemantic =
cast(args['build-summary-output-semantic']),
buildSuppressExitCode = cast(args['build-suppress-exit-code']),
contextBuilderOptions = createContextBuilderOptions(args),
dartSdkPath = args['dart-sdk'],
dartSdkSummaryPath = args['dart-sdk-summary'],
dartSdkPath = cast(args['dart-sdk']),
dartSdkSummaryPath = cast(args['dart-sdk-summary']),
declarationCasts = args.wasParsed(declarationCastsFlag)
? args[declarationCastsFlag]
: args[implicitCastsFlag],
disableCacheFlushing = args['disable-cache-flushing'],
disableHints = args['no-hints'],
displayVersion = args['version'],
ignoreUnrecognizedFlags = args['ignore-unrecognized-flags'],
lints = args[lintsFlag],
log = args['log'],
? cast(args[declarationCastsFlag])
: cast(args[implicitCastsFlag]),
disableCacheFlushing = cast(args['disable-cache-flushing']),
disableHints = cast(args['no-hints']),
displayVersion = cast(args['version']),
ignoreUnrecognizedFlags = cast(args['ignore-unrecognized-flags']),
lints = cast(args[lintsFlag]),
log = cast(args['log']),
machineFormat = args['format'] == 'machine',
perfReport = args['x-perf-report'],
useCFE = args['use-cfe'],
useFastaParser = args['use-fasta-parser'],
previewDart2 = args['preview-dart-2'],
batchMode = args['batch'],
showPackageWarnings = args['show-package-warnings'] ||
args['package-warnings'] ||
perfReport = cast(args['x-perf-report']),
useCFE = cast(args['use-cfe']),
useFastaParser = cast(args['use-fasta-parser']),
previewDart2 = cast(args['preview-dart-2']),
batchMode = cast(args['batch']),
showPackageWarnings = cast(args['show-package-warnings']) ||
cast(args['package-warnings']) ||
args['x-package-warnings-prefix'] != null,
showPackageWarningsPrefix = args['x-package-warnings-prefix'],
showSdkWarnings = args['sdk-warnings'],
showPackageWarningsPrefix = cast(args['x-package-warnings-prefix']),
showSdkWarnings = cast(args['sdk-warnings']),
_sourceFiles = args.rest,
infosAreFatal = args['fatal-infos'] || args['fatal-hints'],
warningsAreFatal = args['fatal-warnings'],
lintsAreFatal = args['fatal-lints'],
implicitCasts = args[implicitCastsFlag],
implicitDynamic = !args['no-implicit-dynamic'],
verbose = args['verbose'],
color = args['color'];
infosAreFatal = cast(args['fatal-infos']) || cast(args['fatal-hints']),
warningsAreFatal = cast(args['fatal-warnings']),
lintsAreFatal = cast(args['fatal-lints']),
implicitCasts = cast(args[implicitCastsFlag]),
implicitDynamic = !cast<bool>(args['no-implicit-dynamic']),
verbose = cast(args['verbose']),
color = cast(args['color']);
/// The path to an analysis options file
String get analysisOptionsFile =>
@ -541,7 +542,7 @@ class CommandLineOptions {
}
// Help requests.
if (results['help']) {
if (cast(results['help'])) {
_showUsage(parser, analytics, fromHelp: true);
exitHandler(0);
return null; // Only reachable in testing.
@ -550,7 +551,7 @@ class CommandLineOptions {
// Enable / disable analytics.
if (telemetry.SHOW_ANALYTICS_UI) {
if (results.wasParsed('analytics')) {
analytics.enabled = results['analytics'];
analytics.enabled = cast(results['analytics']);
outSink.writeln(
telemetry.createAnalyticsStatusMessage(analytics.enabled));
exitHandler(0);
@ -559,14 +560,14 @@ class CommandLineOptions {
}
// Batch mode and input files.
if (results['batch']) {
if (cast(results['batch'])) {
if (results.rest.isNotEmpty) {
errorSink.writeln('No source files expected in the batch mode.');
_showUsage(parser, analytics);
exitHandler(15);
return null; // Only reachable in testing.
}
} else if (results['persistent_worker']) {
} else if (cast(results['persistent_worker'])) {
if (results.rest.isNotEmpty) {
errorSink.writeln(
'No source files expected in the persistent worker mode.');
@ -574,12 +575,12 @@ class CommandLineOptions {
exitHandler(15);
return null; // Only reachable in testing.
}
} else if (results['version']) {
} else if (cast(results['version'])) {
outSink.writeln('$_binaryName version ${_getVersion()}');
exitHandler(0);
return null; // Only reachable in testing.
} else {
if (results.rest.isEmpty && !results['build-mode']) {
if (results.rest.isEmpty && !cast<bool>(results['build-mode'])) {
_showUsage(parser, analytics, fromHelp: true);
exitHandler(15);
return null; // Only reachable in testing.
@ -642,3 +643,5 @@ Run "dartanalyzer -h -v" for verbose help output, including less commonly used o
For more information, see https://www.dartlang.org/tools/analyzer.\n''');
}
}
T cast<T>(dynamic value) => value as T;

View file

@ -13,17 +13,6 @@ import 'package:analyzer_cli/src/options.dart' show CommandLineOptions;
const _JSON = const JsonEncoder.withIndent(" ");
bool _isCheckedMode = () {
bool x = true;
try {
// Trigger an exception if we're in checked mode.
x = "" as dynamic;
return x != ""; // return false; suppress unused variable warning
} catch (e) {
return true;
}
}();
String _osType = () {
if (Platform.isLinux) {
return "linux";
@ -46,7 +35,6 @@ String makePerfReport(int startTime, int endTime, CommandLineOptions options,
var platformJson = <String, dynamic>{
'osType': _osType,
'dartSdkVersion': Platform.version,
'checkedMode': _isCheckedMode,
};
var optionsJson = <String, dynamic>{

View file

@ -60,7 +60,7 @@ main() {
}
/// Wrap a function call to dump stdout and stderr in case of an exception.
Function wrap(Function f) {
dynamic Function() wrap(dynamic Function() f) {
return () async {
try {
await f();

View file

@ -58,7 +58,7 @@ Future<Null> recursiveCopy(FileSystemEntity src, String dstPath) async {
/// completes, the temporary directory and all its contents will be deleted.
///
/// Returns the return value of [fn].
dynamic withTempDir(fn(String path)) {
T withTempDir<T>(T fn(String path)) {
var tempDir = Directory.systemTemp.createTempSync('analyzer_').path;
try {
return fn(tempDir);