facebook / starlark-rust

A Rust implementation of the Starlark language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lsp jump to def works poorly if file contains errors

cjhopman opened this issue · comments

For this code:

def bad():

def foo():
  some_ref()

You can't jump-to-def on some_ref(). We do have a red squiggle for the bad function, so that's good. Maybe we should jump to the error.

For this:

def foo():
  some_ref()

def bad() -> UndefinedType.type:
  pass

You can't jump-to-def on some_ref(). We also don't identify the error with a red squiggle.

Yeah, jump to definition (and most LSP things) don't work very well when there are parse errors. The LSP gets the new text of the source file, and tries to parse it. But as long as there are parse errors, it uses its last-known valid parse state, if any. Ideally the parser would handle such cases more gracefully.