Skip to content

[lsp-server] 🐞 Adding whitespaces\newlines causes autocompletion to move up a level #3553

Open
@rrousselGit

Description

@rrousselGit

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Consider the following code:

mutation createComment2 @auth(is: PUBLIC) {
  comment_insert2(data: {  
  
  })
}

where data expects an input type.

In this scenario, adding whitespaces when trying to get autocompletion seems to change the result. Here's a video showcasing the issue:

Screen.Recording.2024-03-06.at.13.06.38.mov

Expected Behavior

Adding whitespaces/newlines should not have any impact on the suggestion.

Steps To Reproduce

No response

Environment

  • LSP Server Version: latest
  • OS: macos
  • LSP Client: vscode-graphql

Anything else?

I've tried debugging this by adding logs on a fork of the repository, and the issue appears to be getAutocompletionSuggestions.ts#getTokenAtPosition.

I added a console.log(token) inside getAutocompleteSuggestions right before the call to getTypeInfo here

const typeInfo = getTypeInfo(schema, token.state);

Then compared the log outputs based on where the cursor is.

Given comment_insert2(data: {| }), the token returned is:

{
  start: 0,
  end: 0,
  string: '{',
  state: { ... },
  style: 'punctuation'
}

But for comment_insert2(data: { | }) it is:

{
  start: 0,
  end: 0,
  string: '}',
  state: { ... },
  style: 'punctuation'
}

And lastly for comment_insert2(data: { |}) it is:

{
  start: 0,
  end: 0,
  string: ')',
  state: { ... },
  style: 'punctuation'
}

This doesn't make sense to me. I would expect all of them to return the token with string: '{'

Metadata

Metadata

Assignees

No one assigned

    Labels

    buglsp-servergraphql-language-service-server

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions