Skip to content

Analyzer crashes with NoSuchMethodError #41780

@sgrekhov

Description

@sgrekhov

Run analyzer with --enable-experiment=non-nullable on the following code

class C {
}

extension Ext on C {
  int operator [](int index) => index;
}

main() {
  C c = C();
  Ext(c)?.[42];
}

the result is

Unhandled exception:
NoSuchMethodError: The getter 'isDartCoreNull' was called on null.
Receiver: null
Tried calling: isDartCoreNull
#0      Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
#1      TypeSystem.promoteToNonNull (package:analyzer/src/generated/type_system.dart:300:14)
#2      ElementResolver.visitIndexExpression (package:analyzer/src/generated/element_resolver.dart:415:32)
#3      IndexExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5957:49)
#4      ResolverVisitor.visitIndexExpression (package:analyzer/src/generated/resolver.dart:1314:10)
#5      IndexExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5957:49)
#6      ExpressionStatementImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:3708:18)
#7      ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1454:10)
#8      UnifyingAstVisitor.visitExpressionStatement (package:analyzer/dart/ast/visitor.dart:3214:59)
#9      ExpressionStatementImpl.accept (package:analyzer/src/dart/ast/ast.dart:3704:49)
#10     NodeListImpl.accept (package:analyzer/src/dart/ast/ast.dart:7588:20)
#11     BlockImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:1085:17)
#12     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1454:10)
#13     UnifyingAstVisitor.visitBlock (package:analyzer/dart/ast/visitor.dart:3128:31)
#14     ScopedVisitor.visitBlock (package:analyzer/src/generated/resolver.dart:2230:13)
#15     BlockImpl.accept (package:analyzer/src/dart/ast/ast.dart:1081:49)
#16     BlockFunctionBodyImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:1040:13)
#17     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1454:10)
#18     UnifyingAstVisitor.visitBlockFunctionBody (package:analyzer/dart/ast/visitor.dart:3131:55)
#19     ScopedVisitor.visitBlockFunctionBody (package:analyzer/src/generated/resolver.dart:2241:13)
#20     ResolverVisitor.visitBlockFunctionBody (package:analyzer/src/generated/resolver.dart:717:13)
#21     BlockFunctionBodyImpl.accept (package:analyzer/src/dart/ast/ast.dart:1036:49)
#22     FunctionExpressionImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:5008:12)
#23     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1454:10)
#24     UnifyingAstVisitor.visitFunctionExpression (package:analyzer/dart/ast/visitor.dart:3263:57)
#25     ScopedVisitor.visitFunctionExpression (package:analyzer/src/generated/resolver.dart:2579:13)
#26     ResolverVisitor.visitFunctionExpression (package:analyzer/src/generated/resolver.dart:1174:11)
#27     FunctionExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:5002:49)
#28     FunctionDeclarationImpl.visitChildren (package:analyzer/src/dart/ast/ast.dart:4865:26)
#29     ResolverVisitor.visitNode (package:analyzer/src/generated/resolver.dart:1454:10)
#30     UnifyingAstVisitor.visitFunctionDeclaration (package:analyzer/dart/ast/visitor.dart:3256:59)
#31     ScopedVisitor.visitFunctionDeclarationInScope (package:analyzer/src/generated/resolver.dart:2572:11)
#32     ResolverVisitor.visitFunctionDeclarationInScope (package:analyzer/src/generated/resolver.dart:1140:11)
#33     ScopedVisitor.visitFunctionDeclaration (package:analyzer/src/generated/resolver.dart:2565:7)
#34     ResolverVisitor.visitFunctionDeclaration (package:analyzer/src/generated/resolver.dart:1112:11)
#35     FunctionDeclarationImpl.accept (package:analyzer/src/dart/ast/ast.dart:4858:49)
#36     ResolverVisitor.visitCompilationUnit (package:analyzer/src/generated/resolver.dart:814:23)
#37     CompilationUnitImpl.accept (package:analyzer/src/dart/ast/ast.dart:2127:49)
#38     LibraryAnalyzer._resolveFile (package:analyzer/src/dart/analysis/library_analyzer.dart:734:10)
#39     LibraryAnalyzer.analyzeSync.<anonymous closure> (package:analyzer/src/dart/analysis/library_analyzer.dart:148:7)
#40     _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
#41     LibraryAnalyzer.analyzeSync (package:analyzer/src/dart/analysis/library_analyzer.dart:147:11)
#42     LibraryAnalyzer.analyze.<anonymous closure> (package:analyzer/src/dart/analysis/library_analyzer.dart:116:14)
#43     _PerformanceTagImpl.makeCurrentWhile (package:analyzer/src/generated/utilities_general.dart:256:15)
#44     LibraryAnalyzer.analyze (package:analyzer/src/dart/analysis/library_analyzer.dart:115:43)
#45     AnalysisDriver._computeAnalysisResult2.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1313:63)
#46     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:34:15)
#47     AnalysisDriver._computeAnalysisResult2 (package:analyzer/src/dart/analysis/driver.dart:1289:20)
#48     AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1240:14)
#49     _rootRun (dart:async/zone.dart:1184:13)
#50     _CustomZone.run (dart:async/zone.dart:1077:19)
#51     _runZoned (dart:async/zone.dart:1619:10)
#52     runZoned (dart:async/zone.dart:1539:10)
#53     NullSafetyUnderstandingFlag.enableNullSafetyTypes (package:analyzer/dart/element/null_safety_understanding_flag.dart:42:12)
#54     AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:1239:40)
#55     AnalysisDriver.getErrors (package:analyzer/src/dart/analysis/driver.dart:565:41)
#56     AnalyzerImpl.prepareErrors (package:analyzer_cli/src/analyzer_impl.dart:129:49)
<asynchronous suspension>
#57     AnalyzerImpl._analyze (package:analyzer_cli/src/analyzer_impl.dart:168:11)
<asynchronous suspension>
#58     AnalyzerImpl.analyze (package:analyzer_cli/src/analyzer_impl.dart:105:18)
<asynchronous suspension>
#59     Driver._runAnalyzer (package:analyzer_cli/src/driver.dart:636:21)
#60     Driver._analyzeAllImpl (package:analyzer_cli/src/driver.dart:353:30)
#61     _RootZone.runUnary (dart:async/zone.dart:1439:54)
#62     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#63     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:686:45)
#64     Future._propagateToListeners (dart:async/future_impl.dart:715:32)
#65     Future._addListener.<anonymous closure> (dart:async/future_impl.dart:391:9)
#66     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#67     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
#68     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
#69     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)

