haskell / haskell-language-server

Official haskell ide support via language server (LSP). Successor of ghcide & haskell-ide-engine.
Apache License 2.0
2.71k stars 368 forks source link

Can't use test suites for GHC plugins, HLS erroneously claims that build-depends entry is missing #3297

Open JakobBruenker opened 2 years ago

JakobBruenker commented 2 years ago

Your environment

Ubuntu (under Windows 11 WSL) ghc 9.4.2 via ghcup

Reproduction repo with minimal example: https://github.com/JakobBruenker/a-cabal-error

Which LSP client (editor/plugin) do you use? VS Code, but running haskell-language-server outside of it produces the same error

Which version of HLS do you use and how did you install it? 1.8.0.0 via ghcup

Have you configured HLS in any way (especially: a hie.yaml file)? No (though an hie.yaml file generated via implicit-hie seemed to make no difference)

Steps to reproduce

Run haskell-language-server on the reproduction repo linked above

Expected behaviour

There should only be one error, Variable not in scope: thisShouldBeAnError :: IO ()

Actual behaviour

The expected error appears, but another error appears as well:

Unexpected usage error
Could not load module ‘APlugin’
It is a member of the hidden package ‘a-cabal-error-0.1.0.0’.
Perhaps you need to add ‘a-cabal-error’ to the build-depends in your .cabal file.
Use -v (or `:set -v` in ghci) to see a list of the files searched for.

This is rather strange, since the .cabal file does contain that dependency, and cabal test runs fine.

JakobBruenker commented 2 years ago

Workaround: Instead of (edit: or maybe in addition to) using build-depends, you can use ghc-options: -plugin-package=<package-name>. This seems to work.

michaelpj commented 2 years ago

Maybe this is also related to us setting up plugins wrong? Does your other PR help this?

JakobBruenker commented 2 years ago

@michaelpj good question, it might be vaguely related, but the changes I've made so far do not seem to help