haskell / haskell/haskell-language-server

Incorrect symbol range from documentSymbol

Open
#2,898 5 comments 0 reactions 0 assignees View on GitHub
component: ghcide level: easy type: bug
Dominant language
Haskell
Stars
3k
Forks
455
Avg merge
2d 19h
Merged PRs (30d)
11

Description

### Your environment

Which OS do you use: Ubuntu, though this has also been seen on MacOS

Which LSP client (editor/plugin) do you use: Neovim builtin

Describe your project (alternative: link to the project): Repros in minimal project, detailed below

### Steps to reproduce

- `cabal init` to create a new project
- Open the Main.hs file
- Send a `textDocument/documentSymbol` request

Main.hs:
```hs
module Main where

main :: IO ()
main = putStrLn "Hello, Haskell!"
```

### Expected behaviour

Data returned should match the file

### Actual behaviour

```
{ {
children = { {
kind = 12,
name = "main",
range = {
end = {
character = 33,
line = 3
},
start = {
character = 0,
line = 3
}
},
selectionRange = {
end = {
character = 33,
line = 3
},
start = {
character = 0,
line = 3
}
}
} },
kind = 1,
name = "Main",
range = {
end = {
character = 0,
line = 2147483647
},
start = {
character = 0,
line = 0
}
},
selectionRange = {
end = {
character = 11,
line = 0
},
start = {
character = 7,
line = 0
}
}
} }
```

The `line = 2147483647` is the problem. It was causing issues with a plugin I wrote because I wasn't being defensive when processing the line numbers.
https://github.com/stevearc/aerial.nvim/issues/101

### Include debug information

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.