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.2k stars 1.57k forks source link

RangeError in analyzer ElementWalker.getVariable #43447

Open DanTup opened 4 years ago

DanTup commented 4 years ago

I hit this error while working on the analyzer codebase (using the latest nightly SDK).

The context file: exception_20200916_101231_689.zip

The file I was editing: typescript_parser.dart.zip

Note: The code on line 72 is not valid - I'd copy/pasted the class above and was updating it. There's no elementType variable in scope. I'm not sure if that's related to the error though.

@bwilkerson

1600247551752:Ex:Analysis failed:: /Users/danny/Dev/Google/dart-sdk/sdk/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart context:: exception_20200916_101231_689
RangeError (index):: Invalid value:: Only valid value is 0:: 1
#0      List.[] (dart::core-patch/growable_array.dart::177::60)
#1      ElementWalker.getVariable (package::analyzer/src/generated/declaration_resolver.dart::157::46)
#2      ResolutionVisitor.visitVariableDeclaration (package::analyzer/src/dart/resolver/resolution_visitor.dart::950::32)
#3      VariableDeclarationImpl.accept (package::analyzer/src/dart/ast/ast.dart::10475::49)
#4      NodeListImpl.accept (package::analyzer/src/dart/ast/ast.dart::7536::20)
#5      VariableDeclarationListImpl.visitChildren (package::analyzer/src/dart/ast/ast.dart::10581::16)
#6      ResolutionVisitor.visitVariableDeclarationList (package::analyzer/src/dart/resolver/resolution_visitor.dart::980::10)
#7      VariableDeclarationListImpl.accept (package::analyzer/src/dart/ast/ast.dart::10575::15)
#8      FieldDeclarationImpl.visitChildren (package::analyzer/src/dart/ast/ast.dart::4001::17)
#9      RecursiveAstVisitor.visitFieldDeclaration (package::analyzer/dart/ast/visitor.dart::863::10)
#10     ResolutionVisitor.visitFieldDeclaration (package::analyzer/src/dart/resolver/resolution_visitor.dart::439::11)
#11     FieldDeclarationImpl.accept (package::analyzer/src/dart/ast/ast.dart::3996::49)
#12     NodeListImpl.accept (package::analyzer/src/dart/ast/ast.dart::7536::20)
#13     ResolutionVisitor.visitClassDeclaration.<anonymous closure>.<anonymous closure> (package::analyzer/src/dart/resolver/resolution_visitor.dart::242::22)
#14     ResolutionVisitor._withNameScope (package::analyzer/src/dart/resolver/resolution_visitor.dart::1262::8)
#15     ResolutionVisitor.visitClassDeclaration.<anonymous closure> (package::analyzer/src/dart/resolver/resolution_visitor.dart::223::7)
#16     ResolutionVisitor._withElementWalker (package::analyzer/src/dart/resolver/resolution_visitor.dart::1251::8)
#17     ResolutionVisitor.visitClassDeclaration (package::analyzer/src/dart/resolver/resolution_visitor.dart::222::5)
#18     ClassDeclarationImpl.accept (package::analyzer/src/dart/ast/ast.dart::1528::49)
#19     NodeListImpl.accept (package::analyzer/src/dart/ast/ast.dart::7536::20)
#20     CompilationUnitImpl.visitChildren (package::analyzer/src/dart/ast/ast.dart::2126::21)
#21     RecursiveAstVisitor.visitCompilationUnit (package::analyzer/dart/ast/visitor.dart::731::10)
#22     CompilationUnitImpl.accept (package::analyzer/src/dart/ast/ast.dart::2119::49)
#23     LibraryAnalyzer._resolveFile (package::analyzer/src/dart/analysis/library_analyzer.dart::695::10)
#24     LibraryAnalyzer.analyzeSync.<anonymous closure> (package::analyzer/src/dart/analysis/library_analyzer.dart::133::7)
#25     _LinkedHashMapMixin.forEach (dart::collection-patch/compact_hash.dart::377::8)
#26     LibraryAnalyzer.analyzeSync (package::analyzer/src/dart/analysis/library_analyzer.dart::132::11)
#27     LibraryAnalyzer.analyze (package::analyzer/src/dart/analysis/library_analyzer.dart::105::12)
#28     AnalysisDriver._computeAnalysisResult2.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1286::63)
#29     PerformanceLog.run (package::analyzer/src/dart/analysis/performance_logger.dart::32::15)
#30     AnalysisDriver._computeAnalysisResult2 (package::analyzer/src/dart/analysis/driver.dart::1263::20)
#31     AnalysisDriver._computeAnalysisResult.<anonymous closure> (package::analyzer/src/dart/analysis/driver.dart::1216::14)
#32     _rootRun (dart::async/zone.dart::1190::13)
#33     _CustomZone.run (dart::async/zone.dart::1093::19)
#34     _runZoned (dart::async/zone.dart::1630::10)
#35     runZoned (dart::async/zone.dart::1550::10)
#36     NullSafetyUnderstandingFlag.enableNullSafetyTypes (package::analyzer/dart/element/null_safety_understanding_flag.dart::42::12)
#37     AnalysisDriver._computeAnalysisResult (package::analyzer/src/dart/analysis/driver.dart::1215::40)
#38     AnalysisDriver.performWork (package::analyzer/src/dart/analysis/driver.dart::927::33)
<asynchronous suspension>
#39     AnalysisDriverScheduler._run (package::analyzer/src/dart/analysis/driver.dart::1959::24)
<asynchronous suspension>
#40     AnalysisDriverScheduler.start (package::analyzer/src/dart/analysis/driver.dart::1882::5)
#41     new LspAnalysisServer (package::analysis_server/src/lsp/lsp_analysis_server.dart::151::29)
#42     LspSocketServer.createAnalysisServer (package::analysis_server/src/lsp/lsp_socket_server.dart::80::22)
#43     LspStdioAnalysisServer.serveStdio (package::analysis_server/src/server/lsp_stdio_server.dart::28::18)
#44     Driver.startLspServer.<anonymous closure> (package::analysis_server/src/server/driver.dart::710::19)
#45     _rootRun (dart::async/zone.dart::1190::13)
#46     _CustomZone.run (dart::async/zone.dart::1093::19)
#47     _runZoned (dart::async/zone.dart::1630::10)
#48     runZoned (dart::async/zone.dart::1550::10)
#49     Driver._captureExceptions (package::analysis_server/src/server/driver.dart::744::12)
#50     Driver.startLspServer (package::analysis_server/src/server/driver.dart::708::12)
#51     Driver.start (package::analysis_server/src/server/driver.dart::506::7)
#52     main (file::///Users/danny/Dev/Google/dart-sdk/sdk/pkg/analysis_server/bin/server.dart::10::11)
#53     _startIsolate.<anonymous closure> (dart::isolate-patch/isolate_patch.dart::299::32)
#54     _RawReceivePortImpl._handleMessage (dart::isolate-patch/isolate_patch.dart::168::12)
DanTup commented 4 years ago

I've pushed a branch with the exact code I was using in case there isn't enough info above to track down the issue:

https://github.com/DanTup/sdk/commit/ac9f0908e54c497f8ed65ebb25a0de5b41c21ac8

DanTup commented 4 years ago

Oh, it turns out I had two in-progress implementations of LiteralType in the file. Removing one of them seems to have stopped the crash so it's probably related to that.

bwilkerson commented 4 years ago

@scheglov