Skip to content

dart fix is failing #62272

@bh-oussama

Description

@bh-oussama

When running dart fix . --apply it fails and throws the following exception

Exception while getting bulk fixes: Exception generating fix for specify_nonobvious_local_variable_types in **/project/lib/src/data/async_reference.dart
Stack Overflow
#0      DartEditBuilderImpl._getVisibleType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#1      DartEditBuilderImpl._getVisibleType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#2      DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#3      DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#4      ListBase.every (dart:collection/list.dart)
#5      DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#6      DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#7      ListBase.every (dart:collection/list.dart)
#8      DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#9      DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#10     ListBase.every (dart:collection/list.dart)
#11     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#12     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#13     ListBase.every (dart:collection/list.dart)
#14     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#15     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#16     ListBase.every (dart:collection/list.dart)
#17     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#18     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#19     ListBase.every (dart:collection/list.dart)
#20     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#21     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#22     ListBase.every (dart:collection/list.dart)
#23     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#24     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#25     ListBase.every (dart:collection/list.dart)
#26     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#27     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#28     ListBase.every (dart:collection/list.dart)
#29     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#30     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#31     ListBase.every (dart:collection/list.dart)
#32     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#33     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#34     ListBase.every (dart:collection/list.dart)
#35     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#36     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#37     ListBase.every (dart:collection/list.dart)
#38     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#39     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#40     ListBase.every (dart:collection/list.dart)
#41     DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#42     DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#43     ListBase.every (dart:collection/list.dart)
...
...
#19255  ListBase.every (dart:collection/list.dart)
#19256  DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#19257  DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#19258  ListBase.every (dart:collection/list.dart)
#19259  DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#19260  DartEditBuilderImpl._canWriteType.<anonymous closure> (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#19261  ListBase.every (dart:collection/list.dart)
#19262  DartEditBuilderImpl._canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#19263  DartEditBuilderImpl.canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#19264  DartFileEditBuilderImpl.canWriteType (package:analyzer_plugin/src/utilities/change_builder/change_builder_dart.dart)
#19265  AddTypeAnnotation._applyChange.<anonymous closure> (package:analysis_server/src/services/correction/dart/add_type_annotation.dart)
#19266  ChangeBuilderImpl.addDartFileEdit (package:analyzer_plugin/src/utilities/change_builder/change_builder_core.dart)
#19267  _SuspendState._createAsyncStarCallback.<anonymous closure> (dart:async-patch/async_patch.dart)
#19268  _rootRunUnary (dart:async/zone.dart)
#19269  Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart)
#19270  Future._propagateToListeners (dart:async/future_impl.dart)
#19271  Future._completeWithValue (dart:async/future_impl.dart)
#19272  _SuspendState._createAsyncStarCallback.<anonymous closure> (dart:async-patch/async_patch.dart)
#19273  _rootRunUnary (dart:async/zone.dart)
#19274  Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart)
#19275  Future._propagateToListeners (dart:async/future_impl.dart)
#19276  Future._completeWithValue (dart:async/future_impl.dart)
#19277  _SuspendState._createAsyncStarCallback.<anonymous closure> (dart:async-patch/async_patch.dart)
#19278  _rootRunUnary (dart:async/zone.dart)
#19279  _rootRun (dart:async/zone.dart)
#19280  _CustomZone.run (dart:async/zone.dart)
#19281  _CustomZone.runGuarded (dart:async/zone.dart)
#19282  _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart)
#19283  _microtaskLoop (dart:async/schedule_microtask.dart)
#19284  _startMicrotaskLoop (dart:async/schedule_microtask.dart)
#19285  _Timer._runTimers (dart:isolate-patch/timer_impl.dart)
#19286  _Timer._handleMessage (dart:isolate-patch/timer_impl.dart)
#19287  _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart)


