From cae740b9032f528dddc7978671b918210070daae Mon Sep 17 00:00:00 2001 From: Michael Goderbauer Date: Fri, 8 Apr 2022 11:15:34 -0700 Subject: [PATCH] Enable strict-casts (as replacement for implicit-casts) (#101567) --- analysis_options.yaml | 11 ++++------- packages/flutter/lib/src/services/text_input.dart | 2 +- .../deferred_components_gen_snapshot_validator.dart | 4 ++-- .../lib/src/base/deferred_component.dart | 2 +- packages/flutter_tools/lib/src/flutter_manifest.dart | 2 +- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/analysis_options.yaml b/analysis_options.yaml index d97be16617..b02fdb1079 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1,8 +1,5 @@ # Specify analysis options. # -# Until there are meta linter rules, each desired lint must be explicitly enabled. -# See: https://github.com/dart-lang/linter/issues/288 -# # For a list of lints, see: http://dart-lang.github.io/linter/lints/ # See the configuration guide for more # https://github.com/dart-lang/sdk/tree/main/pkg/analyzer#configuring-the-analyzer @@ -15,11 +12,12 @@ # - https://github.com/flutter/engine/blob/master/analysis_options.yaml # - https://github.com/flutter/packages/blob/master/analysis_options.yaml # -# This file contains the analysis options used by Flutter tools, such as IntelliJ, -# Android Studio, and the `flutter analyze` command. +# This file contains the analysis options used for code in the flutter/flutter +# repository. analyzer: language: + strict-casts: true strict-raw-types: true errors: # treat missing required parameters as a warning (not a hint) @@ -43,8 +41,7 @@ analyzer: linter: rules: - # these rules are documented on and in the same order as - # the Dart Lint rules page to make maintenance easier + # This list is derived from the list of all available lints located at # https://github.com/dart-lang/linter/blob/master/example/all.yaml - always_declare_return_types - always_put_control_body_on_new_line diff --git a/packages/flutter/lib/src/services/text_input.dart b/packages/flutter/lib/src/services/text_input.dart index e04088d2e8..1b43953f12 100644 --- a/packages/flutter/lib/src/services/text_input.dart +++ b/packages/flutter/lib/src/services/text_input.dart @@ -1735,7 +1735,7 @@ class TextInput { final Map encoded = args[1] as Map; - for (final dynamic encodedDelta in encoded['deltas']) { + for (final dynamic encodedDelta in encoded['deltas'] as List) { final TextEditingDelta delta = TextEditingDelta.fromJSON(encodedDelta as Map); deltas.add(delta); } diff --git a/packages/flutter_tools/lib/src/android/deferred_components_gen_snapshot_validator.dart b/packages/flutter_tools/lib/src/android/deferred_components_gen_snapshot_validator.dart index 6396943948..4d08cce0de 100644 --- a/packages/flutter_tools/lib/src/android/deferred_components_gen_snapshot_validator.dart +++ b/packages/flutter_tools/lib/src/android/deferred_components_gen_snapshot_validator.dart @@ -234,7 +234,7 @@ class DeferredComponentsGenSnapshotValidator extends DeferredComponentsValidator return loadingUnits; } if (data['loading-units'] != null) { - for (final Object? loadingUnitData in data['loading-units']) { + for (final Object? loadingUnitData in data['loading-units'] as List) { if (loadingUnitData is! YamlMap) { invalidFiles[cacheFile.path] = "Invalid loading units yaml file, 'loading-units' " 'is not a list of maps.'; @@ -267,7 +267,7 @@ class DeferredComponentsGenSnapshotValidator extends DeferredComponentsValidator // Parse out validated yaml. if (data.containsKey('loading-units')) { if (data['loading-units'] != null) { - for (final Object? loadingUnitData in data['loading-units']) { + for (final Object? loadingUnitData in data['loading-units'] as List) { final YamlMap? loadingUnitDataMap = loadingUnitData as YamlMap?; final List libraries = []; final YamlList? nodes = loadingUnitDataMap?['libraries'] as YamlList?; diff --git a/packages/flutter_tools/lib/src/base/deferred_component.dart b/packages/flutter_tools/lib/src/base/deferred_component.dart index 64b52ceeca..dda7d9c9e9 100644 --- a/packages/flutter_tools/lib/src/base/deferred_component.dart +++ b/packages/flutter_tools/lib/src/base/deferred_component.dart @@ -195,7 +195,7 @@ class LoadingUnit { final List loadingUnits = []; // Setup android source directory if (manifest != null) { - for (final dynamic loadingUnitMetadata in manifest['loadingUnits']) { + for (final dynamic loadingUnitMetadata in manifest['loadingUnits'] as List) { final Map loadingUnitMap = loadingUnitMetadata as Map; if (loadingUnitMap['id'] == 1) { continue; // Skip base unit diff --git a/packages/flutter_tools/lib/src/flutter_manifest.dart b/packages/flutter_tools/lib/src/flutter_manifest.dart index cf9a8c1f45..d2aa00347e 100644 --- a/packages/flutter_tools/lib/src/flutter_manifest.dart +++ b/packages/flutter_tools/lib/src/flutter_manifest.dart @@ -636,7 +636,7 @@ void _validateFonts(YamlList fonts, List errors) { errors.add('Expected "fonts" to either be null or a list.'); continue; } - for (final Object? fontMapList in fontMap['fonts']) { + for (final Object? fontMapList in fontMap['fonts'] as List) { if (fontMapList is! YamlMap) { errors.add('Expected "fonts" to be a list of maps.'); continue;