Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Analysis server crashes after increasing min SDK constraint to 2.15 #47963

Closed
spkersten opened this issue Dec 17, 2021 · 5 comments
Closed

Analysis server crashes after increasing min SDK constraint to 2.15 #47963

spkersten opened this issue Dec 17, 2021 · 5 comments
Assignees
Labels
analyzer-crash-report Issues which have been reported due to an analysis server crash area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. P1 A high priority bug; for example, a single project is unusable or has many test failures

Comments

@spkersten
Copy link
Contributor

spkersten commented Dec 17, 2021

After increasing the minimum SDK constraint of our packages to 2.15, the analysis server crashes after a while. Breaking syntax highlighting, code completion, etc. Things worked fine when the constraint was still >=2.12 in our pubspec.yaml files and >=2.14.0 in pubspec.lock files due to some dependency that required it (but using Flutter 2.8/Dart 2.15).

Dart analysis issue

Exception: Missing implementation of visitImplicitCallReferenceImpl

Version information

  • Dart SDK 2.15.0
  • Dart IntelliJ 213.5744.122
  • IntelliJ IDEA 2021.3
  • Mac OS X 11.6.1

Details

Exception: Missing implementation of visitImplicitCallReferenceImpl

#0      ThrowingAstVisitor._throw (package:analyzer/dart/ast/visitor.dart:2247:5)
#1      ThrowingAstVisitor.visitImplicitCallReference (package:analyzer/dart/ast/visitor.dart:2047:64)
#2      ImplicitCallReferenceImpl.accept (package:analyzer/src/dart/ast/ast.dart:5872:20)
#3      AstBinaryWriter._writeNode (package:analyzer/src/summary2/ast_binary_writer.dart:875:10)
#4      AstBinaryWriter.visitNamedExpression (package:analyzer/src/summary2/ast_binary_writer.dart:512:5)
#5      NamedExpressionImpl.accept (package:analyzer/src/dart/ast/ast.dart:7448:50)
#6      AstBinaryWriter._writeNodeList (package:analyzer/src/summary2/ast_binary_writer.dart:881:19)
#7      AstBinaryWriter.visitArgumentList (package:analyzer/src/summary2/ast_binary_writer.dart:57:5)
#8      ArgumentListImpl.accept (package:analyzer/src/dart/ast/ast.dart:373:50)
#9      AstBinaryWriter._writeNode (package:analyzer/src/summary2/ast_binary_writer.dart:875:10)
#10     AstBinaryWriter.visitRedirectingConstructorInvocation (package:analyzer/src/summary2/ast_binary_writer.dart:624:5)
#11     RedirectingConstructorInvocationImpl.accept (package:analyzer/src/dart/ast/ast.dart:8639:15)
#12     ResolutionSink._writeNode (package:analyzer/src/summary2/bundle_writer.dart:674:10)
#13     ResolutionSink._writeNodeList (package:analyzer/src/summary2/bundle_writer.dart:680:7)
#14     BundleWriter._writeConstructorElement.<anonymous closure> (package:analyzer/src/summary2/bundle_writer.dart:166:23)
#15     _LocalElementIndexer.withElements (package:analyzer/src/summary2/bundle_writer.dart:922:6)
#16     BundleWriter._writeConstructorElement (package:analyzer/src/summary2/bundle_writer.dart:163:35)
#17     BundleWriter._writeList (package:analyzer/src/summary2/bundle_writer.dart:273:19)
#18     BundleWriter._writeClassElement.<anonymous closure> (package:analyzer/src/summary2/bundle_writer.dart:149:9)
#19     BundleWriter._writeTypeParameters.<anonymous closure> (package:analyzer/src/summary2/bundle_writer.dart:422:8)
#20     _LocalElementIndexer.withElements (package:analyzer/src/summary2/bundle_writer.dart:922:6)
#21     BundleWriter._writeTypeParameters (package:analyzer/src/summary2/bundle_writer.dart:420:35)
#22     BundleWriter._writeClassElement (package:analyzer/src/summary2/bundle_writer.dart:134:5)
#23     BundleWriter._writeList (package:analyzer/src/summary2/bundle_writer.dart:273:19)
#24     BundleWriter._writeUnitElement (package:analyzer/src/summary2/bundle_writer.dart:434:5)
#25     BundleWriter.writeLibraryElement (package:analyzer/src/summary2/bundle_writer.dart:112:7)
#26     Linker._writeLibraries (package:analyzer/src/summary2/link.dart:218:20)
#27     Linker.link (package:analyzer/src/summary2/link.dart:77:5)
#28     link (package:analyzer/src/summary2/link.dart:33:10)
#29     LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:171:30)
#30     SetMixin.forEach (dart:collection/set.dart:142:30)
#31     LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#32     SetMixin.forEach (dart:collection/set.dart:142:30)
#33     LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#34     SetMixin.forEach (dart:collection/set.dart:142:30)
#35     LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#36     SetMixin.forEach (dart:collection/set.dart:142:30)
#37     LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#38     SetMixin.forEach (dart:collection/set.dart:142:30)
#39     LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#40     LibraryContext.load2.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:201:7)
#41     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#42     LibraryContext.load2 (package:analyzer/src/dart/analysis/library_context.dart:199:12)
#43     AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1367:24)
#44     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#45     AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:1354:20)
#46     AnalysisDriver._computeIndex (package:analyzer/src/dart/analysis/driver.dart:1427:26)
#47     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1097:39)
#48     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2062:24)
<asynchronous suspension>


