Closed konn closed 3 years ago
So I guess this is a bug in lsp-types
where we are missing that a result can be optional.
Addressed in https://github.com/alanz/lsp/pull/295
What do we need to do to get this fix into HLS? people keep reporting this because it looks scary!
We need a new release of lsp-test. /cc @bubba
Summary
Though it seems unharmful, the current LSP log of HLS 1.0.0 gets scattered with sporadic error telling:
Your environment
Output of
haskell-language-server --probe-tools
orhaskell-language-server-wrapper --probe-tools
:Which lsp-client do you use: VSCode
Describe your project (alternative: link to the project): simple exe-only project which is generated by
stack new foo simple
, containing the followingMain.hs
as the only module:Contents of
hie.yaml
: Nohie.yaml
needed; it's just a simple project.small-repro.cabal
:Steps to reproduce
Main.hs
Haskell
OutputExpected behaviour
No error nor warning.
Actual behaviour
Log containing several occurences the following error:
The attached log contains only a few errors, but when one runs HLS on a project with several modules and local deps, the number of error reported (and ignroed) becomes large. Although there is no observable dysfunction related to this so far, it makes analysing LSP log relatively tedious.
Include debug information
Execute in the root of your project the command
haskell-language-server --debug .
and paste the logs here:Debug output:
``` debug . haskell-language-server version: 1.0.0.0 (GHC: 8.10.4) (PATH: /Users/hiromi/Library/Application Support/Code/User/globalStorage/haskell.haskell/haskell-language-server-1.0.0-darwin-8.10.4) (GIT hash: 4cd1cf934638881e52b3eba9f70157a4b799c0e9) ghcide setup tester in /Users/hiromi/Documents/Programming/Haskell/git/small-repro. Report bugs at https://github.com/haskell/haskell-language-server/issues Step 1/4: Finding files to test in /Users/hiromi/Documents/Programming/Haskell/git/small-repro Found 2 files Step 2/4: Looking for hie.yaml files that control setup Found 1 cradle () Step 3/4: Initializing the IDE Step 4/4: Type checking the files 2021-03-02 11:44:00.148551 [ThreadId 4] DEBUG hls: Set files of interest to: [(NormalizedFilePath "/Users/hiromi/Documents/Programming/Haskell/git/small-repro/Setup.hs",OnDisk),(NormalizedFilePath "/Users/hiromi/Documents/Programming/Haskell/git/small-repro/src/Main.hs",OnDisk)] 2021-03-02 11:44:00.14946 [ThreadId 41] INFO hls: File: Hidden: no Range: 1:1-2:1 Source: compiler Severity: DsError Message: Internal error, getIdeGlobalExtras, no entry for IdeConfigurationVar CallStack (from HasCallStack): errorIO, called at src/Development/IDE/Core/Shake.hs:284:20 in ghcide-1.0.0.0-inplace:Development.IDE.Core.Shake 2021-03-02 11:44:00.156761 [ThreadId 63] INFO hls: Consulting the cradle for "Setup.hs" Output from setting up the cradle Cradle {cradleRootDir = "/Users/hiromi/Documents/Programming/Haskell/git/small-repro", cradleOptsProg = CradleAction: Stack} 2021-03-02 11:44:00.162794 [ThreadId 63] DEBUG hls: Session loading result: Left [CradleError {cradleErrorDependencies = [], cradleErrorExitCode = ExitSuccess, cradleErrorStderr = ["Multi Cradle: No prefixes matched","pwd: /Users/hiromi/Documents/Programming/Haskell/git/small-repro","filepath: /Users/hiromi/Documents/Programming/Haskell/git/small-repro/Setup.hs","prefixes:","(\"./src/Main.hs\",Stack {component = Just \"small-repro:exe:small-repro\", stackYaml = Nothing})"]}] 2021-03-02 11:44:00.163034 [ThreadId 59] INFO hls: File: /Users/hiromi/Documents/Programming/Haskell/git/small-repro/Setup.hs Hidden: no Range: 1:1-2:1 Source: cradle Severity: DsError Message: Multi Cradle: No prefixes matched pwd: /Users/hiromi/Documents/Programming/Haskell/git/small-repro filepath: /Users/hiromi/Documents/Programming/Haskell/git/small-repro/Setup.hs prefixes: ("./src/Main.hs",Stack {component = Just "small-repro:exe:small-repro", stackYaml = Nothing}) 2021-03-02 11:44:00.163916 [ThreadId 66] INFO hls: Consulting the cradle for "src/Main.hs" Output from setting up the cradle Cradle {cradleRootDir = "/Users/hiromi/Documents/Programming/Haskell/git/small-repro", cradleOptsProg = CradleAction: Stack} > Using main module: 1. Package `small-repro' component small-repro:exe:small-repro with main-is file: /Users/hiromi/Documents/Programming/Haskell/git/small-repro/src/Main.hs > Building all executables for `small-repro' once. After a successful build of all of them, only specified executables will be rebuilt. > small-repro> configure (exe) > Configuring small-repro-0.1.0.0... > small-repro> initial-build-steps (exe) > Configuring GHCi with the following packages: small-repro > /Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/install/x86_64-osx/558c152a1bb96869716c728ef95f5578695b79c7caaea744a13c987678024fb0/8.10.4/pkgdb:/Users/hiromi/.stack/snapshots/x86_64-osx/558c152a1bb96869716c728ef95f5578695b79c7caaea744a13c987678024fb0/8.10.4/pkgdb:/Users/hiromi/.stack/programs/x86_64-osx/ghc-8.10.4/lib/ghc-8.10.4/package.conf.d 2021-03-02 11:44:03.236375 [ThreadId 66] DEBUG hls: Session loading result: Right (ComponentOptions {componentOptions = ["-i","-odir=/Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/odir","-hidir=/Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/odir","-hide-all-packages","-i/Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/dist/x86_64-osx/Cabal-3.2.1.0/build/small-repro","-i/Users/hiromi/Documents/Programming/Haskell/git/small-repro/src","-i/Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/dist/x86_64-osx/Cabal-3.2.1.0/build/small-repro/autogen","-i/Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/dist/x86_64-osx/Cabal-3.2.1.0/build/global-autogen","-i/Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/dist/x86_64-osx/Cabal-3.2.1.0/build/small-repro/small-repro-tmp","-stubdir=/Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/dist/x86_64-osx/Cabal-3.2.1.0/build","-package-id=base-4.14.1.0","-optP-include","-optP/Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/ghci/aab4ac53/cabal_macros.h","-ghci-script=/private/var/folders/pv/mtbzyjyj229g928n710c9d_40000gn/T/haskell-stack-ghci/3fc992d2/ghci-script","-package-db","/Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/install/x86_64-osx/558c152a1bb96869716c728ef95f5578695b79c7caaea744a13c987678024fb0/8.10.4/pkgdb","-package-db","/Users/hiromi/.stack/snapshots/x86_64-osx/558c152a1bb96869716c728ef95f5578695b79c7caaea744a13c987678024fb0/8.10.4/pkgdb","-package-db","/Users/hiromi/.stack/programs/x86_64-osx/ghc-8.10.4/lib/ghc-8.10.4/package.conf.d"], componentRoot = "/Users/hiromi/Documents/Programming/Haskell/git/small-repro", componentDependencies = ["small-repro.cabal","package.yaml","stack.yaml"]},"/Users/hiromi/.stack/programs/x86_64-osx/ghc-8.10.4/lib/ghc-8.10.4") 2021-03-02 11:44:03.33229 [ThreadId 66] INFO hls: Using interface files cache dir: /Users/hiromi/.cache/ghcide/main-a1f4958c591824e1a2927712572780e3b7d3153e 2021-03-02 11:44:03.332477 [ThreadId 66] INFO hls: Making new HscEnv[main] 2021-03-02 11:44:03.337466 [ThreadId 66] DEBUG hls: New Component Cache HscEnvEq: (([],Just HscEnvEq 24),fromList [("package.yaml",Nothing),("small-repro.cabal",Just 2021-02-15 12:05:43.565552288 UTC),("stack.yaml",Just 2021-02-15 12:05:44.538100624 UTC)]) 2021-03-02 11:44:03.3378 [ThreadId 66] DEBUG hls: Known files updated: fromList [(TargetFile NormalizedFilePath "/Users/hiromi/Documents/Programming/Haskell/git/small-repro/src/Main.hs",["/Users/hiromi/Documents/Programming/Haskell/git/small-repro/src/Main.hs"])] 2021-03-02 11:44:03.340945 [ThreadId 22] DEBUG hls: Finishing build session(exception: AsyncCancelled) 2021-03-02 11:44:03.341078 [ThreadId 66] DEBUG hls: Restarting build session (aborting the previous one took 0.00s) 2021-03-02 11:44:03.342766 [ThreadId 119] INFO hls: Consulting the cradle for "Setup.hs" Output from setting up the cradle Cradle {cradleRootDir = "/Users/hiromi/Documents/Programming/Haskell/git/small-repro", cradleOptsProg = CradleAction: Stack} 2021-03-02 11:44:03.348595 [ThreadId 119] DEBUG hls: Session loading result: Left [CradleError {cradleErrorDependencies = [], cradleErrorExitCode = ExitSuccess, cradleErrorStderr = ["Multi Cradle: No prefixes matched","pwd: /Users/hiromi/Documents/Programming/Haskell/git/small-repro","filepath: /Users/hiromi/Documents/Programming/Haskell/git/small-repro/Setup.hs","prefixes:","(\"./src/Main.hs\",Stack {component = Just \"small-repro:exe:small-repro\", stackYaml = Nothing})"]}] 2021-03-02 11:44:03.37352 [ThreadId 221] INFO hls: finish: User TypeCheck (took 0.03s) 2021-03-02 11:44:03.375635 [ThreadId 234] INFO hls: finish: GetHie (took 0.00s) 2021-03-02 11:44:03.375792 [ThreadId 235] INFO hls: finish: GenerateCore (took 0.00s) Files that failed: * /Users/hiromi/Documents/Programming/Haskell/git/small-repro/Setup.hs Completed (1 file worked, 1 file failed) ```Paste the logs from the lsp-client, e.g. for VS Code
LSP logs:
``` [client] run command: "/Users/hiromi/Library/Application Support/Code/User/globalStorage/haskell.haskell/haskell-language-server-1.0.0-darwin-8.10.4 --lsp" [client] debug command: "/Users/hiromi/Library/Application Support/Code/User/globalStorage/haskell.haskell/haskell-language-server-1.0.0-darwin-8.10.4 --lsp" [client] server cwd: undefined haskell-language-server version: 1.0.0.0 (GHC: 8.10.4) (PATH: /Users/hiromi/Library/Application Support/Code/User/globalStorage/haskell.haskell/haskell-language-server-1.0.0-darwin-8.10.4) (GIT hash: 4cd1cf934638881e52b3eba9f70157a4b799c0e9) Starting (haskell-language-server)LSP server... with arguments: LspArguments {argLSP = True, argsCwd = Nothing, argFiles = [], argsShakeProfiling = Nothing, argsTesting = False, argsExamplePlugin = False, argsDebugOn = False, argsLogFile = Nothing, argsThreads = 0, argsProjectGhcVersion = False} with plugins: [PluginId "brittany",PluginId "class",PluginId "eval",PluginId "floskell",PluginId "fourmolu",PluginId "ghcide-code-actions",PluginId "ghcide-completions",PluginId "ghcide-hover-and-symbols",PluginId "ghcide-type-lenses",PluginId "haddockComments",PluginId "hlint",PluginId "importLens",PluginId "moduleName",PluginId "ormolu",PluginId "pragmas",PluginId "retrie",PluginId "splice",PluginId "stylish-haskell",PluginId "tactic"] in directory: /Users/hiromi/Documents/Programming/Haskell/git/small-repro If you are seeing this in a terminal, you probably should have run ghcide WITHOUT the --lsp option! Starting LSP server... If you are seeing this in a terminal, you probably should have run ghcide WITHOUT the --lsp option! 2021-03-02 11:43:23.062722 [ThreadId 5] INFO haskell-lsp.runWith: haskell-lsp:Starting up server ... Started LSP server in 0.00s setInitialDynFlags cradle: Cradle {cradleRootDir = "/Users/hiromi/Documents/Programming/Haskell/git/small-repro", cradleOptsProg = CradleAction: Stack} 2021-03-02 11:43:23.766503 [ThreadId 5] INFO hls: Registering ide configuration: IdeConfiguration {workspaceFolders = fromList [NormalizedUri 8879377354893767911 "file:///Users/hiromi/Documents/Programming/Haskell/git/small-repro"], clientSettings = hashed Nothing} 2021-03-02 11:43:23.771596 [ThreadId 93] INFO hls: hlint:getIdeas:file:NormalizedFilePath "/Users/hiromi/Documents/Programming/Haskell/git/small-repro/src/Main.hs" 2021-03-02 11:43:23.773279 [ThreadId 103] INFO hls: Consulting the cradle for "src/Main.hs" Output from setting up the cradle Cradle {cradleRootDir = "/Users/hiromi/Documents/Programming/Haskell/git/small-repro", cradleOptsProg = CradleAction: Stack} [Error - 11:43:23] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":1,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null [Error - 11:43:23] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":2,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null > Using main module: 1. Package `small-repro' component small-repro:exe:small-repro with main-is file: /Users/hiromi/Documents/Programming/Haskell/git/small-repro/src/Main.hs > Building all executables for `small-repro' once. After a successful build of all of them, only specified executables will be rebuilt. > small-repro> configure (exe) > Configuring small-repro-0.1.0.0... > small-repro> initial-build-steps (exe) > Configuring GHCi with the following packages: small-repro > /Users/hiromi/Documents/Programming/Haskell/git/small-repro/.stack-work/install/x86_64-osx/558c152a1bb96869716c728ef95f5578695b79c7caaea744a13c987678024fb0/8.10.4/pkgdb:/Users/hiromi/.stack/snapshots/x86_64-osx/558c152a1bb96869716c728ef95f5578695b79c7caaea744a13c987678024fb0/8.10.4/pkgdb:/Users/hiromi/.stack/programs/x86_64-osx/ghc-8.10.4/lib/ghc-8.10.4/package.conf.d 2021-03-02 11:43:26.976584 [ThreadId 103] INFO hls: Using interface files cache dir: /Users/hiromi/.cache/ghcide/main-a1f4958c591824e1a2927712572780e3b7d3153e 2021-03-02 11:43:26.976733 [ThreadId 103] INFO hls: Making new HscEnv[main] 2021-03-02 11:43:26.982718 [ThreadId 202] INFO hls: hlint:getIdeas:file:NormalizedFilePath "/Users/hiromi/Documents/Programming/Haskell/git/small-repro/src/Main.hs" 2021-03-02 11:43:26.983553 [ThreadId 223] INFO hls: finish: ModuleName.ghcSession (took 0.00s) 2021-03-02 11:43:26.984296 [ThreadId 246] INFO hls: finish: Outline (took 0.00s) 2021-03-02 11:43:26.98429 [ThreadId 249] INFO hls: finish: ModuleName.GetParsedModule (took 0.00s) 2021-03-02 11:43:26.984311 [ThreadId 250] INFO hls: finish: parsed (took 0.00s) 2021-03-02 11:43:27.007811 [ThreadId 300] INFO hls: finish: codeLens (took 0.03s) 2021-03-02 11:43:27.007957 [ThreadId 308] INFO hls: finish: (took 0.03s) [Error - 11:43:27] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":3,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null ```