Skip to content

"Bad state: No element" in DeclarationHelper._suggestConstructors #61197

@DanTup

Description

@DanTup

On current Flutter master, invoking completion here:

main() {
  for^
}

Results in an exception on the server:

An error occurred while handling textDocument/completion request: Bad state: No element
#0      _Array.first (dart:core-patch/array.dart:52)
#1      DeclarationHelper._suggestConstructors (package:analysis_server/src/services/completion/dart/declaration_helper.dart:1836)
#2      DeclarationHelper._addConstructorsForAliasedElement (package:analysis_server/src/services/completion/dart/declaration_helper.dart:722)
#3      DeclarationHelper._suggestTypeAlias (package:analysis_server/src/services/completion/dart/declaration_helper.dart:2409)
#4      DeclarationHelper._addExternalTopLevelDeclarations (package:analysis_server/src/services/completion/dart/declaration_helper.dart:903)
#5      DeclarationHelper.addNotImportedTopLevelDeclarations (package:analysis_server/src/services/completion/dart/declaration_helper.dart:560)
#6      StaticMembersOperation.computeSuggestionsIn (package:analysis_server/src/services/completion/dart/not_imported_completion_pass.dart:206)
#7      NotImportedCompletionPass.computeSuggestions.<anonymous closure> (package:analysis_server/src/services/completion/dart/not_imported_completion_pass.dart:172)
#8      OperationPerformanceImpl.run (package:analyzer/src/util/performance/operation_performance.dart:150)
#9      NotImportedCompletionPass.computeSuggestions (package:analysis_server/src/services/completion/dart/not_imported_completion_pass.dart:171)
<asynchronous suspension>
#10     DartCompletionManager.computeCandidateSuggestions.<anonymous closure> (package:analysis_server/src/services/completion/dart/completion_manager.dart:140)
<asynchronous suspension>
#11     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:169)
<asynchronous suspension>
#12     DartCompletionManager.computeCandidateSuggestions (package:analysis_server/src/services/completion/dart/completion_manager.dart:137)
<asynchronous suspension>
#13     DartCompletionManager.computeFinalizedCandidateSuggestions (package:analysis_server/src/services/completion/dart/completion_manager.dart:164)
<asynchronous suspension>
#14     CompletionHandler._getServerDartItems.<anonymous closure> (package:analysis_server/src/lsp/handlers/handler_completion.dart:385)
<asynchronous suspension>
#15     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:169)
<asynchronous suspension>
#16     CompletionHandler._getServerDartItems (package:analysis_server/src/lsp/handlers/handler_completion.dart:377)
<asynchronous suspension>
#17     CompletionHandler.handle.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:analysis_server/src/lsp/handlers/handler_completion.dart:172)
<asynchronous suspension>
#18     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:169)
<asynchronous suspension>
#19     CompletionHandler.handle.<anonymous closure> (package:analysis_server/src/lsp/handlers/handler_completion.dart:209)
<asynchronous suspension>
#20     ErrorOrRecord3Extension.mapResults (package:analysis_server/src/lsp/error_or.dart:173)
<asynchronous suspension>
#21     CompletionHandler.handle (package:analysis_server/src/lsp/handlers/handler_completion.dart:145)
<asynchronous suspension>
#22     ServerStateMessageHandler.handleMessage (package:analysis_server/src/lsp/handlers/handlers.dart:527)
<asynchronous suspension>
#23     LspAnalysisServer._handleRequestMessage (package:analysis_server/src/lsp/lsp_analysis_server.dart:1063)
<asynchronous suspension>
#24     LspAnalysisServer.handleMessage.<anonymous closure>.<anonymous closure> (package:analysis_server/src/lsp/lsp_analysis_server.dart:505)
<asynchronous suspension>
#25     OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:169)
<asynchronous suspension>
#26     LspAnalysisServer.handleMessage.<anonymous closure> (package:analysis_server/src/lsp/lsp_analysis_server.dart:483)
<asynchronous suspension>

The error looks like it's coming from .first here:

element: constructors.first.enclosingElement,

@keertip maybe related to 1d5b271? I suspect it just needs to check constructors.isNotEmpty first - let me know if you can't repro or want me to test that out.

Metadata

Metadata

Assignees

Labels

area-devexpFor issues related to the analysis server, IDE support, linter, `dart fix`, and diagnostic messages.devexp-completionIssues with the analysis server's code completion featuredevexp-serverIssues related to some aspect of the analysis servertype-bugIncorrect behavior (everything from a crash to more subtle misbehavior)

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions