dart-lang / sdk

The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
10.08k stars 1.56k forks source link

LateInitializationError in ResolutionVisitor.visitForEachPartsWithPattern in resolution_visitor.dart #56296

Open DanTup opened 1 month ago

DanTup commented 1 month ago
Dart SDK version: 3.6.0-edge.d04394c834ba55e3dd524629b85ba63e943d1a68 (main) (Sun Jul 21 01:20:31 2024 +0000) on "macos_arm64"

With the following (incomplete) code:

(Edit: Shorter repro)

const x = 

void main() {
  for (final MapEntry(key: a, value: b) in y) {
      for (final z in )
  }
}

I see the following server exception occur:

1721580740812:Ex:Analysis failed:: /Users/danny/Dev/Danny/ea_play_games/bin/repro.dart context:: exception_20240721_175220_811
LateInitializationError:: Field 'variables' has already been initialized.
#0      LateError._throwFieldAlreadyInitialized (dart::_internal-patch/internal_patch.dart::198::5)
#1      ForEachPartsWithPatternImpl.variables= (package::analyzer/src/dart/ast/ast.dart)
#2      ResolutionVisitor.visitForEachPartsWithPattern (package::analyzer/src/dart/resolver/resolution_visitor.dart::684::10)
#3      ForEachPartsWithPatternImpl.accept (package::analyzer/src/dart/ast/ast.dart::7244::15)
#4      ForStatementImpl.visitChildren (package::analyzer/src/dart/ast/ast.dart::7942::19)
#5      RecursiveAstVisitor.visitForStatement (package::analyzer/dart/ast/visitor.dart::1206::10)
#6      ForStatementImpl.accept (package::analyzer/src/dart/ast/ast.dart::7938::50)
#7      NodeListImpl.accept (package::analyzer/src/dart/ast/ast.dart::12587::20)
#8      ResolutionVisitor.visitBlock (package::analyzer/src/dart/resolver/resolution_visitor.dart::232::18)
#9      BlockImpl.accept (package::analyzer/src/dart/ast/ast.dart::2087::50)
#10     BlockFunctionBodyImpl.visitChildren (package::analyzer/src/dart/ast/ast.dart::2047::12)
#11     RecursiveAstVisitor.visitBlockFunctionBody (package::analyzer/dart/ast/visitor.dart::900::10)
#12     BlockFunctionBodyImpl.accept (package::analyzer/src/dart/ast/ast.dart::2039::50)
#13     ResolutionVisitor.visitFunctionExpression.<anonymous closure>.<anonymous closure> (package::analyzer/src/dart/resolver/resolution_visitor.dart::800::19)
#14     ResolutionVisitor._withNameScope (package::analyzer/src/dart/resolver/resolution_visitor.dart::1892::8)
#15     ResolutionVisitor.visitFunctionExpression.<anonymous closure> (package::analyzer/src/dart/resolver/resolution_visitor.dart::791::7)
#16     ResolutionVisitor._withElementHolder (package::analyzer/src/dart/resolver/resolution_visitor.dart::1870::8)
#17     ResolutionVisitor.visitFunctionExpression (package::analyzer/src/dart/resolver/resolution_visitor.dart::790::5)
#18     FunctionExpressionImpl.accept (package::analyzer/src/dart/ast/ast.dart::8303::50)
#19     AstResolver.resolveExpression (package::analyzer/src/summary2/ast_resolver.dart::107::10)
#20     ConstantInitializersResolver._resolveVariable (package::analyzer/src/summary2/top_level_inference.dart::87::17)
#21     _Array.forEach (dart::core-patch/array.dart::41::8)
#22     ConstantInitializersResolver.perform (package::analyzer/src/summary2/top_level_inference.dart::47::32)
#23     Linker._resolveConstantInitializers (package::analyzer/src/summary2/link.dart::434::40)
#24     Linker._buildOutlines (package::analyzer/src/summary2/link.dart::270::5)
<asynchronous suspension>
#25     Linker.link.<anonymous closure> (package::analyzer/src/summary2/link.dart::123::7)
<asynchronous suspension>
#26     OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::174::14)
<asynchronous suspension>
#27     Linker.link (package::analyzer/src/summary2/link.dart::122::5)
<asynchronous suspension>
#28     link (package::analyzer/src/summary2/link.dart::41::3)
<asynchronous suspension>
#29     LibraryContext.load.loadBundle.<anonymous closure> (package::analyzer/src/dart/analysis/library_context.dart::211::22)
<asynchronous suspension>
#30     OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::174::14)
<asynchronous suspension>
#31     LibraryContext.load.loadBundle (package::analyzer/src/dart/analysis/library_context.dart::208::24)
<asynchronous suspension>
#32     LibraryContext.load.<anonymous closure> (package::analyzer/src/dart/analysis/library_context.dart::296::7)
<asynchronous suspension>
#33     PerformanceLog.runAsync (package::analyzer/src/dart/analysis/performance_logger.dart::50::14)
<asynchronous suspension>
#34     LibraryContext.load (package::analyzer/src/dart/analysis/library_context.dart::287::5)
<asynchronous suspension>
#35     AnalysisDriver._analyzeFileImpl.<anonymous closure>.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1361::13)
<asynchronous suspension>
#36     OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::174::14)
<asynchronous suspension>
#37     AnalysisDriver._analyzeFileImpl.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1358::9)
<asynchronous suspension>
#38     PerformanceLog.runAsync (package::analyzer/src/dart/analysis/performance_logger.dart::50::14)
<asynchronous suspension>
#39     AnalysisDriver._analyzeFile.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1308::9)
<asynchronous suspension>
#40     OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::174::14)
<asynchronous suspension>
#41     AnalysisDriver._analyzeFile (package::analyzer/src/dart/analysis/driver.dart::1305::5)
<asynchronous suspension>
#42     AnalysisDriver.performWork (package::analyzer/src/dart/analysis/driver.dart::1238::9)
<asynchronous suspension>
#43     AnalysisDriverScheduler._run (package::analyzer/src/dart/analysis/driver.dart::2447::7)
<asynchronous suspension>