#0      LibraryContext._throwLibraryCycleLinkException (package:analyzer/src/dart/analysis/library_context.dart:262:5)
#1      LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:176:11)
#2      SetMixin.forEach (dart:collection/set.dart:142:30)
#3      LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#4      SetMixin.forEach (dart:collection/set.dart:142:30)
#5      LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#6      SetMixin.forEach (dart:collection/set.dart:142:30)
#7      LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#8      SetMixin.forEach (dart:collection/set.dart:142:30)
#9      LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#10     SetMixin.forEach (dart:collection/set.dart:142:30)
#11     LibraryContext.load2.loadBundle (package:analyzer/src/dart/analysis/library_context.dart:108:32)
#12     LibraryContext.load2.<anonymous closure> (package:analyzer/src/dart/analysis/library_context.dart:201:7)
#13     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#14     LibraryContext.load2 (package:analyzer/src/dart/analysis/library_context.dart:199:12)
#15     AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1367:24)
#16     PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#17     AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:1354:20)
#18     AnalysisDriver._computeIndex (package:analyzer/src/dart/analysis/driver.dart:1427:26)
#19     AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1097:39)
#20     AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2062:24)
<asynchronous suspension>

#0      AnalysisDriver._computeAnalysisResult.<anonymous closure> (package:analyzer/src/dart/analysis/driver.dart:1407:9)
#1      PerformanceLog.run (package:analyzer/src/dart/analysis/performance_logger.dart:32:15)
#2      AnalysisDriver._computeAnalysisResult (package:analyzer/src/dart/analysis/driver.dart:1354:20)
#3      AnalysisDriver._computeIndex (package:analyzer/src/dart/analysis/driver.dart:1427:26)
#4      AnalysisDriver.performWork (package:analyzer/src/dart/analysis/driver.dart:1097:39)
#5      AnalysisDriverScheduler._run (package:analyzer/src/dart/analysis/driver.dart:2062:24)
<asynchronous suspension>

Debug log