#0      BulkFixProcessor._fixSingleDiagnostic (package:analysis_server/src/services/correction/bulk_fix_processor.dart:786)
<asynchronous suspension>
#1      BulkFixProcessor._fixErrorsInLibraryUnit (package:analysis_server/src/services/correction/bulk_fix_processor.dart:628)
<asynchronous suspension>
#2      BulkFixProcessor._fixErrorsInLibraryAt (package:analysis_server/src/services/correction/bulk_fix_processor.dart:577)
<asynchronous suspension>
#3      BulkFixProcessor._computeFixes (package:analysis_server/src/services/correction/bulk_fix_processor.dart:510)
<asynchronous suspension>
#4      EditBulkFixes.handle (package:analysis_server/src/handler/legacy/edit_bulk_fixes.dart:58)
<asynchronous suspension>
#5      LegacyAnalysisServer.handleRequest.<anonymous closure>.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:646)
<asynchronous suspension>
#6      OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:199)
<asynchronous suspension>
#7      LegacyAnalysisServer.handleRequest.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:626)
<asynchronous suspension>


#0      BulkFixProcessor._fixSingleDiagnostic (package:analysis_server/src/services/correction/bulk_fix_processor.dart:786)
<asynchronous suspension>
#1      BulkFixProcessor._fixErrorsInLibraryUnit (package:analysis_server/src/services/correction/bulk_fix_processor.dart:628)
<asynchronous suspension>
#2      BulkFixProcessor._fixErrorsInLibraryAt (package:analysis_server/src/services/correction/bulk_fix_processor.dart:577)
<asynchronous suspension>
#3      BulkFixProcessor._computeFixes (package:analysis_server/src/services/correction/bulk_fix_processor.dart:510)
<asynchronous suspension>
#4      EditBulkFixes.handle (package:analysis_server/src/handler/legacy/edit_bulk_fixes.dart:58)
<asynchronous suspension>
#5      LegacyAnalysisServer.handleRequest.<anonymous closure>.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:646)
<asynchronous suspension>
#6      OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:199)
<asynchronous suspension>
#7      LegacyAnalysisServer.handleRequest.<anonymous closure> (package:analysis_server/src/legacy_analysis_server.dart:626)
<asynchronous suspension>

When trying to apply a quick fix in Intellij where the warning is related to specify_nonobvious_local_variable_types, it doesn't do anything.

When checking where this happens, it always happens where a generic type is being used. I can not share file's content but I can share some obscured snippets if needed.

In all cases, here are some samples:
Example 1:

                final List<void Function(T model)> _onAdded = [];
                for (var element in _onAdded) {
                  final T model = event.modelsNow.firstWhere((T element) => element.id == change.doc.id);
                  element(model);
                }

the fix is

                final List<void Function(T model)> _onAdded = [];
                for (void Function(T model) element in _onAdded) {
                  final T model = event.modelsNow.firstWhere((T element) => element.id == change.doc.id);
                  element(model);
                }

Example 2:

  void addAll(Iterable<DocumentReference<T>> elements) {
    final newElements = elements.where((e) => state.allElements.contains(e) == false).toList();
    if (newElements.isEmpty) return;

    final updatedBatches = _addToBatches(state.batches, newElements);
    state = state.copyWith(batches: updatedBatches, allElements: {...state.allElements, ...newElements});
  }

the fix is

  void addAll(Iterable<DocumentReference<T>> elements) {
    final List<DocumentReference<T>> newElements = elements
        .where((e) => state.allElements.contains(e) == false)
        .toList();
    if (newElements.isEmpty) return;

    final List<WhereInBatch<DocumentReference<T>>> updatedBatches = _addToBatches(state.batches, newElements);
    state = state.copyWith(batches: updatedBatches, allElements: {...state.allElements, ...newElements});
  }

dart --version
Dart SDK version: 3.10.0 (stable) (Thu Nov 6 05:24:55 2025 -0800) on "macos_arm64"

*Edit: Moved final List<void Function(T model)> _onAdded = []; from example 2 to example 1 as it was a mistake.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-devexpFor issues related to the analysis server, IDE support, linter, `dart fix`, and diagnostic messages.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions