Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit a0b335a

Browse files
devoncarewcommit-bot@chromium.org
authored andcommitted
Try no implicit casts in pkg/analyzer_cli.
Change-Id: Ied093d1d988e944b497121e654956e93e61ee52d Reviewed-on: https://dart-review.googlesource.com/69002 Commit-Queue: Devon Carew <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]> Reviewed-by: Mike Fairhurst <[email protected]>
1 parent 3d25d37 commit a0b335a

File tree

7 files changed

+49
-56
lines changed

7 files changed

+49
-56
lines changed

pkg/analyzer_cli/analysis_options.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
analyzer:
2+
strong-mode:
3+
implicit-casts: false
24
exclude:
35
- test/data/**
46
linter:

pkg/analyzer_cli/lib/src/context_cache.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class ContextCacheEntry {
8585
/// The actual calculation to get the [AnalysisOptionsImpl], with no caching.
8686
/// This should not be used except behind the getter which caches this result
8787
/// automatically.
88-
AnalysisOptions _getAnalysisOptions() {
88+
AnalysisOptionsImpl _getAnalysisOptions() {
8989
AnalysisOptionsImpl contextOptions = builder.getAnalysisOptions(
9090
requestedSourceDirectory,
9191
verbosePrint: clOptions.verbose ? verbosePrint : null);

pkg/analyzer_cli/lib/src/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -655,7 +655,7 @@ class Driver extends Object with HasContextMixin implements CommandLineStarter {
655655

656656
/// Return whether [a] and [b] options are equal for the purpose of
657657
/// command line analysis.
658-
bool _equalAnalysisOptions(AnalysisOptionsImpl a, AnalysisOptions b) {
658+
bool _equalAnalysisOptions(AnalysisOptions a, AnalysisOptions b) {
659659
return a.enableLazyAssignmentOperators == b.enableLazyAssignmentOperators &&
660660
a.enableSuperMixins == b.enableSuperMixins &&
661661
a.enableTiming == b.enableTiming &&

pkg/analyzer_cli/lib/src/options.dart

Lines changed: 43 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -160,49 +160,50 @@ class CommandLineOptions {
160160

161161
/// Initialize options from the given parsed [args].
162162
CommandLineOptions._fromArgs(ArgResults args)
163-
: buildAnalysisOutput = args['build-analysis-output'],
164-
buildMode = args['build-mode'],
165-
buildModePersistentWorker = args['persistent_worker'],
163+
: buildAnalysisOutput = cast(args['build-analysis-output']),
164+
buildMode = cast(args['build-mode']),
165+
buildModePersistentWorker = cast(args['persistent_worker']),
166166
buildSummaryInputs =
167167
(args['build-summary-input'] as List).cast<String>(),
168168
buildSummaryUnlinkedInputs =
169169
(args['build-summary-unlinked-input'] as List).cast<String>(),
170-
buildSummaryOnly = args['build-summary-only'],
171-
buildSummaryOnlyUnlinked = args['build-summary-only-unlinked'],
172-
buildSummaryOutput = args['build-summary-output'],
173-
buildSummaryOutputSemantic = args['build-summary-output-semantic'],
174-
buildSuppressExitCode = args['build-suppress-exit-code'],
170+
buildSummaryOnly = cast(args['build-summary-only']),
171+
buildSummaryOnlyUnlinked = cast(args['build-summary-only-unlinked']),
172+
buildSummaryOutput = cast(args['build-summary-output']),
173+
buildSummaryOutputSemantic =
174+
cast(args['build-summary-output-semantic']),
175+
buildSuppressExitCode = cast(args['build-suppress-exit-code']),
175176
contextBuilderOptions = createContextBuilderOptions(args),
176-
dartSdkPath = args['dart-sdk'],
177-
dartSdkSummaryPath = args['dart-sdk-summary'],
177+
dartSdkPath = cast(args['dart-sdk']),
178+
dartSdkSummaryPath = cast(args['dart-sdk-summary']),
178179
declarationCasts = args.wasParsed(declarationCastsFlag)
179-
? args[declarationCastsFlag]
180-
: args[implicitCastsFlag],
181-
disableCacheFlushing = args['disable-cache-flushing'],
182-
disableHints = args['no-hints'],
183-
displayVersion = args['version'],
184-
ignoreUnrecognizedFlags = args['ignore-unrecognized-flags'],
185-
lints = args[lintsFlag],
186-
log = args['log'],
180+
? cast(args[declarationCastsFlag])
181+
: cast(args[implicitCastsFlag]),
182+
disableCacheFlushing = cast(args['disable-cache-flushing']),
183+
disableHints = cast(args['no-hints']),
184+
displayVersion = cast(args['version']),
185+
ignoreUnrecognizedFlags = cast(args['ignore-unrecognized-flags']),
186+
lints = cast(args[lintsFlag]),
187+
log = cast(args['log']),
187188
machineFormat = args['format'] == 'machine',
188-
perfReport = args['x-perf-report'],
189-
useCFE = args['use-cfe'],
190-
useFastaParser = args['use-fasta-parser'],
191-
previewDart2 = args['preview-dart-2'],
192-
batchMode = args['batch'],
193-
showPackageWarnings = args['show-package-warnings'] ||
194-
args['package-warnings'] ||
189+
perfReport = cast(args['x-perf-report']),
190+
useCFE = cast(args['use-cfe']),
191+
useFastaParser = cast(args['use-fasta-parser']),
192+
previewDart2 = cast(args['preview-dart-2']),
193+
batchMode = cast(args['batch']),
194+
showPackageWarnings = cast(args['show-package-warnings']) ||
195+
cast(args['package-warnings']) ||
195196
args['x-package-warnings-prefix'] != null,
196-
showPackageWarningsPrefix = args['x-package-warnings-prefix'],
197-
showSdkWarnings = args['sdk-warnings'],
197+
showPackageWarningsPrefix = cast(args['x-package-warnings-prefix']),
198+
showSdkWarnings = cast(args['sdk-warnings']),
198199
_sourceFiles = args.rest,
199-
infosAreFatal = args['fatal-infos'] || args['fatal-hints'],
200-
warningsAreFatal = args['fatal-warnings'],
201-
lintsAreFatal = args['fatal-lints'],
202-
implicitCasts = args[implicitCastsFlag],
203-
implicitDynamic = !args['no-implicit-dynamic'],
204-
verbose = args['verbose'],
205-
color = args['color'];
200+
infosAreFatal = cast(args['fatal-infos']) || cast(args['fatal-hints']),
201+
warningsAreFatal = cast(args['fatal-warnings']),
202+
lintsAreFatal = cast(args['fatal-lints']),
203+
implicitCasts = cast(args[implicitCastsFlag]),
204+
implicitDynamic = !cast<bool>(args['no-implicit-dynamic']),
205+
verbose = cast(args['verbose']),
206+
color = cast(args['color']);
206207

207208
/// The path to an analysis options file
208209
String get analysisOptionsFile =>
@@ -541,7 +542,7 @@ class CommandLineOptions {
541542
}
542543

543544
// Help requests.
544-
if (results['help']) {
545+
if (cast(results['help'])) {
545546
_showUsage(parser, analytics, fromHelp: true);
546547
exitHandler(0);
547548
return null; // Only reachable in testing.
@@ -550,7 +551,7 @@ class CommandLineOptions {
550551
// Enable / disable analytics.
551552
if (telemetry.SHOW_ANALYTICS_UI) {
552553
if (results.wasParsed('analytics')) {
553-
analytics.enabled = results['analytics'];
554+
analytics.enabled = cast(results['analytics']);
554555
outSink.writeln(
555556
telemetry.createAnalyticsStatusMessage(analytics.enabled));
556557
exitHandler(0);
@@ -559,27 +560,27 @@ class CommandLineOptions {
559560
}
560561

561562
// Batch mode and input files.
562-
if (results['batch']) {
563+
if (cast(results['batch'])) {
563564
if (results.rest.isNotEmpty) {
564565
errorSink.writeln('No source files expected in the batch mode.');
565566
_showUsage(parser, analytics);
566567
exitHandler(15);
567568
return null; // Only reachable in testing.
568569
}
569-
} else if (results['persistent_worker']) {
570+
} else if (cast(results['persistent_worker'])) {
570571
if (results.rest.isNotEmpty) {
571572
errorSink.writeln(
572573
'No source files expected in the persistent worker mode.');
573574
_showUsage(parser, analytics);
574575
exitHandler(15);
575576
return null; // Only reachable in testing.
576577
}
577-
} else if (results['version']) {
578+
} else if (cast(results['version'])) {
578579
outSink.writeln('$_binaryName version ${_getVersion()}');
579580
exitHandler(0);
580581
return null; // Only reachable in testing.
581582
} else {
582-
if (results.rest.isEmpty && !results['build-mode']) {
583+
if (results.rest.isEmpty && !cast<bool>(results['build-mode'])) {
583584
_showUsage(parser, analytics, fromHelp: true);
584585
exitHandler(15);
585586
return null; // Only reachable in testing.
@@ -642,3 +643,5 @@ Run "dartanalyzer -h -v" for verbose help output, including less commonly used o
642643
For more information, see https://www.dartlang.org/tools/analyzer.\n''');
643644
}
644645
}
646+
647+
T cast<T>(dynamic value) => value as T;

pkg/analyzer_cli/lib/src/perf_report.dart

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,6 @@ import 'package:analyzer_cli/src/options.dart' show CommandLineOptions;
1313

1414
const _JSON = const JsonEncoder.withIndent(" ");
1515

16-
bool _isCheckedMode = () {
17-
bool x = true;
18-
try {
19-
// Trigger an exception if we're in checked mode.
20-
x = "" as dynamic;
21-
return x != ""; // return false; suppress unused variable warning
22-
} catch (e) {
23-
return true;
24-
}
25-
}();
26-
2716
String _osType = () {
2817
if (Platform.isLinux) {
2918
return "linux";
@@ -46,7 +35,6 @@ String makePerfReport(int startTime, int endTime, CommandLineOptions options,
4635
var platformJson = <String, dynamic>{
4736
'osType': _osType,
4837
'dartSdkVersion': Platform.version,
49-
'checkedMode': _isCheckedMode,
5038
};
5139

5240
var optionsJson = <String, dynamic>{

pkg/analyzer_cli/test/embedder_test.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ main() {
6060
}
6161

6262
/// Wrap a function call to dump stdout and stderr in case of an exception.
63-
Function wrap(Function f) {
63+
dynamic Function() wrap(dynamic Function() f) {
6464
return () async {
6565
try {
6666
await f();

pkg/analyzer_cli/test/utils.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Future<Null> recursiveCopy(FileSystemEntity src, String dstPath) async {
5858
/// completes, the temporary directory and all its contents will be deleted.
5959
///
6060
/// Returns the return value of [fn].
61-
dynamic withTempDir(fn(String path)) {
61+
T withTempDir<T>(T fn(String path)) {
6262
var tempDir = Directory.systemTemp.createTempSync('analyzer_').path;
6363
try {
6464
return fn(tempDir);

0 commit comments

Comments
 (0)