1639730511389 <= {"event":"flutter.outline","params":{"file":"...","outline":{"kind":"D...
1639730511397 <= {"event":"server.status","params":{"analysis":{"isAnalyzing":false}}}
1639730511397 <= {"event":"analysis.implemented","params":{"file":"...","classes":[],"m...
1639730511756 => {"id":"141","method":"edit.getAssists","params":{"file":"...","offset"...
1639730511767 <= {"id":"141","result":{"assists":[{"message":"Add explicit 'show' combinator","edits":[{"file":"...
1639730513500 => {"id":"142","method":"edit.getAssists","params":{"file":"...","offset"...
1639730513507 <= {"id":"142","result":{"assists":[]}}
1639730513671 => {"id":"143","method":"analysis.setPriorityFiles","params":{"files":["..."]},"clientRequestTim...
1639730513671 => {"id":"144","method":"analysis.setSubscriptions","params":{"subscriptions":{"CLOSING_LABELS":["...
1639730513678 <= {"id":"143"}
1639730513679 <= {"id":"144"}
1639730513686 <= {"event":"server.status","params":{"analysis":{"isAnalyzing":true}}}
1639730513707 => {"id":"145","method":"flutter.setSubscriptions","params":{"subscriptions":{"OUTLINE":[]}}}
1639730513707 => {"id":"146","method":"flutter.setSubscriptions","params":{"subscriptions":{"OUTLINE":["..."]}...
1639730513712 <= {"id":"145"}
1639730513713 <= {"id":"146"}
1639730513978 => {"id":"147","method":"edit.getAssists","params":{"file":"...","offset":228,"length":0},"clien...
1639730515935 <= {"event":"analysis.errors","params":{"file":"...","errors":[]}}
1639730515935 <= {"id":"147","result":{"assists":[]}}
1639730515936 <= {"event":"analysis.highlights","params":{"file":"...","regions":[{"type":"DIRECTIVE","offset"...
1639730515937 <= {"event":"analysis.navigation","params":{"file":"...","regions":[{"offset":7,"length":22,"tar...
1639730515937 <= {"event":"analysis.closingLabels","params":{"file":"...","labels":[]}}
1639730515937 <= {"event":"analysis.outline","params":{"file":"...","kind":"LIBRARY","outline":{"element":{"ki...
1639730515937 <= {"event":"analysis.overrides","params":{"file":"...","overrides":[]}}
1639730515937 <= {"event":"flutter.outline","params":{"file":"...","outline":{"kind":"DART_ELEMENT","offset":0...
1639730515949 <= {"event":"server.status","params":{"analysis":{"isAnalyzing":false}}}
1639730515949 <= {"event":"analysis.implemented","params":{"file":"...","classes":[],"members":[]}}
1639730516415 <= {"event":"analysis.implemented","params":{"file":"...","classes":[],"members":[]}}
1639730516419 <= {"event":"analysis.implemented","params":{"file":"...","classes":[],"members":[]}}
1639730516425 <= {"event":"analysis.implemented","params":{"file":"...","classes":[{"offset":240,"...
@spkersten
Copy link
Contributor Author

spkersten commented Dec 17, 2021

Neither the commit that introduced ImplicitCallReference (1801969) nor the one that started producing them (57a2e7e) seems to have updated AstBinaryWriter for them.

@lrhn lrhn added the area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. label Dec 19, 2021
@srawlins srawlins added analyzer-crash-report Issues which have been reported due to an analysis server crash P1 A high priority bug; for example, a single project is unusable or has many test failures labels Dec 25, 2021
@srawlins srawlins self-assigned this Dec 28, 2021
@srawlins
Copy link
Member

I can reproduce this in a unit test in ResynthesizeAstKeepLinkingTest; the issue here is an implicit call reference (c standing in for c.call) in an argument list in a redirecting constructor invocation in a const constructor.

copybara-service bot pushed a commit that referenced this issue Dec 30, 2021
Bug: #47963
Change-Id: Ice412be0ced087f90486e9e1612e3be616ec6d6b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/225760
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
@srawlins
Copy link
Member

Fixed by 4b16e02

@spkersten
Copy link
Contributor Author

spkersten commented Feb 18, 2022

@srawlins The commit you mention has 2.16.0-xx labels, I'm assuming that means it is fixed in Dart 2.16.0. But I still see the issue with Dart 2.16.1.

I managed to narrow it down to the code that causes the issue (edit: I see that this is basically what you already mentioned). In this example, uncommenting the const causes all IDE-features (syntax highlighting, autocompletion, ...) to break:

class Foo {
  /* const */ Foo.bar() : this(const _Dummy());

  const Foo(this.foo);

  final void Function(bool) foo;
}

class _Dummy {
  const _Dummy();

  void call(bool x) {}
}

Perhaps related, if I add:

void fun() {
  const x = Foo(_Dummy());  // *
}

IntelliJ reports and error on the starred line: "A value of type 'Null' can't be assigned to a parameter of type 'void Function(bool)' in a const constructor. With SDK set to >=2.13, a similar error is reported, but instead of Null it mentions _Dummy.

@srawlins
Copy link
Member

Hmm I don't see the commit in 2.16.1. https://github.com/dart-lang/sdk/commits/2.16.1 But I could be wrong.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
analyzer-crash-report Issues which have been reported due to an analysis server crash area-analyzer Use area-analyzer for Dart analyzer issues, including the analysis server and code completion. P1 A high priority bug; for example, a single project is unusable or has many test failures
Projects
None yet
Development

No branches or pull requests

3 participants