#0      LibraryContext._throwLibraryCycleLinkException (package::analyzer/src/dart/analysis/library_context.dart::425::5)
#1      LibraryContext.load.loadBundle (package::analyzer/src/dart/analysis/library_context.dart::222::11)
<asynchronous suspension>
#2      LibraryContext.load.<anonymous closure> (package::analyzer/src/dart/analysis/library_context.dart::296::7)
<asynchronous suspension>
#3      PerformanceLog.runAsync (package::analyzer/src/dart/analysis/performance_logger.dart::50::14)
<asynchronous suspension>
#4      LibraryContext.load (package::analyzer/src/dart/analysis/library_context.dart::287::5)
<asynchronous suspension>
#5      AnalysisDriver._analyzeFileImpl.<anonymous closure>.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1361::13)
<asynchronous suspension>
#6      OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::174::14)
<asynchronous suspension>
#7      AnalysisDriver._analyzeFileImpl.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1358::9)
<asynchronous suspension>
#8      PerformanceLog.runAsync (package::analyzer/src/dart/analysis/performance_logger.dart::50::14)
<asynchronous suspension>
#9      AnalysisDriver._analyzeFile.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1308::9)
<asynchronous suspension>
#10     OperationPerformanceImpl.runAsync (package::analyzer/src/util/performance/operation_performance.dart::174::14)
<asynchronous suspension>
#11     AnalysisDriver._analyzeFile (package::analyzer/src/dart/analysis/driver.dart::1305::5)
<asynchronous suspension>
#12     AnalysisDriver.performWork (package::analyzer/src/dart/analysis/driver.dart::1238::9)
<asynchronous suspension>
#13     AnalysisDriverScheduler._run (package::analyzer/src/dart/analysis/driver.dart::2447::7)
<asynchronous suspension>

#0      new SilentException.wrapInMessage (package::analyzer/exception/exception.dart::105::45)
#1      AnalysisServer.logExceptionResult (package::analysis_server/src/analysis_server.dart::761::23)
#2      _rootRunUnary (dart::async/zone.dart::1415::13)
#3      _CustomZone.runUnary (dart::async/zone.dart::1308::19)
#4      _CustomZone.runUnaryGuarded (dart::async/zone.dart::1217::7)
#5      _BufferingStreamSubscription._sendData (dart::async/stream_impl.dart::365::11)
#6      _DelayedData.perform (dart::async/stream_impl.dart::541::14)
#7      _PendingEvents.handleNext (dart::async/stream_impl.dart::646::11)
#8      _PendingEvents.schedule.<anonymous closure> (dart::async/stream_impl.dart::617::7)
#9      _rootRun (dart::async/zone.dart::1391::47)
#10     _CustomZone.run (dart::async/zone.dart::1301::19)
#11     _CustomZone.runGuarded (dart::async/zone.dart::1209::7)
#12     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart::async/zone.dart::1249::23)
#13     _rootRun (dart::async/zone.dart::1399::13)
#14     _CustomZone.run (dart::async/zone.dart::1301::19)
#15     _CustomZone.runGuarded (dart::async/zone.dart::1209::7)
#16     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart::async/zone.dart::1249::23)
#17     _microtaskLoop (dart::async/schedule_microtask.dart::40::21)
#18     _startMicrotaskLoop (dart::async/schedule_microtask.dart::49::5)
#19     _runPendingImmediateCallback (dart::isolate-patch/isolate_patch.dart::118::13)
#20     _Timer._runTimers (dart::isolate-patch/timer_impl.dart::405::11)
#21     _Timer._handleMessage (dart::isolate-patch/timer_impl.dart::429::5)
#22     _RawReceivePort._handleMessage (dart::isolate-patch/isolate_patch.dart::184::12)

:null
bwilkerson commented 1 month ago

@scheglov