#0      AnalysisDriver._computeAnalysisResult2.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1349:9)
#1      PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:34:15)
#2      AnalysisDriver._computeAnalysisResult2 (package:analyzer/src/dart/analysis/driver.dart:1289:20)
#3      AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1240:14)
#4      _rootRun (dart:async/zone.dart:1184:13)
#5      _CustomZone.run (dart:async/zone.dart:1077:19)
#6      _runZoned (dart:async/zone.dart:1619:10)
#7      runZoned (dart:async/zone.dart:1539:10)
#8      NullSafetyUnderstandingFlag.enableNullSafetyTypes (package:analyzer/dart/element/null_safety_understanding_flag.dart:42:12)
#9      AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:1239:40)
#10     AnalysisDriver.getErrors (package:analyzer/src/dart/analysis/driver.dart:565:41)
#11     AnalyzerImpl.prepareErrors (package:analyzer_cli/src/analyzer_impl.dart:129:49)
<asynchronous suspension>
#12     AnalyzerImpl._analyze (package:analyzer_cli/src/analyzer_impl.dart:168:11)
<asynchronous suspension>
#13     AnalyzerImpl.analyze (package:analyzer_cli/src/analyzer_impl.dart:105:18)
<asynchronous suspension>
#14     Driver._runAnalyzer (package:analyzer_cli/src/driver.dart:636:21)
#15     Driver._analyzeAllImpl (package:analyzer_cli/src/driver.dart:353:30)
#16     _RootZone.runUnary (dart:async/zone.dart:1439:54)
#17     _FutureListener.handleValue (dart:async/future_impl.dart:141:18)
#18     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:686:45)
#19     Future._propagateToListeners (dart:async/future_impl.dart:715:32)
#20     Future._addListener.<anonymous closure> (dart:async/future_impl.dart:391:9)
#21     _microtaskLoop (dart:async/schedule_microtask.dart:43:21)
#22     _startMicrotaskLoop (dart:async/schedule_microtask.dart:52:5)
#23     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:118:13)
#24     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:169:5)

Tested with dartanalyzer version 2.9.0-5.0.dev

Metadata

Metadata

Assignees

Labels

NNBDIssues related to NNBD ReleasecrashProcess exits with SIGSEGV, SIGABRT, etc. An unhandled exception is not a crash.legacy-area-analyzerUse area-devexp instead.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions