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

Bad state in analyzer #49201

Open bwilkerson opened 2 years ago

bwilkerson commented 2 years ago

Dart analysis issue

Bad state: [_variableIndex: 2][_variables.length: 2][variables: [Expression expression, List cases]][element.source: /Users/brianwilkerson/src/dart/sdk/sdk/pkg/kernel/lib/ast.dart][libraryFilePath: null][unitFilePath: null]

Version information

Details

Bad state: [_variableIndex: 2][_variables.length: 2][variables: [Expression expression, List cases]][element.source: /Users/brianwilkerson/src/dart/sdk/sdk/pkg/kernel/lib/ast.dart][libraryFilePath: null][unitFilePath: null]

0 ElementWalker.getVariable (package:analyzer/src/generated/element_walker.dart:193:7)

1 ResolutionVisitor.visitVariableDeclaration (package:analyzer/src/dart/resolver/resolution_visitor.dart:1082:33)

2 VariableDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:11509:50)

3 NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:8341:20)

4 VariableDeclarationListImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:11603:16)

5 ResolutionVisitor.visitVariableDeclarationList (package:analyzer/src/dart/resolver/resolution_visitor.dart:1112:10)

6 VariableDeclarationListImpl.accept (package:analyzer/src/dart/ast/ast.dart:11597:15)

7 FieldDeclarationImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:4375:16)

8 RecursiveAstVisitor.visitFieldDeclaration (package:analyzer/dart/ast/visitor.dart:924:10)

9 FieldDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:4370:50)

10 NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:8341:20)

11 ResolutionVisitor.visitClassDeclaration.. (package:analyzer/src/dart/resolver/resolution_visitor.dart:248:22)

12 ResolutionVisitor._withNameScope (package:analyzer/src/dart/resolver/resolution_visitor.dart:1412:8)

13 ResolutionVisitor.visitClassDeclaration. (package:analyzer/src/dart/resolver/resolution_visitor.dart:229:7)

14 ResolutionVisitor._withElementWalker (package:analyzer/src/dart/resolver/resolution_visitor.dart:1401:8)

15 ResolutionVisitor.visitClassDeclaration (package:analyzer/src/dart/resolver/resolution_visitor.dart:228:5)

16 ClassDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:1639:50)

17 NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:8341:20)

18 CompilationUnitImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:2258:21)

19 RecursiveAstVisitor.visitCompilationUnit (package:analyzer/dart/ast/visitor.dart:774:10)

20 CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2251:50)

21 LibraryAnalyzer._resolveFile (package:analyzer/src/dart/analysis/library_analyzer.dart:734:10)

22 LibraryAnalyzer._parseAndResolve. (package:analyzer/src/dart/analysis/library_analyzer.dart:585:7)

23 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:614:13)

24 LibraryAnalyzer._parseAndResolve (package:analyzer/src/dart/analysis/library_analyzer.dart:584:11)

25 LibraryAnalyzer.analyze (package:analyzer/src/dart/analysis/library_analyzer.dart:98:17)

26 AnalysisDriver._computeResolvedLibrary. (package:analyzer/src/dart/analysis/driver.dart:1426:12)

#27 PerformanceLog.runAsync (package:analyzer/src/dart/analysis/performance_logger.dart:50:14) #28 AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1095:22) #29 AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2107:7) ``` #0 EditGetFixesHandler._computeDartFixes (package:analysis_server/src/handler/legacy/edit_get_fixes.dart:179:13) #1 EditGetFixesHandler.handle (package:analysis_server/src/handler/legacy/edit_get_fixes.dart:78:26) ``` ## Debug log ``` 1654611249704 <= {"event":"analysis.implemented","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analyzer/lib/src/dart/analysis/driver.dart","classes":[{"offset":4693,"length":14},{"offse... 1654611250459 => {"id":"18882","method":"edit.getAssists","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analyzer/lib/src/dart/analysis/driver.dart","offset":50044,"length":0},"clientReq... 1654611250497 <= {"id":"18882","result":{"assists":[]}} 1654611257068 => {"id":"18883","method":"analysis.setPriorityFiles","params":{"files":["/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart"]},"cli... 1654611257068 => {"id":"18884","method":"analysis.setSubscriptions","params":{"subscriptions":{"OVERRIDES":["/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analysis_server/lib/src/analytics/noop_analytics... 1654611257072 <= {"id":"18883"} 1654611257072 <= {"id":"18884"} 1654611257085 <= {"event":"server.status","params":{"analysis":{"isAnalyzing":true}}} 1654611257089 <= {"event":"analysis.errors","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart","errors":[]}} 1654611257091 <= {"event":"analysis.highlights","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart","regions":[{"type":"DIRECTIV... 1654611257092 <= {"event":"analysis.navigation","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart","regions":[{"offset":223,"le... 1654611257094 <= {"event":"analysis.outline","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart","kind":"LIBRARY","outline":{"el... 1654611257095 <= {"event":"analysis.overrides","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart","overrides":[{"offset":726,"l... 1654611257104 <= {"event":"server.status","params":{"analysis":{"isAnalyzing":false}}} 1654611257105 <= {"event":"analysis.implemented","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart","classes":[],"members":[]}} 1654611257404 => {"id":"18885","method":"edit.getAssists","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/analysis_server/lib/src/analytics/noop_analytics_manager.dart","offset":942,"leng... 1654611257411 <= {"id":"18885","result":{"assists":[]}} 1654611260001 => {"id":"18886","method":"analysis.setPriorityFiles","params":{"files":["/Users/brianwilkerson/src/dart/sdk/sdk/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart"]},"clientReque... 1654611260001 => {"id":"18887","method":"analysis.setSubscriptions","params":{"subscriptions":{"OVERRIDES":["/Users/brianwilkerson/src/dart/sdk/sdk/pkg/front_end/lib/src/fasta/kernel/inference_visitor... 1654611260005 <= {"id":"18886"} 1654611260007 <= {"id":"18887"} 1654611260021 <= {"event":"server.status","params":{"analysis":{"isAnalyzing":true}}} 1654611260858 => {"id":"18888","method":"edit.getFixes","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart","offset":256631},"clientRequ... 1654611261086 <= {"event":"analysis.errors","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart","errors":[{"severity":"ERROR","type":"CO... 1654611261606 <= {"event":"analysis.highlights","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart","regions":[{"type":"DIRECTIVE","offs... 1654611261754 <= {"event":"analysis.navigation","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart","regions":[{"offset":224,"length":66... 1654611261797 <= {"event":"analysis.outline","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart","kind":"LIBRARY","outline":{"element":{... 1654611261801 <= {"event":"analysis.overrides","params":{"file":"/Users/brianwilkerson/src/dart/sdk/sdk/pkg/front_end/lib/src/fasta/kernel/inference_visitor.dart","overrides":[{"offset":3373,"length":... 1654611261818 <= {"event":"server.status","params":{"analysis":{"isAnalyzing":false}}} 1654611261970 <= {"id":"18888","error":{"code":"SERVER_ERROR","message":"Bad state: [_variableIndex: 2][_variables.length: 2][variables: [Expression expression, List cases]][element.source... ```
bwilkerson commented 2 years ago

@scheglov

scheglov commented 2 years ago

I was able to reproduce a similar exception with

  solo_test_changeFile_after_removeFile() async {
    final a = newFile('$testPackageLibPath/a.dart', r'''
class A {
  var foo = 0;
}
''');

    final b = newFile('$testPackageLibPath/b.dart', '');

    final driver = driverFor(a.path);

    await driver.getResult(a.path);

    driver.removeFile(b.path);

    newFile('$testPackageLibPath/a.dart', r'''
class A {
  var foo = 0;
  var bar = 0;
}
''');

    driver.changeFile(a.path);
    await driver.getResult(a.path);
  }

...we get

  Bad state: [_variableIndex: 1][_variables.length: 1][variables: [int foo]][element.source: /home/test/lib/a.dart][libraryFilePath: null][unitFilePath: null]
  #0      ElementWalker.getVariable (package:analyzer/src/generated/element_walker.dart:193:7)
  #1      ResolutionVisitor.visitVariableDeclaration (package:analyzer/src/dart/resolver/resolution_visitor.dart:1082:33)
  #2      VariableDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:11509:50)
  #3      NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:8341:20)
  #4      VariableDeclarationListImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:11603:16)
  #5      ResolutionVisitor.visitVariableDeclarationList (package:analyzer/src/dart/resolver/resolution_visitor.dart:1112:10)