Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HLS has ridiculously high CPU/memory usage using typed holes #2315

Open
bradrn opened this issue Oct 30, 2021 · 14 comments
Open

HLS has ridiculously high CPU/memory usage using typed holes #2315

bradrn opened this issue Oct 30, 2021 · 14 comments
Labels
os: windows performance Issues about memory consumption, responsiveness, etc. status: needs info Not actionable, because there's missing information type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc..

Comments

@bradrn
Copy link
Contributor

bradrn commented Oct 30, 2021

Your environment

> haskell-language-server-wrapper --probe-tools
haskell-language-server version: 1.4.0.0 (GHC: 8.10.4) (PATH: C:\Users\bradn\Documents\Haskell\hls\haskell-language-server-wrapper.exe) (GIT hash: 253547816ee216c53ee7dacc0ad3cac43e863d30)
Tool versions found on the $PATH
cabal:          Not found
stack:          2.7.3
ghc:            Not found

Which OS do you use: Windows
Which lsp-client do you use: Emacs
Describe your project: stack.yaml + *.cabal files
Contents of hie.yaml:

cradle:
  stack:
    - path: "./src/"
      component: "nexo:lib"
    - path: "./test/"
      component: "nexo:test:nexo-test"
    - path: "./gui/interop/"
      component: "nexo-interop:lib"
    - path: "./gui/web/"
      component: "web:exe:web"

Steps to reproduce

Open a file in ./gui/web/ and wait. (The bug doesn’t seem to occur for any other target of this project, nor for any other project.)

Expected behaviour

HLS works as expected.

Actual behaviour

After HLS initialises, it rapidly climbs to >90% CPU usage and correspondingly high memory usage:

image

This invariably causes Emacs to freeze.

Include debug information

Debug output:
> haskell-language-server-wrapper --debug
Found "C:\Users\bradn\Documents\Spreadsheet\nexo\hie.yaml" for "C:\Users\bradn\Documents\Spreadsheet\nexo\a"
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper.exe) Version 1.4.0.0, Git revision 253547816ee216c53ee7dacc0ad3cac43e863d30 (dirty) x86_64 ghc-8.10.4
Current directory: C:\Users\bradn\Documents\Spreadsheet\nexo
Operating system: mingw32
Arguments: ["--debug"]
Cradle directory: C:\Users\bradn\Documents\Spreadsheet\nexo
Cradle type: Stack

Tool versions found on the $PATH
cabal:          Not found
stack:          2.7.3
ghc:            Not found


Consulting the cradle to get project GHC version...
Project GHC version: 8.10.4
haskell-language-server exe candidates: ["haskell-language-server-8.10.4.exe","haskell-language-server.exe"]
Launching haskell-language-server exe at:C:\Users\bradn\Documents\Haskell\hls\haskell-language-server-8.10.4.exe
haskell-language-server version: 1.4.0.0 (GHC: 8.10.4) (PATH: C:\Users\bradn\Documents\Haskell\hls\haskell-language-server-8.10.4.exe) (GIT hash: 253547816ee216c53ee7dacc0ad3cac43e863d30)
 ghcide setup tester in C:\Users\bradn\Documents\Spreadsheet\nexo.
Report bugs at https://github.com/haskell/haskell-language-server/issues

Step 1/4: Finding files to test in C:\Users\bradn\Documents\Spreadsheet\nexo
Found 19 files

Step 2/4: Looking for hie.yaml files that control setup
Found 1 cradle
  (C:\Users\bradn\Documents\Spreadsheet\nexo\hie.yaml)

Step 3/4: Initializing the IDE
2021-10-30 12:42:50.052339 [ThreadId 6] DEBUG hls:      Initializing exports map from hiedb

Step 4/4: Type checking the files
2021-10-30 12:42:50.1057214 [ThreadId 6] DEBUG hls:     Done initializing exports map from hiedb (188)
2021-10-30 12:42:50.1213584 [ThreadId 23] INFO hls:     Consulting the cradle for "gui\\web\\src\\Main.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:42:51.5057729 [ThreadId 27] INFO hie-bios:        �[0mCabal file warning inC:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\web.cabal@26:8: Tabs used as indentation at 26:8, 28:8�[0m
2021-10-30 12:42:53.0531583 [ThreadId 27] INFO hie-bios:        �[0mUsing main module: 1. Package `web' component web:exe:web with main-is file: C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs�[0m
2021-10-30 12:42:54.6019869 [ThreadId 27] INFO hie-bios:        �[0mweb> configure (exe)�[0m
2021-10-30 12:42:55.2984103 [ThreadId 27] INFO hie-bios:        �[0mWarning: web.cabal:26:8: Tabs used as indentation at 26:8, 28:8�[0m
2021-10-30 12:43:00.6639469 [ThreadId 27] INFO hie-bios:        �[0mConfiguring web-0.1.0.0...�[0m
2021-10-30 12:43:04.6481247 [ThreadId 27] INFO hie-bios:        �[0mweb> initial-build-steps (exe)�[0m
2021-10-30 12:43:06.747776 [ThreadId 27] INFO hie-bios: �[0mConfiguring GHCi with the following packages: web�[0m
2021-10-30 12:43:08.5899472 [ThreadId 34] INFO hie-bios:        C:\Users\bradn\Documents\Spreadsheet\nexo\.stack-work\install\89cc576c\pkgdb;C:\sr\snapshots\fa46375f\pkgdb;C:\Users\bradn\AppData\Local\Programs\stack\x86_64-windows\ghc-8.10.4\lib\package.conf.d
2021-10-30 12:43:23.7122447 [ThreadId 23] DEBUG hls:    Session loading result: Right (ComponentOptions {componentOptions = ["-i","-odir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hidir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hide-all-packages","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build\\web","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build\\web\\autogen","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build\\global-autogen","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build\\web\\web-tmp","-stubdir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build","-IC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\include","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\lib","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\bin","-package-id=base-4.14.1.0","-package-id=nexo-0.1.0.0-CfSdBYon1u8BwHpsbWfSLy","-package-id=containers-0.6.2.1","-package-id=reflex-dom-0.6.1.0-6zDYljhNYwR1ou4PLRi8o6","-package-id=text-1.2.4.1","-package-id=shakespeare-2.0.25-A0BfXYu56TqCpnjSIEEN8a","-Wall","-optP-include","-optPC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\ghci\\26e3ba3f\\cabal_macros.h","-ghci-script=C:\\Users\\bradn\\AppData\\Local\\Temp\\haskell-stack-ghci\\73a78d0e\\ghci-script","-package-db","C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\install\\89cc576c\\pkgdb","-package-db","C:\\sr\\snapshots\\fa46375f\\pkgdb","-package-db","C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib\\package.conf.d"], componentRoot = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web", componentDependencies = ["gui\\web\\web.cabal","gui\\web\\package.yaml","stack.yaml"]},"C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib")
2021-10-30 12:43:24.0131754 [ThreadId 23] INFO hls:     Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-179ce3556a23769a5eed7f54a8fb89df094c5cb6
2021-10-30 12:43:24.0131754 [ThreadId 23] INFO hls:     Making new HscEnv[main]
2021-10-30 12:43:24.0600942 [ThreadId 23] DEBUG hls:    New Component Cache HscEnvEq: (([],Just HscEnvEq 5),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("gui\\web\\package.yaml",Nothing),("gui\\web\\web.cabal",Just 2021-10-20 08:40:11.2399054 UTC),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:43:24.0600942 [ThreadId 23] DEBUG hls:    Known files updated: fromList [(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"])]
2021-10-30 12:43:24.0600942 [ThreadId 10] DEBUG hls:    Finishing build session(exception: AsyncCancelled)
2021-10-30 12:43:24.0757018 [ThreadId 23] DEBUG hls:    Restarting build session for keys [GhcSessionIO; ] (aborting the previous one took 0.00s)
2021-10-30 12:43:24.0757018 [ThreadId 59] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Type.hs"
2021-10-30 12:43:24.0757018 [ThreadId 56] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env\\Std.hs"
2021-10-30 12:43:24.0757018 [ThreadId 60] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Interop.hs"
2021-10-30 12:43:24.0757018 [ThreadId 61] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\Setup.hs"
2021-10-30 12:43:24.0757018 [ThreadId 59] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env.hs"
2021-10-30 12:43:24.0757018 [ThreadId 55] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Solve.hs"
2021-10-30 12:43:24.0757018 [ThreadId 56] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\counter-example\\Main.hs"
2021-10-30 12:43:24.0757018 [ThreadId 62] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"
2021-10-30 12:43:24.0757018 [ThreadId 60] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Type.hs"
2021-10-30 12:43:24.0757018 [ThreadId 61] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Interpret.hs"
2021-10-30 12:43:24.0757018 [ThreadId 57] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"
2021-10-30 12:43:24.0757018 [ThreadId 59] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Typecheck.hs"
2021-10-30 12:43:24.0913276 [ThreadId 55] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Substitute.hs"
2021-10-30 12:43:24.0913276 [ThreadId 56] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\Setup.hs"
2021-10-30 12:43:24.0913276 [ThreadId 79] INFO hls:     Consulting the cradle for "src\\Nexo\\Expr\\Parse.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:43:25.6070349 [ThreadId 83] INFO hie-bios:        Cabal file warning inC:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\web.cabal@26:8: Tabs used as indentation at 26:8, 28:8
2021-10-30 12:43:30.742927 [ThreadId 83] INFO hie-bios: Configuring GHCi with the following packages: nexo
2021-10-30 12:43:32.7197055 [ThreadId 90] INFO hie-bios:        C:\Users\bradn\Documents\Spreadsheet\nexo\.stack-work\install\89cc576c\pkgdb;C:\sr\snapshots\fa46375f\pkgdb;C:\Users\bradn\AppData\Local\Programs\stack\x86_64-windows\ghc-8.10.4\lib\package.conf.d
2021-10-30 12:43:49.5988318 [ThreadId 79] DEBUG hls:    Session loading result: Right (ComponentOptions {componentOptions = ["-i","-odir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hidir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hide-all-packages","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\dist\\274b403a\\build","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\dist\\274b403a\\build\\autogen","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\dist\\274b403a\\build\\global-autogen","-stubdir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\dist\\274b403a\\build","-IC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\include","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\lib","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\bin","-package-id=base-4.14.1.0","-package-id=containers-0.6.2.1","-package-id=data-fix-0.3.1-EEkJSvkKaVSJsOxIFinaX2","-package-id=deriving-compat-0.5.10-HXK3itbGHpR1pL3mr5zjAL","-package-id=megaparsec-9.0.1-LsaPGsu2KTg8EMdYsBX01R","-package-id=mtl-2.2.2","-package-id=parser-combinators-1.2.1-BgKMLJR8mPH8EvrPvvjrd8","-package-id=recursion-schemes-5.2.2.1-9EDXfZbCpz5BDq449BBurS","-Wall","-optP-include","-optPC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\ghci\\69a3b7ef\\cabal_macros.h","-ghci-script=C:\\Users\\bradn\\AppData\\Local\\Temp\\haskell-stack-ghci\\03101ac4\\ghci-script","-package-db","C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\install\\89cc576c\\pkgdb","-package-db","C:\\sr\\snapshots\\fa46375f\\pkgdb","-package-db","C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib\\package.conf.d"], componentRoot = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", componentDependencies = ["nexo.cabal","package.yaml","stack.yaml"]},"C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib")
2021-10-30 12:43:49.720764 [ThreadId 79] INFO hls:      Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-4f46d3b6efe4dabce26d4dd5dd5ff5013b2f8f08
2021-10-30 12:43:49.720764 [ThreadId 79] INFO hls:      Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-4f46d3b6efe4dabce26d4dd5dd5ff5013b2f8f08
2021-10-30 12:43:49.7228094 [ThreadId 79] INFO hls:     Making new HscEnv[main,main]
2021-10-30 12:43:49.7636285 [ThreadId 79] DEBUG hls:    New Component Cache HscEnvEq: (([],Just HscEnvEq 7),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("nexo.cabal",Just 2021-10-18 00:03:38.514606 UTC),("package.yaml",Nothing),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:43:49.9463941 [ThreadId 79] DEBUG hls:    New Component Cache HscEnvEq: (([],Just HscEnvEq 8),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("gui\\web\\package.yaml",Nothing),("gui\\web\\web.cabal",Just 2021-10-20 08:40:11.2399054 UTC),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:43:49.987142 [ThreadId 79] DEBUG hls:     Known files updated: fromList [(TargetModule Nexo.Core.Substitute,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Substitute.hs"]),(TargetModule Nexo.Env.Std,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env\\Std.hs"]),(TargetModule Nexo.Core.Solve,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Solve.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"]),(TargetModule Nexo.Env,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env.hs"]),(TargetModule Nexo.Expr.Unit,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Unit.hs"]),(TargetModule Nexo.Expr.Parse,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"]),(TargetModule Nexo.Sheet,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Sheet.hs"]),(TargetModule Nexo.Core.Typecheck,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Typecheck.hs"]),(TargetModule Nexo.Interpret,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Interpret.hs"]),(TargetModule Nexo.Expr.Type,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Type.hs"]),(TargetModule Nexo.Core.Type,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Type.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"])]
2021-10-30 12:43:49.9972221 [ThreadId 51] DEBUG hls:    Finishing build session(exception: AsyncCancelled)
2021-10-30 12:43:49.9972221 [ThreadId 79] DEBUG hls:    Restarting build session for keys [GhcSessionIO; ] (aborting the previous one took 0.00s)
2021-10-30 12:43:50.0073893 [ThreadId 115] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\list-test.hs"
2021-10-30 12:43:50.0073893 [ThreadId 117] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Type.hs"
2021-10-30 12:43:50.0073893 [ThreadId 116] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"
2021-10-30 12:43:50.0073893 [ThreadId 112] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\Setup.hs"
2021-10-30 12:43:50.0073893 [ThreadId 111] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env\\Std.hs"
2021-10-30 12:43:50.0073893 [ThreadId 114] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Sheet.hs"
2021-10-30 12:43:50.0073893 [ThreadId 110] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test\\Main.hs"
2021-10-30 12:43:50.0073893 [ThreadId 115] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\counter-example\\Main.hs"
2021-10-30 12:43:50.0073893 [ThreadId 117] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\Setup.hs"
2021-10-30 12:43:50.0073893 [ThreadId 116] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Typecheck.hs"
2021-10-30 12:43:50.0073893 [ThreadId 112] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Solve.hs"
2021-10-30 12:43:50.0073893 [ThreadId 111] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Interpret.hs"
2021-10-30 12:43:50.0154361 [ThreadId 114] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Type.hs"
2021-10-30 12:43:50.0154361 [ThreadId 110] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env.hs"
2021-10-30 12:43:50.017478 [ThreadId 115] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Substitute.hs"
2021-10-30 12:43:50.017478 [ThreadId 117] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Unit.hs"
2021-10-30 12:43:50.017478 [ThreadId 116] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Setup.hs"
2021-10-30 12:43:50.017478 [ThreadId 112] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Interop.hs"
2021-10-30 12:43:50.017478 [ThreadId 111] DEBUG hls:    hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"
2021-10-30 12:43:50.0255905 [ThreadId 140] INFO hls:    Consulting the cradle for "test\\Main.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:43:51.4840018 [ThreadId 144] INFO hie-bios:       Cabal file warning inC:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\web.cabal@26:8: Tabs used as indentation at 26:8, 28:8
2021-10-30 12:43:53.049552 [ThreadId 144] INFO hie-bios:        Using main module: 1. Package `nexo' component nexo:test:nexo-test with main-is file: C:\Users\bradn\Documents\Spreadsheet\nexo\test\Main.hs
2021-10-30 12:43:54.5979594 [ThreadId 144] INFO hie-bios:       nexo> initial-build-steps (lib + test)
2021-10-30 12:43:55.3061303 [ThreadId 144] INFO hie-bios:       nexo> Test running disabled by --no-run-tests flag.
2021-10-30 12:43:55.3061303 [ThreadId 144] INFO hie-bios:       Completed 2 action(s).
2021-10-30 12:43:56.8038687 [ThreadId 144] INFO hie-bios:       Configuring GHCi with the following packages: nexo
2021-10-30 12:43:58.9082695 [ThreadId 151] INFO hie-bios:       C:\Users\bradn\Documents\Spreadsheet\nexo\.stack-work\install\89cc576c\pkgdb;C:\sr\snapshots\fa46375f\pkgdb;C:\Users\bradn\AppData\Local\Programs\stack\x86_64-windows\ghc-8.10.4\lib\package.conf.d
2021-10-30 12:44:15.4128288 [ThreadId 140] DEBUG hls:   Session loading result: Right (ComponentOptions {componentOptions = ["-i","-odir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hidir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hide-all-packages","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\dist\\274b403a\\build\\nexo-test","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\dist\\274b403a\\build\\nexo-test\\autogen","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\dist\\274b403a\\build\\global-autogen","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\dist\\274b403a\\build\\nexo-test\\nexo-test-tmp","-stubdir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\dist\\274b403a\\build","-IC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\include","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\lib","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\bin","-package-id=base-4.14.1.0","-package-id=nexo-0.1.0.0-CfSdBYon1u8BwHpsbWfSLy","-package-id=tasty-1.4.1-LgdbuDVX0cyJgx3RPlsYKh","-package-id=tasty-hunit-0.10.0.3-Lw3eMJfze7t23LmHQUj6iJ","-package-id=containers-0.6.2.1","-optP-include","-optPC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\ghci\\c7f68cd2\\cabal_macros.h","-ghci-script=C:\\Users\\bradn\\AppData\\Local\\Temp\\haskell-stack-ghci\\99339a3e\\ghci-script","-package-db","C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\install\\89cc576c\\pkgdb","-package-db","C:\\sr\\snapshots\\fa46375f\\pkgdb","-package-db","C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib\\package.conf.d"], componentRoot = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", componentDependencies = ["nexo.cabal","package.yaml","stack.yaml"]},"C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib")
2021-10-30 12:44:15.5130754 [ThreadId 140] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-cc333fb80cd102db32c552bf948e2645d2bda876
2021-10-30 12:44:15.5130754 [ThreadId 140] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-cc333fb80cd102db32c552bf948e2645d2bda876
2021-10-30 12:44:15.5130754 [ThreadId 140] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-cc333fb80cd102db32c552bf948e2645d2bda876
2021-10-30 12:44:15.5287195 [ThreadId 140] INFO hls:    Making new HscEnv[main,main,main]
2021-10-30 12:44:15.5664731 [ThreadId 140] DEBUG hls:   New Component Cache HscEnvEq: (([],Just HscEnvEq 10),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("nexo.cabal",Just 2021-10-18 00:03:38.514606 UTC),("package.yaml",Nothing),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:44:15.5664731 [ThreadId 140] DEBUG hls:   New Component Cache HscEnvEq: (([],Just HscEnvEq 11),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("nexo.cabal",Just 2021-10-18 00:03:38.514606 UTC),("package.yaml",Nothing),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:44:15.6824655 [ThreadId 140] DEBUG hls:   New Component Cache HscEnvEq: (([],Just HscEnvEq 12),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("gui\\web\\package.yaml",Nothing),("gui\\web\\web.cabal",Just 2021-10-20 08:40:11.2399054 UTC),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:44:15.7605431 [ThreadId 140] DEBUG hls:   Known files updated: fromList [(TargetModule Nexo.Core.Substitute,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Substitute.hs"]),(TargetModule Nexo.Env.Std,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env\\Std.hs"]),(TargetModule Nexo.Core.Solve,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Solve.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"]),(TargetModule Nexo.Env,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env.hs"]),(TargetModule Nexo.Expr.Unit,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Unit.hs"]),(TargetModule Nexo.Expr.Parse,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"]),(TargetModule Nexo.Sheet,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Sheet.hs"]),(TargetModule Nexo.Core.Typecheck,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Typecheck.hs"]),(TargetModule Nexo.Interpret,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Interpret.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test\\Main.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test\\Main.hs"]),(TargetModule Nexo.Expr.Type,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Type.hs"]),(TargetModule Nexo.Core.Type,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Type.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"])]
2021-10-30 12:44:15.7670595 [ThreadId 106] DEBUG hls:   Finishing build session(exception: AsyncCancelled)
2021-10-30 12:44:15.7670595 [ThreadId 140] DEBUG hls:   Restarting build session for keys [GhcSessionIO; ] (aborting the previous one took 0.00s)
2021-10-30 12:44:15.7670595 [ThreadId 180] INFO hls:    Consulting the cradle for "Setup.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:44:15.7670595 [ThreadId 180] DEBUG hls:   Session loading result: Left [CradleError {cradleErrorDependencies = [], cradleErrorExitCode = ExitSuccess, cradleErrorStderr = ["Multi Cradle: No prefixes matched","pwd: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo","filepath: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\Setup.hs","prefixes:","(\"./src/\",Stack {component = Just \"nexo:lib\", stackYaml = Nothing})","(\"./test/\",Stack {component = Just \"nexo:test:nexo-test\", stackYaml = Nothing})","(\"./gui/interop/\",Stack {component = Just \"nexo-interop:lib\", stackYaml = Nothing})","(\"./gui/web/\",Stack {component = Just \"web:exe:web\", stackYaml = Nothing})"]}]
2021-10-30 12:44:15.7827054 [ThreadId 172] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"
2021-10-30 12:44:15.7827054 [ThreadId 172] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Interop.hs"
2021-10-30 12:44:15.7827054 [ThreadId 172] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Setup.hs"
2021-10-30 12:44:15.7827054 [ThreadId 178] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Solve.hs"
2021-10-30 12:44:15.7827054 [ThreadId 172] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\list-test.hs"
2021-10-30 12:44:15.7827054 [ThreadId 178] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Sheet.hs"
2021-10-30 12:44:15.7827054 [ThreadId 192] INFO hls:    Consulting the cradle for "list-test.hs"
2021-10-30 12:44:15.7827054 [ThreadId 172] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\Setup.hs"
2021-10-30 12:44:15.7827054 [ThreadId 178] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\Setup.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:44:15.7827054 [ThreadId 172] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Type.hs"
2021-10-30 12:44:15.7983249 [ThreadId 178] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Type.hs"
2021-10-30 12:44:15.7983249 [ThreadId 192] DEBUG hls:   Session loading result: Left [CradleError {cradleErrorDependencies = [], cradleErrorExitCode = ExitSuccess, cradleErrorStderr = ["Multi Cradle: No prefixes matched","pwd: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo","filepath: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\list-test.hs","prefixes:","(\"./src/\",Stack {component = Just \"nexo:lib\", stackYaml = Nothing})","(\"./test/\",Stack {component = Just \"nexo:test:nexo-test\", stackYaml = Nothing})","(\"./gui/interop/\",Stack {component = Just \"nexo-interop:lib\", stackYaml = Nothing})","(\"./gui/web/\",Stack {component = Just \"web:exe:web\", stackYaml = Nothing})"]}]
2021-10-30 12:44:15.7983249 [ThreadId 177] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test\\Main.hs"
2021-10-30 12:44:15.7983249 [ThreadId 177] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"
2021-10-30 12:44:15.7983249 [ThreadId 176] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\counter-example\\Main.hs"
2021-10-30 12:44:15.7983249 [ThreadId 176] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Interpret.hs"
2021-10-30 12:44:15.7983249 [ThreadId 212] INFO hls:    Consulting the cradle for "gui\\interop\\Setup.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:44:17.207289 [ThreadId 217] INFO hie-bios:        Cabal file warning inC:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\web.cabal@26:8: Tabs used as indentation at 26:8, 28:8
2021-10-30 12:44:18.6711134 [ThreadId 217] INFO hie-bios:
2021-10-30 12:44:18.6711134 [ThreadId 217] INFO hie-bios:       Warning: File listed in gui\interop\nexo-interop.cabal file does not exist: README.md
2021-10-30 12:44:20.2618334 [ThreadId 217] INFO hie-bios:       nexo-interop> initial-build-steps (lib)
2021-10-30 12:44:22.5256826 [ThreadId 217] INFO hie-bios:
2021-10-30 12:44:22.5256826 [ThreadId 217] INFO hie-bios:       Warning: File listed in gui\interop\nexo-interop.cabal file does not exist: README.md
2021-10-30 12:44:22.5357846 [ThreadId 217] INFO hie-bios:       The following GHC options are incompatible with GHCi and have not been passed to it: -static
2021-10-30 12:44:22.5357846 [ThreadId 217] INFO hie-bios:       Configuring GHCi with the following packages: nexo-interop
2021-10-30 12:44:24.5813065 [ThreadId 224] INFO hie-bios:       C:\Users\bradn\Documents\Spreadsheet\nexo\.stack-work\install\89cc576c\pkgdb;C:\sr\snapshots\fa46375f\pkgdb;C:\Users\bradn\AppData\Local\Programs\stack\x86_64-windows\ghc-8.10.4\lib\package.conf.d
2021-10-30 12:44:39.4443377 [ThreadId 212] DEBUG hls:   Session loading result: Right (ComponentOptions {componentOptions = ["-i","-odir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hidir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hide-all-packages","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\.stack-work\\dist\\274b403a\\build","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\.stack-work\\dist\\274b403a\\build\\autogen","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\.stack-work\\dist\\274b403a\\build\\global-autogen","-stubdir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\.stack-work\\dist\\274b403a\\build","-IC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\include","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\lib","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\bin","-package-id=base-4.14.1.0","-package-id=nexo-0.1.0.0-CfSdBYon1u8BwHpsbWfSLy","-package-id=containers-0.6.2.1","-package-id=data-fix-0.3.1-EEkJSvkKaVSJsOxIFinaX2","-Wall","-stubdir","stub","-o","nexo-interop.a","-optl-static","-staticlib","-optP-include","-optPC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\ghci\\16cb89eb\\cabal_macros.h","-ghci-script=C:\\Users\\bradn\\AppData\\Local\\Temp\\haskell-stack-ghci\\0787532f\\ghci-script","-package-db","C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\install\\89cc576c\\pkgdb","-package-db","C:\\sr\\snapshots\\fa46375f\\pkgdb","-package-db","C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib\\package.conf.d"], componentRoot = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop", componentDependencies = ["gui\\interop\\nexo-interop.cabal","gui\\interop\\package.yaml","stack.yaml"]},"C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib")
2021-10-30 12:44:39.5134801 [ThreadId 212] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-896d2aad708f479fa20aeeb2e219eaa1c60318f3
2021-10-30 12:44:39.5134801 [ThreadId 212] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-896d2aad708f479fa20aeeb2e219eaa1c60318f3
2021-10-30 12:44:39.5134801 [ThreadId 212] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-896d2aad708f479fa20aeeb2e219eaa1c60318f3
2021-10-30 12:44:39.5134801 [ThreadId 212] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-896d2aad708f479fa20aeeb2e219eaa1c60318f3
2021-10-30 12:44:39.5134801 [ThreadId 212] INFO hls:    Making new HscEnv[main,main,main,main]
2021-10-30 12:44:39.544726 [ThreadId 212] DEBUG hls:    New Component Cache HscEnvEq: (([],Just HscEnvEq 14),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("gui\\interop\\nexo-interop.cabal",Just 2021-09-17 14:38:25.7049532 UTC),("gui\\interop\\package.yaml",Nothing),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:44:39.544726 [ThreadId 212] DEBUG hls:    New Component Cache HscEnvEq: (([],Just HscEnvEq 15),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("nexo.cabal",Just 2021-10-18 00:03:38.514606 UTC),("package.yaml",Nothing),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:44:39.544726 [ThreadId 212] DEBUG hls:    New Component Cache HscEnvEq: (([],Just HscEnvEq 16),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("nexo.cabal",Just 2021-10-18 00:03:38.514606 UTC),("package.yaml",Nothing),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:44:39.6293325 [ThreadId 212] DEBUG hls:   New Component Cache HscEnvEq: (([],Just HscEnvEq 17),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("gui\\web\\package.yaml",Nothing),("gui\\web\\web.cabal",Just 2021-10-20 08:40:11.2399054 UTC),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:44:39.6449707 [ThreadId 212] DEBUG hls:   Known files updated: fromList [(TargetModule Nexo.Core.Substitute,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Substitute.hs"]),(TargetModule Nexo.Env.Std,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env\\Std.hs"]),(TargetModule Nexo.Core.Solve,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Solve.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"]),(TargetModule Nexo.Env,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env.hs"]),(TargetModule Nexo.Expr.Unit,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Unit.hs"]),(TargetModule Nexo.Expr.Parse,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"]),(TargetModule Interop,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Interop.hs"]),(TargetModule Nexo.Sheet,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Sheet.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Setup.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Setup.hs"]),(TargetModule Nexo.Core.Typecheck,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Typecheck.hs"]),(TargetModule Nexo.Interpret,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Interpret.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test\\Main.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test\\Main.hs"]),(TargetModule Nexo.Expr.Type,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Type.hs"]),(TargetModule Nexo.Core.Type,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Type.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"])]
2021-10-30 12:44:39.6449707 [ThreadId 168] DEBUG hls:   Finishing build session(exception: AsyncCancelled)
2021-10-30 12:44:39.6449707 [ThreadId 212] DEBUG hls:   Restarting build session for keys [GhcSessionIO; ] (aborting the previous one took 0.00s)
2021-10-30 12:44:39.6605851 [ThreadId 248] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\counter-example\\Main.hs"
2021-10-30 12:44:39.6605851 [ThreadId 251] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\Setup.hs"
2021-10-30 12:44:39.6605851 [ThreadId 245] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Setup.hs"
2021-10-30 12:44:39.6605851 [ThreadId 246] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\list-test.hs"
2021-10-30 12:44:39.6605851 [ThreadId 244] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"
2021-10-30 12:44:39.6605851 [ThreadId 252] INFO hls:    Consulting the cradle for "Setup.hs"
2021-10-30 12:44:39.6605851 [ThreadId 244] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\Setup.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:44:39.6605851 [ThreadId 252] DEBUG hls:   Session loading result: Left [CradleError {cradleErrorDependencies = [], cradleErrorExitCode = ExitSuccess, cradleErrorStderr = ["Multi Cradle: No prefixes matched","pwd: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo","filepath: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\Setup.hs","prefixes:","(\"./src/\",Stack {component = Just \"nexo:lib\", stackYaml = Nothing})","(\"./test/\",Stack {component = Just \"nexo:test:nexo-test\", stackYaml = Nothing})","(\"./gui/interop/\",Stack {component = Just \"nexo-interop:lib\", stackYaml = Nothing})","(\"./gui/web/\",Stack {component = Just \"web:exe:web\", stackYaml = Nothing})"]}]
2021-10-30 12:44:39.6761888 [ThreadId 253] INFO hls:    Consulting the cradle for "gui\\web\\Setup.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:44:40.9610226 [ThreadId 257] INFO hie-bios:       Cabal file warning inC:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\web.cabal@26:8: Tabs used as indentation at 26:8, 28:8
2021-10-30 12:44:42.2640885 [ThreadId 257] INFO hie-bios:       Using main module: 1. Package `web' component web:exe:web with main-is file: C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs
2021-10-30 12:44:43.6582855 [ThreadId 257] INFO hie-bios:       web> initial-build-steps (exe)
2021-10-30 12:44:45.6860988 [ThreadId 257] INFO hie-bios:       Configuring GHCi with the following packages: web
2021-10-30 12:44:47.5820357 [ThreadId 264] INFO hie-bios:       C:\Users\bradn\Documents\Spreadsheet\nexo\.stack-work\install\89cc576c\pkgdb;C:\sr\snapshots\fa46375f\pkgdb;C:\Users\bradn\AppData\Local\Programs\stack\x86_64-windows\ghc-8.10.4\lib\package.conf.d
2021-10-30 12:45:02.2414929 [ThreadId 253] DEBUG hls:   Session loading result: Right (ComponentOptions {componentOptions = ["-i","-odir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hidir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\odir","-hide-all-packages","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build\\web","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build\\web\\autogen","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build\\global-autogen","-iC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build\\web\\web-tmp","-stubdir=C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\.stack-work\\dist\\274b403a\\build","-IC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\include","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\lib","-LC:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\msys2-20150512\\mingw64\\bin","-package-id=base-4.14.1.0","-package-id=nexo-0.1.0.0-CfSdBYon1u8BwHpsbWfSLy","-package-id=containers-0.6.2.1","-package-id=reflex-dom-0.6.1.0-6zDYljhNYwR1ou4PLRi8o6","-package-id=text-1.2.4.1","-package-id=shakespeare-2.0.25-A0BfXYu56TqCpnjSIEEN8a","-Wall","-optP-include","-optPC:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\ghci\\26e3ba3f\\cabal_macros.h","-ghci-script=C:\\Users\\bradn\\AppData\\Local\\Temp\\haskell-stack-ghci\\73a78d0e\\ghci-script","-package-db","C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\.stack-work\\install\\89cc576c\\pkgdb","-package-db","C:\\sr\\snapshots\\fa46375f\\pkgdb","-package-db","C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib\\package.conf.d"], componentRoot = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web", componentDependencies = ["gui\\web\\web.cabal","gui\\web\\package.yaml","stack.yaml"]},"C:\\Users\\bradn\\AppData\\Local\\Programs\\stack\\x86_64-windows\\ghc-8.10.4\\lib")
2021-10-30 12:45:02.3040659 [ThreadId 253] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-179ce3556a23769a5eed7f54a8fb89df094c5cb6
2021-10-30 12:45:02.3040659 [ThreadId 253] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-179ce3556a23769a5eed7f54a8fb89df094c5cb6
2021-10-30 12:45:02.3040659 [ThreadId 253] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-179ce3556a23769a5eed7f54a8fb89df094c5cb6
2021-10-30 12:45:02.3040659 [ThreadId 253] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-179ce3556a23769a5eed7f54a8fb89df094c5cb6
2021-10-30 12:45:02.3040659 [ThreadId 253] INFO hls:    Using interface files cache dir: C:\Users\bradn\AppData\Local\ghcide\main-179ce3556a23769a5eed7f54a8fb89df094c5cb6
2021-10-30 12:45:02.3040659 [ThreadId 253] INFO hls:    Making new HscEnv[main,main,main,main,main]
2021-10-30 12:45:02.3352996 [ThreadId 253] DEBUG hls:   New Component Cache HscEnvEq: (([],Just HscEnvEq 19),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("gui\\web\\package.yaml",Nothing),("gui\\web\\web.cabal",Just 2021-10-20 08:40:11.2399054 UTC),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:45:02.3352996 [ThreadId 253] DEBUG hls:   New Component Cache HscEnvEq: (([],Just HscEnvEq 20),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("gui\\interop\\nexo-interop.cabal",Just 2021-09-17 14:38:25.7049532 UTC),("gui\\interop\\package.yaml",Nothing),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:45:02.3418141 [ThreadId 253] DEBUG hls:   New Component Cache HscEnvEq: (([],Just HscEnvEq 21),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("nexo.cabal",Just 2021-10-18 00:03:38.514606 UTC),("package.yaml",Nothing),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:45:02.3418141 [ThreadId 253] DEBUG hls:   New Component Cache HscEnvEq: (([],Just HscEnvEq 22),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("nexo.cabal",Just 2021-10-18 00:03:38.514606 UTC),("package.yaml",Nothing),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:45:02.4421475 [ThreadId 253] DEBUG hls:   New Component Cache HscEnvEq: (([],Just HscEnvEq 23),fromList [("C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",Just 2021-10-29 10:07:21.8797915 UTC),("gui\\web\\package.yaml",Nothing),("gui\\web\\web.cabal",Just 2021-10-20 08:40:11.2399054 UTC),("stack.yaml",Just 2021-10-17 23:36:53.6224988 UTC)])
2021-10-30 12:45:02.4578261 [ThreadId 253] DEBUG hls:   Known files updated: fromList [(TargetModule Nexo.Core.Substitute,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Substitute.hs"]),(TargetModule Nexo.Env.Std,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env\\Std.hs"]),(TargetModule Nexo.Core.Solve,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Solve.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"]),(TargetModule Nexo.Env,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env.hs"]),(TargetModule Nexo.Expr.Unit,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Unit.hs"]),(TargetModule Nexo.Expr.Parse,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"]),(TargetModule Interop,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Interop.hs"]),(TargetModule Nexo.Sheet,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Sheet.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Setup.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Setup.hs"]),(TargetModule Nexo.Core.Typecheck,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Typecheck.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\Setup.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\Setup.hs"]),(TargetModule Nexo.Interpret,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Interpret.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test\\Main.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test\\Main.hs"]),(TargetModule Nexo.Expr.Type,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Type.hs"]),(TargetModule Nexo.Core.Type,fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Type.hs"]),(TargetFile NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs",fromList ["C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"])]
2021-10-30 12:45:02.4578261 [ThreadId 240] DEBUG hls:   Finishing build session(exception: AsyncCancelled)
2021-10-30 12:45:02.4578261 [ThreadId 253] DEBUG hls:   Restarting build session for keys [GhcSessionIO; ] (aborting the previous one took 0.00s)
2021-10-30 12:45:02.4734837 [ThreadId 291] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\Setup.hs"
2021-10-30 12:45:02.4734837 [ThreadId 288] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Parse.hs"
2021-10-30 12:45:02.4734837 [ThreadId 290] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env\\Std.hs"
2021-10-30 12:45:02.4734837 [ThreadId 285] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Sheet.hs"
2021-10-30 12:45:02.4734837 [ThreadId 286] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\test\\Main.hs"
2021-10-30 12:45:02.4734837 [ThreadId 292] INFO hls:    Consulting the cradle for "list-test.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:45:02.4890577 [ThreadId 292] DEBUG hls:   Session loading result: Left [CradleError {cradleErrorDependencies = [], cradleErrorExitCode = ExitSuccess, cradleErrorStderr = ["Multi Cradle: No prefixes matched","pwd: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo","filepath: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\list-test.hs","prefixes:","(\"./src/\",Stack {component = Just \"nexo:lib\", stackYaml = Nothing})","(\"./test/\",Stack {component = Just \"nexo:test:nexo-test\", stackYaml = Nothing})","(\"./gui/interop/\",Stack {component = Just \"nexo-interop:lib\", stackYaml = Nothing})","(\"./gui/web/\",Stack {component = Just \"web:exe:web\", stackYaml = Nothing})"]}]
2021-10-30 12:45:02.4890577 [ThreadId 293] INFO hls:    Consulting the cradle for "counter-example\\Main.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:45:02.4890577 [ThreadId 293] DEBUG hls:   Session loading result: Left [CradleError {cradleErrorDependencies = [], cradleErrorExitCode = ExitSuccess, cradleErrorStderr = ["Multi Cradle: No prefixes matched","pwd: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo","filepath: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\counter-example\\Main.hs","prefixes:","(\"./src/\",Stack {component = Just \"nexo:lib\", stackYaml = Nothing})","(\"./test/\",Stack {component = Just \"nexo:test:nexo-test\", stackYaml = Nothing})","(\"./gui/interop/\",Stack {component = Just \"nexo-interop:lib\", stackYaml = Nothing})","(\"./gui/web/\",Stack {component = Just \"web:exe:web\", stackYaml = Nothing})"]}]
2021-10-30 12:45:02.4890577 [ThreadId 291] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\counter-example\\Main.hs"
2021-10-30 12:45:02.4890577 [ThreadId 296] INFO hls:    Consulting the cradle for "Setup.hs"
Output from setting up the cradle Cradle {cradleRootDir = "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo", cradleOptsProg = CradleAction: Stack}
2021-10-30 12:45:02.4890577 [ThreadId 296] DEBUG hls:   Session loading result: Left [CradleError {cradleErrorDependencies = [], cradleErrorExitCode = ExitSuccess, cradleErrorStderr = ["Multi Cradle: No prefixes matched","pwd: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo","filepath: C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\Setup.hs","prefixes:","(\"./src/\",Stack {component = Just \"nexo:lib\", stackYaml = Nothing})","(\"./test/\",Stack {component = Just \"nexo:test:nexo-test\", stackYaml = Nothing})","(\"./gui/interop/\",Stack {component = Just \"nexo-interop:lib\", stackYaml = Nothing})","(\"./gui/web/\",Stack {component = Just \"web:exe:web\", stackYaml = Nothing})"]}]
2021-10-30 12:45:02.4890577 [ThreadId 290] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Type.hs"
2021-10-30 12:45:02.4890577 [ThreadId 285] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Unit.hs"
2021-10-30 12:45:02.4890577 [ThreadId 285] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs"
2021-10-30 12:45:02.4890577 [ThreadId 285] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Substitute.hs"
2021-10-30 12:45:02.5046731 [ThreadId 286] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Setup.hs"
2021-10-30 12:45:02.5046731 [ThreadId 289] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Interpret.hs"
2021-10-30 12:45:02.5046731 [ThreadId 291] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Expr\\Type.hs"
2021-10-30 12:45:02.5046731 [ThreadId 289] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Env.hs"
2021-10-30 12:45:02.5046731 [ThreadId 289] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Solve.hs"
2021-10-30 12:45:02.5046731 [ThreadId 289] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\list-test.hs"
2021-10-30 12:45:02.5046731 [ThreadId 285] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\Setup.hs"
2021-10-30 12:45:02.5046731 [ThreadId 285] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\src\\Nexo\\Core\\Typecheck.hs"
2021-10-30 12:45:02.5046731 [ThreadId 284] DEBUG hls:   hlint:getIdeas:file:NormalizedFilePath "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\interop\\Interop.hs"
2021-10-30 12:45:02.5202993 [ThreadId 291] INFO hls:    File:     C:\Users\bradn\Documents\Spreadsheet\nexo\counter-example\Main.hs
Hidden:   no
Range:    1:1-2:1
Source:   cradle
Severity: DsError
Message:
  Multi Cradle: No prefixes matched
  pwd: C:\Users\bradn\Documents\Spreadsheet\nexo
  filepath: C:\Users\bradn\Documents\Spreadsheet\nexo\counter-example\Main.hs
  prefixes:
  ("./src/",Stack {component = Just "nexo:lib", stackYaml = Nothing})
  ("./test/",Stack {component = Just "nexo:test:nexo-test", stackYaml = Nothing})
  ("./gui/interop/",Stack {component = Just "nexo-interop:lib", stackYaml = Nothing})
  ("./gui/web/",Stack {component = Just "web:exe:web", stackYaml = Nothing})
2021-10-30 12:45:02.5202993 [ThreadId 338] INFO hls:    File:     C:\Users\bradn\Documents\Spreadsheet\nexo\Setup.hs
Hidden:   no
Range:    1:1-2:1
Source:   cradle
Severity: DsError
Message:
  Multi Cradle: No prefixes matched
  pwd: C:\Users\bradn\Documents\Spreadsheet\nexo
  filepath: C:\Users\bradn\Documents\Spreadsheet\nexo\Setup.hs
  prefixes:
  ("./src/",Stack {component = Just "nexo:lib", stackYaml = Nothing})
  ("./test/",Stack {component = Just "nexo:test:nexo-test", stackYaml = Nothing})
  ("./gui/interop/",Stack {component = Just "nexo-interop:lib", stackYaml = Nothing})
  ("./gui/web/",Stack {component = Just "web:exe:web", stackYaml = Nothing})
2021-10-30 12:45:02.5202993 [ThreadId 336] INFO hls:    File:     C:\Users\bradn\Documents\Spreadsheet\nexo\list-test.hs
Hidden:   no
Range:    1:1-2:1
Source:   cradle
Severity: DsError
Message:
  Multi Cradle: No prefixes matched
  pwd: C:\Users\bradn\Documents\Spreadsheet\nexo
  filepath: C:\Users\bradn\Documents\Spreadsheet\nexo\list-test.hs
  prefixes:
  ("./src/",Stack {component = Just "nexo:lib", stackYaml = Nothing})
  ("./test/",Stack {component = Just "nexo:test:nexo-test", stackYaml = Nothing})
  ("./gui/interop/",Stack {component = Just "nexo-interop:lib", stackYaml = Nothing})
  ("./gui/web/",Stack {component = Just "web:exe:web", stackYaml = Nothing})
2021-10-30 12:45:02.8211494 [ThreadId 291] INFO hls:    File:     C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs
Hidden:   no
Range:    80:24-80:81
Source:   hlint
Severity: DsInfo
Message:
  Use maybe
  Found:
  fromMaybe "" $ display . cellValue <$> Map.lookup ident s
  Why not:
  maybe "" (display . cellValue) (Map.lookup ident s)
2021-10-30 12:45:03.5297941 [ThreadId 291] INFO hls:    File:     C:\Users\bradn\Documents\Spreadsheet\nexo\gui\interop\Setup.hs
Hidden:   no
Range:    1:8-1:27
Source:   not found
Severity: DsError
Message:
  Could not load module ‘Distribution.Simple’
  It is a member of the hidden package ‘Cabal-3.2.1.0’.
  You can run ‘:set -package Cabal’ to expose it.
  (Note: this unloads all the modules in the current scope.)
2021-10-30 12:45:03.6597532 [ThreadId 291] INFO hls:    File:     C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\Setup.hs
Hidden:   no
Range:    1:8-1:27
Source:   not found
Severity: DsError
Message:
  Could not load module ‘Distribution.Simple’
  It is a member of the hidden package ‘Cabal-3.2.1.0’.
  You can run ‘:set -package Cabal’ to expose it.
  (Note: this unloads all the modules in the current scope.)
2021-10-30 12:45:04.9684968 [ThreadId 576] INFO hls:    File:     C:\Users\bradn\Documents\Spreadsheet\nexo\src\Nexo\Expr\Type.hs
Hidden:   no
Range:    14:1-14:31
Source:   typecheck
Severity: DsWarning
Message:
  The import of ‘Data.List’ is redundant
  except perhaps to import instances from ‘Data.List’
  To import instances alone, use: import Data.List()
2021-10-30 12:45:05.4386912 [ThreadId 656] INFO hls:    File:     C:\Users\bradn\Documents\Spreadsheet\nexo\src\Nexo\Core\Typecheck.hs
Hidden:   no
Range:    10:1-10:38
Source:   typecheck
Severity: DsWarning
Message:
  The import of ‘Control.Monad.Fail’ is redundant
  except perhaps to import instances from ‘Control.Monad.Fail’
  To import instances alone, use: import Control.Monad.Fail()
2021-10-30 12:45:05.516847 [ThreadId 338] INFO hls:     File:     C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs
Hidden:   no
Range:    80:24-80:81
Source:   hlint
Severity: DsInfo
Message:
  Use maybe
  Found:
  fromMaybe "" $ display . cellValue <$> Map.lookup ident s
  Why not:
  maybe "" (display . cellValue) (Map.lookup ident s)
File:     C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs
Hidden:   no
Range:    10:1-10:36
Source:   typecheck
Severity: DsWarning
Message:
  The import of ‘Control.Applicative’ is redundant
  except perhaps to import instances from ‘Control.Applicative’
  To import instances alone, use: import Control.Applicative()
File:     C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs
Hidden:   no
Range:    72:5-72:11
Source:   typecheck
Severity: DsWarning
Message:  Defined but not used: ‘idsDyn’
File:     C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs
Hidden:   no
Range:    84:54-84:55
Source:   typecheck
Severity: DsError
Message:
  • Found hole:
  _ :: Map.Map Int (Event t Cell) -> Dynamic t (Event t a)
  Where: ‘a’ is a rigid type variable bound by
  the inferred type of cellsEv :: Event t a
  at C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:84:13-70
  ‘t’ is a rigid type variable bound by
  the type signature for:
  sheet :: forall t (m :: * -> *).
  (DomBuilder t m, MonadHold t m, MonadFix m, PostBuild t m,
  Reflex t) =>
  m ()
  at C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:(62,1)-(68,13)
  • In the expression: _
  In the expression: _ $ updated <$> m
  In the second argument of ‘(>>=)’, namely
  ‘\ m -> _ $ updated <$> m’
  • Relevant bindings include
  m :: Map.Map Int (Dynamic t Cell)
  (bound at C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:84:49)
  cellsEv :: Event t a
  (bound at C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:84:13)
  cellsDyn :: Dynamic t (Map.Map Int (Dynamic t Cell))
  (bound at C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:82:9)
  getCellValue :: Int -> Dynamic t Text
  (bound at C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:79:13)
  sheetDyn :: Dynamic t Sheet
  (bound at C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:85:9)
  cellsCurIx :: Dynamic t Int
  (bound at C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:74:5)
  sheet :: m ()
  (bound at C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:69:1)
  (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds)
  Constraints include
  DomBuilder
  t
  m (from C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:(62,1)-(68,13))
  MonadHold
  t
  m (from C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:(62,1)-(68,13))
  MonadFix
  m (from C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:(62,1)-(68,13))
  PostBuild
  t
  m (from C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:(62,1)-(68,13))
  Reflex
  t (from C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\src\Main.hs:(62,1)-(68,13))
2021-10-30 12:45:05.5702487 [ThreadId 685] INFO hls:    finish: User TypeCheck (took 3.11s)
2021-10-30 12:45:05.601527 [ThreadId 695] INFO hls:     finish: GetHie (took 0.03s)
Files that failed:
2021-10-30 12:45:05.6171219 [ThreadId 699] INFO hls:    finish: GenerateCore (took 0.01s)
 * C:\Users\bradn\Documents\Spreadsheet\nexo\Setup.hs
 * C:\Users\bradn\Documents\Spreadsheet\nexo\list-test.hs
 * C:\Users\bradn\Documents\Spreadsheet\nexo\counter-example\Main.hs
 * C:\Users\bradn\Documents\Spreadsheet\nexo\gui\interop\Setup.hs
 * C:\Users\bradn\Documents\Spreadsheet\nexo\gui\web\Setup.hs

Completed (14 files worked, 5 files failed)
haskell-language-server-wrapper.exe: callProcess: C:\Users\bradn\Documents\Haskell\hls\haskell-language-server-8.10.4.exe "--debug" (exit 5): failed
LSP logs:
[Trace - 01:05:53 PM] Received response 'initialize - (1)' in 456ms.
Result: {
  "capabilities": {
    "codeActionProvider": true,
    "workspaceSymbolProvider": true,
    "textDocumentSync": {
      "openClose": true,
      "change": 2,
      "save": {
      }
    },
    "codeLensProvider": {
      "workDoneProgress": null,
      "resolveProvider": null
    },
    "documentSymbolProvider": true,
    "selectionRangeProvider": null,
    "documentFormattingProvider": true,
    "referencesProvider": true,
    "definitionProvider": true,
    "callHierarchyProvider": true,
    "workspace": {
      "workspaceFolders": {
        "changeNotifications": true,
        "supported": true
      }
    },
    "completionProvider": {
      "triggerCharacters": [
        "."
      ],
      "resolveProvider": null
    },
    "implementationProvider": null,
    "semanticTokensProvider": {
      "legend": {
        "tokenTypes": [
          "type",
          "class",
          "enum",
          "interface",
          "struct",
          "typeParameter",
          "parameter",
          "variable",
          "property",
          "enumMember",
          "event",
          "function",
          "method",
          "macro",
          "keyword",
          "modifier",
          "comment",
          "string",
          "number",
          "regexp",
          "operator"
        ],
        "tokenModifiers": [
          "declaration",
          "definition",
          "readonly",
          "static",
          "deprecated",
          "abstract",
          "async",
          "modification",
          "documentation",
          "defaultLibrary"
        ]
      }
    },
    "documentRangeFormattingProvider": true,
    "documentHighlightProvider": true,
    "declarationProvider": null,
    "renameProvider": null,
    "executeCommandProvider": {
      "commands": [
        "6772:tactics:wingman.emptyCase",
        "6772:tactics:tacticsAutoCommand",
        "6772:tactics:tacticsIntrosCommand",
        "6772:tactics:tacticsIntroAndDestructCommand",
        "6772:tactics:tacticsDestructCommand",
        "6772:tactics:tacticsDestructPunCommand",
        "6772:tactics:tacticsHomomorphismCommand",
        "6772:tactics:tacticsDestructLambdaCaseCommand",
        "6772:tactics:tacticsHomomorphismLambdaCaseCommand",
        "6772:tactics:tacticsDestructAllCommand",
        "6772:tactics:tacticsUseDataConCommand",
        "6772:tactics:tacticsRefineCommand",
        "6772:tactics:tacticsBeginMetaprogramCommand",
        "6772:tactics:tacticsRunMetaprogramCommand",
        "6772:retrie:retrieCommand",
        "6772:class:addMinimalMethodPlaceholders",
        "6772:eval:evalCommand",
        "6772:importLens:ImportLensCommand",
        "6772:refineImports:RefineImportLensCommand",
        "6772:moduleName:updateModuleName",
        "6772:hlint:applyOne",
        "6772:hlint:applyAll",
        "6772:splice:expandTHSpliceInplace",
        "6772:ghcide-completions:extendImport",
        "6772:ghcide-type-lenses:typesignature.add"
      ]
    },
    "typeDefinitionProvider": true,
    "colorProvider": null,
    "hoverProvider": true,
    "foldingRangeProvider": null
  }
}


[Trace - 01:05:53 PM] Sending notification 'initialized'.
Params: {
}


[Trace - 01:05:53 PM] Sending notification 'workspace/didChangeConfiguration'.
Params: {
  "settings": {
    "haskell": {
      "plugin": {
        "hlint": {
          "globalOn": true
        },
        "moduleName": {
          "globalOn": true
        },
        "importLens": {
          "globalOn": true
        },
        "eval": {
          "globalOn": true
        },
        "retrie": {
          "globalOn": true
        },
        "tactic": {
          "globalOn": true
        },
        "brittany": {
          "globalOn": true
        },
        "stylish-haskell": {
          "globalOn": true
        },
        "ormolu": {
          "globalOn": true
        },
        "fourmolu": {
          "globalOn": true
        },
        "floskell": {
          "globalOn": true
        },
        "pragmas": {
          "globalOn": true
        },
        "ghcide": {
          "globalOn": true
        }
      },
      "hlintOn": true,
      "maxNumberOfProblems": 100,
      "diagnosticsOnChange": true,
      "liquidOn": false,
      "completionSnippetsOn": true,
      "formatOnImportOn": true,
      "formattingProvider": "ormolu"
    }
  }
}


[Trace - 01:05:53 PM] Sending notification 'textDocument/didOpen'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs",
    "languageId": "haskell",
    "version": 0,
    "text": "{-# LANGUAGE OverloadedStrings   #-}\n{-# LANGUAGE QuasiQuotes         #-}\n{-# LANGUAGE RecordWildCards     #-}\n{-# LANGUAGE RecursiveDo         #-}\n{-# LANGUAGE ScopedTypeVariables #-}\n{-# LANGUAGE TupleSections       #-}\n{-# LANGUAGE TypeApplications    #-}\nmodule Main where\n\nimport Control.Applicative (liftA2)\nimport Control.Monad.Fix (MonadFix)\nimport Data.String (IsString(fromString))\nimport Data.Text (Text, pack, unpack)\nimport Text.Lucius (renderCss, lucius)\n\nimport qualified Data.Map.Strict as Map\nimport qualified Data.Text.Lazy as TL\n\nimport Nexo.Expr.Parse\nimport Nexo.Expr.Type\nimport Nexo.Sheet\n\nimport Reflex.Dom hiding (display)\nimport Data.Maybe (fromMaybe)\n\ncell ::\n    ( DomBuilder t m\n    , MonadHold t m\n    , PostBuild t m\n    )\n    => Dynamic t Text\n    -> m (Dynamic t Cell)\ncell valueDyn = elClass \"form\" \"cell\" $ do\n    label \"Name\"\n    iName <- inputElement def\n    br\n    label \"Type\"\n    iType <- inputElement def\n    br\n    label \"Expr\"\n    iExpr <- inputElement def\n    br\n    label \"Value\"\n    dynText valueDyn\n\n    let nameEv = _inputElement_input iName\n        typeEv = _inputElement_input iType\n        exprEv = _inputElement_input iExpr\n\n    let typeParsedEv = parseMaybe pPType . unpack <$> typeEv\n        exprParsedEv = mapMaybe (parseMaybe pExpr . unpack) exprEv\n\n    nameDyn <- holdDyn \"\" nameEv\n    typeDyn <- holdDyn Nothing typeParsedEv\n    exprDyn <- holdDyn zeroExpr exprParsedEv\n\n    return $ Cell <$> (unpack <$> nameDyn) <*> typeDyn <*> exprDyn <*> pure Invalidated\n  where\n    label = el \"label\" . text\n    br = el \"br\" blank\n\nsheet :: forall t m.\n    ( DomBuilder t m\n    , MonadHold t m\n    , MonadFix m\n    , PostBuild t m\n    , Reflex t\n    ) => m ()\nsheet = do\n    addEv <- button \"Add\"\n    el \"br\" blank\n    idsDyn <- updated @_ @Int <$> count addEv\n\n    cellsCurIx <- count addEv\n\n    rec\n        let -- partial: assumes the identifier is valid\n            getCellValue :: Int -> Dynamic t Text\n            getCellValue ident = ffor sheetDyn $ \\(Sheet s) ->\n                pack $ fromMaybe \"\" $ display . cellValue <$> Map.lookup ident s\n\n        cellsDyn <- listHoldWithKey Map.empty (mkDiff <$> updated cellsCurIx) $\n            \\i _ -> cell (getCellValue i)\n        let cellsEv = switchDyn $ cellsDyn >>= \\m -> _ $ updated <$> m\n        sheetDyn <- foldDyn (\\v -> evalSheet . uncurry insert v) (Sheet Map.empty) cellsEv\n    blank\n  where\n    mkDiff :: Int -> Map.Map Int (Maybe ())\n    mkDiff = flip Map.singleton (Just ())\n\nstyle :: IsString s => s\nstyle = fromString $ TL.unpack $ renderCss $ ($ undefined) [lucius|\n.cell {\n    display: inline-block;\n    border: 1px solid;\n}\n|]\n\nmain :: IO ()\nmain = mainWidgetWithCss style sheet\n"
  }
}


[Trace - 01:05:53 PM] Sending request 'textDocument/documentSymbol - (2)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  }
}


[Trace - 01:05:53 PM] Sending request 'textDocument/codeAction - (3)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 16,
      "character": 0
    },
    "end": {
      "line": 16,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:53 PM] Sending request 'textDocument/documentHighlight - (4)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 16,
    "character": 0
  }
}


[Trace - 01:05:53 PM] Sending request 'textDocument/documentSymbol - (5)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  }
}


[Trace - 01:05:53 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 3
}


[Trace - 01:05:53 PM] Sending request 'textDocument/codeAction - (6)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 16,
      "character": 0
    },
    "end": {
      "line": 16,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:53 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 4
}


[Trace - 01:05:53 PM] Sending request 'textDocument/documentHighlight - (7)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 16,
    "character": 0
  }
}


[Trace - 01:05:53 PM] Received request 'client/registerCapability - (0).
Params: {
  "registrations": [
    {
      "registerOptions": {
        "watchers": [
          {
            "globPattern": "**/*.hs",
            "kind": 7
          },
          {
            "globPattern": "**/*.hs-boot",
            "kind": 7
          },
          {
            "globPattern": "**/*.lhs",
            "kind": 7
          },
          {
            "globPattern": "**/*.lhs-boot",
            "kind": 7
          }
        ]
      },
      "method": "workspace/didChangeWatchedFiles",
      "id": "globalFileWatches"
    }
  ]
}


[Trace - 01:05:53 PM] Sending response 'client/registerCapability - (0)'. Processing request took 59ms
Params: {
  "jsonrpc": "2.0",
  "id": 0,
  "result": null
}


[Trace - 01:05:53 PM] Received request 'window/workDoneProgress/create - (1).
Params: {
  "token": 0
}


[Trace - 01:05:53 PM] Sending response 'window/workDoneProgress/create - (1)'. Processing request took 0ms
Params: {
  "jsonrpc": "2.0",
  "id": 1,
  "result": null
}


[Trace - 01:05:53 PM] Received notification '$/progress'.
Params: {
  "token": 0,
  "value": {
    "cancellable": null,
    "kind": "begin",
    "title": "Setting up nexo (for gui\\web\\src\\Main.hs)"
  }
}


[Trace - 01:05:53 PM] Received request 'window/workDoneProgress/create - (2).
Params: {
  "token": "6"
}


[Trace - 01:05:53 PM] Sending response 'window/workDoneProgress/create - (2)'. Processing request took 0ms
Params: {
  "jsonrpc": "2.0",
  "id": 2,
  "result": null
}


[Trace - 01:05:53 PM] Received response 'textDocument/documentHighlight - (7)' in 177ms.
Result: []


[Trace - 01:05:53 PM] Received response 'nil - (4)' in 0ms.
Result: []


[Trace - 01:05:53 PM] Received notification '$/progress'.
Params: {
  "token": "6",
  "value": {
    "kind": "begin",
    "title": "Processing"
  }
}


[Trace - 01:05:54 PM] Received notification '$/progress'.
Params: {
  "token": "6",
  "value": {
    "kind": "report",
    "message": "1/2"
  }
}


[Trace - 01:05:55 PM] Sending request 'textDocument/codeAction - (8)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 16,
      "character": 0
    },
    "end": {
      "line": 16,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:56 PM] Sending request 'textDocument/documentSymbol - (9)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  }
}


[Trace - 01:05:56 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 6
}


[Trace - 01:05:56 PM] Sending request 'textDocument/codeAction - (10)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 16,
      "character": 0
    },
    "end": {
      "line": 16,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:56 PM] Sending request 'textDocument/documentHighlight - (11)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 16,
    "character": 0
  }
}


[Trace - 01:05:56 PM] Received response 'textDocument/documentHighlight - (11)' in 16ms.
Result: []


[Trace - 01:05:56 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 8
}


[Trace - 01:05:56 PM] Sending request 'textDocument/codeAction - (12)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 16,
      "character": 0
    },
    "end": {
      "line": 16,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:56 PM] Sending request 'textDocument/hover - (13)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 16,
    "character": 0
  }
}


[Trace - 01:05:56 PM] Sending request 'textDocument/documentSymbol - (14)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  }
}


[Trace - 01:05:56 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 10
}


[Trace - 01:05:56 PM] Sending request 'textDocument/codeAction - (15)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 16,
      "character": 0
    },
    "end": {
      "line": 16,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:56 PM] Sending request 'textDocument/documentHighlight - (16)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 16,
    "character": 0
  }
}


[Trace - 01:05:56 PM] Received response 'textDocument/documentHighlight - (16)' in 12ms.
Result: []


[Trace - 01:05:57 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 12
}


[Trace - 01:05:57 PM] Sending request 'textDocument/codeAction - (17)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 100,
      "character": 0
    },
    "end": {
      "line": 100,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:57 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 17
}


[Trace - 01:05:57 PM] Sending request 'textDocument/codeAction - (18)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 99,
      "character": 0
    },
    "end": {
      "line": 99,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:57 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 13
}


[Trace - 01:05:57 PM] Sending request 'textDocument/hover - (19)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 99,
    "character": 0
  }
}


[Trace - 01:05:58 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 18
}


[Trace - 01:05:58 PM] Sending request 'textDocument/codeAction - (20)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 89,
      "character": 0
    },
    "end": {
      "line": 89,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:58 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 19
}


[Trace - 01:05:58 PM] Sending request 'textDocument/hover - (21)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 89,
    "character": 0
  }
}


[Trace - 01:05:58 PM] Sending request 'textDocument/documentSymbol - (22)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  }
}


[Trace - 01:05:58 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 15
}


[Trace - 01:05:58 PM] Sending request 'textDocument/codeAction - (23)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 89,
      "character": 0
    },
    "end": {
      "line": 89,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:59 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 20
}


[Trace - 01:05:59 PM] Sending request 'textDocument/codeAction - (24)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 89,
      "character": 0
    },
    "end": {
      "line": 89,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:05:59 PM] Sending request 'textDocument/documentSymbol - (25)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  }
}


[Trace - 01:05:59 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 23
}


[Trace - 01:05:59 PM] Sending request 'textDocument/codeAction - (26)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 89,
      "character": 0
    },
    "end": {
      "line": 89,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:01 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 24
}


[Trace - 01:06:01 PM] Sending request 'textDocument/codeAction - (27)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 89,
      "character": 0
    },
    "end": {
      "line": 89,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:02 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 27
}


[Trace - 01:06:02 PM] Sending request 'textDocument/codeAction - (28)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 89,
      "character": 0
    },
    "end": {
      "line": 89,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:02 PM] Sending request 'textDocument/documentSymbol - (29)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  }
}


[Trace - 01:06:02 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 26
}


[Trace - 01:06:02 PM] Sending request 'textDocument/codeAction - (30)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 89,
      "character": 0
    },
    "end": {
      "line": 89,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:16 PM] Received notification '$/progress'.
Params: {
  "token": 0,
  "value": {
    "kind": "end"
  }
}


[Trace - 01:06:16 PM] Received notification '$/progress'.
Params: {
  "token": "6",
  "value": {
    "kind": "end"
  }
}


[Trace - 01:06:16 PM] Received request 'client/registerCapability - (3).
Params: {
  "registrations": [
    {
      "registerOptions": {
        "watchers": [
          {
            "globPattern": "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\hie.yaml",
            "kind": 7
          }
        ]
      },
      "method": "workspace/didChangeWatchedFiles",
      "id": "globalFileWatches"
    }
  ]
}


[Trace - 01:06:16 PM] Sending response 'client/registerCapability - (3)'. Processing request took 1ms
Params: {
  "jsonrpc": "2.0",
  "id": 3,
  "result": null
}


[Trace - 01:06:16 PM] Received request 'client/registerCapability - (4).
Params: {
  "registrations": [
    {
      "registerOptions": {
        "watchers": [
          {
            "globPattern": "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\web.cabal",
            "kind": 7
          }
        ]
      },
      "method": "workspace/didChangeWatchedFiles",
      "id": "globalFileWatches"
    }
  ]
}


[Trace - 01:06:16 PM] Sending response 'client/registerCapability - (4)'. Processing request took 1ms
Params: {
  "jsonrpc": "2.0",
  "id": 4,
  "result": null
}


[Trace - 01:06:16 PM] Received request 'client/registerCapability - (5).
Params: {
  "registrations": [
    {
      "registerOptions": {
        "watchers": [
          {
            "globPattern": "C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\stack.yaml",
            "kind": 7
          }
        ]
      },
      "method": "workspace/didChangeWatchedFiles",
      "id": "globalFileWatches"
    }
  ]
}


[Trace - 01:06:16 PM] Sending response 'client/registerCapability - (5)'. Processing request took 0ms
Params: {
  "jsonrpc": "2.0",
  "id": 5,
  "result": null
}


[Trace - 01:06:16 PM] Received response 'textDocument/documentSymbol - (14)' in 897ms.
Result: [
  {
    "name": "Main",
    "kind": 1,
    "children": [
      {
        "name": "imports",
        "kind": 2,
        "children": [
          {
            "name": "import Control.Applicative",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            }
          },
          {
            "name": "import Control.Monad.Fix",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            }
          },
          {
            "name": "import Data.String",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            },
            "range": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            }
          },
          {
            "name": "import Data.Text",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            }
          },
          {
            "name": "import Text.Lucius",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            },
            "range": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Map.Strict",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            },
            "range": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Text.Lazy",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            }
          },
          {
            "name": "import Nexo.Expr.Parse",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            },
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "name": "import Nexo.Expr.Type",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            },
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "name": "import Nexo.Sheet",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            },
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "name": "import Reflex.Dom",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            },
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          },
          {
            "name": "import Data.Maybe",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            },
            "range": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            }
          }
        ],
        "selectionRange": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        },
        "range": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        }
      },
      {
        "name": "cell",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        },
        "range": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        }
      },
      {
        "name": "sheet",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        },
        "range": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        }
      },
      {
        "name": "style",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        },
        "range": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        }
      },
      {
        "name": "main",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        },
        "range": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        }
      }
    ],
    "selectionRange": {
      "start": {
        "line": 7,
        "character": 7
      },
      "end": {
        "line": 7,
        "character": 11
      }
    },
    "range": {
      "start": {
        "line": 0,
        "character": 0
      },
      "end": {
        "line": 2147483647,
        "character": 0
      }
    }
  }
]


[Trace - 01:06:16 PM] Received response 'textDocument/documentSymbol - (9)' in 528ms.
Result: [
  {
    "name": "Main",
    "kind": 1,
    "children": [
      {
        "name": "imports",
        "kind": 2,
        "children": [
          {
            "name": "import Control.Applicative",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            }
          },
          {
            "name": "import Control.Monad.Fix",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            }
          },
          {
            "name": "import Data.String",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            },
            "range": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            }
          },
          {
            "name": "import Data.Text",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            }
          },
          {
            "name": "import Text.Lucius",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            },
            "range": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Map.Strict",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            },
            "range": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Text.Lazy",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            }
          },
          {
            "name": "import Nexo.Expr.Parse",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            },
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "name": "import Nexo.Expr.Type",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            },
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "name": "import Nexo.Sheet",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            },
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "name": "import Reflex.Dom",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            },
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          },
          {
            "name": "import Data.Maybe",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            },
            "range": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            }
          }
        ],
        "selectionRange": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        },
        "range": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        }
      },
      {
        "name": "cell",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        },
        "range": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        }
      },
      {
        "name": "sheet",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        },
        "range": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        }
      },
      {
        "name": "style",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        },
        "range": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        }
      },
      {
        "name": "main",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        },
        "range": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        }
      }
    ],
    "selectionRange": {
      "start": {
        "line": 7,
        "character": 7
      },
      "end": {
        "line": 7,
        "character": 11
      }
    },
    "range": {
      "start": {
        "line": 0,
        "character": 0
      },
      "end": {
        "line": 2147483647,
        "character": 0
      }
    }
  }
]


[Trace - 01:06:16 PM] Received response 'textDocument/documentSymbol - (25)' in 708ms.
Result: [
  {
    "name": "Main",
    "kind": 1,
    "children": [
      {
        "name": "imports",
        "kind": 2,
        "children": [
          {
            "name": "import Control.Applicative",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            }
          },
          {
            "name": "import Control.Monad.Fix",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            }
          },
          {
            "name": "import Data.String",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            },
            "range": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            }
          },
          {
            "name": "import Data.Text",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            }
          },
          {
            "name": "import Text.Lucius",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            },
            "range": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Map.Strict",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            },
            "range": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Text.Lazy",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            }
          },
          {
            "name": "import Nexo.Expr.Parse",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            },
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "name": "import Nexo.Expr.Type",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            },
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "name": "import Nexo.Sheet",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            },
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "name": "import Reflex.Dom",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            },
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          },
          {
            "name": "import Data.Maybe",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            },
            "range": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            }
          }
        ],
        "selectionRange": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        },
        "range": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        }
      },
      {
        "name": "cell",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        },
        "range": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        }
      },
      {
        "name": "sheet",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        },
        "range": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        }
      },
      {
        "name": "style",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        },
        "range": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        }
      },
      {
        "name": "main",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        },
        "range": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        }
      }
    ],
    "selectionRange": {
      "start": {
        "line": 7,
        "character": 7
      },
      "end": {
        "line": 7,
        "character": 11
      }
    },
    "range": {
      "start": {
        "line": 0,
        "character": 0
      },
      "end": {
        "line": 2147483647,
        "character": 0
      }
    }
  }
]


[Trace - 01:06:16 PM] Received response 'textDocument/documentSymbol - (2)' in 55ms.
Result: [
  {
    "name": "Main",
    "kind": 1,
    "children": [
      {
        "name": "imports",
        "kind": 2,
        "children": [
          {
            "name": "import Control.Applicative",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            }
          },
          {
            "name": "import Control.Monad.Fix",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            }
          },
          {
            "name": "import Data.String",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            },
            "range": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            }
          },
          {
            "name": "import Data.Text",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            }
          },
          {
            "name": "import Text.Lucius",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            },
            "range": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Map.Strict",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            },
            "range": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Text.Lazy",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            }
          },
          {
            "name": "import Nexo.Expr.Parse",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            },
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "name": "import Nexo.Expr.Type",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            },
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "name": "import Nexo.Sheet",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            },
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "name": "import Reflex.Dom",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            },
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          },
          {
            "name": "import Data.Maybe",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            },
            "range": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            }
          }
        ],
        "selectionRange": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        },
        "range": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        }
      },
      {
        "name": "cell",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        },
        "range": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        }
      },
      {
        "name": "sheet",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        },
        "range": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        }
      },
      {
        "name": "style",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        },
        "range": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        }
      },
      {
        "name": "main",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        },
        "range": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        }
      }
    ],
    "selectionRange": {
      "start": {
        "line": 7,
        "character": 7
      },
      "end": {
        "line": 7,
        "character": 11
      }
    },
    "range": {
      "start": {
        "line": 0,
        "character": 0
      },
      "end": {
        "line": 2147483647,
        "character": 0
      }
    }
  }
]


[Trace - 01:06:16 PM] Received response 'textDocument/documentSymbol - (22)' in 793ms.
Result: [
  {
    "name": "Main",
    "kind": 1,
    "children": [
      {
        "name": "imports",
        "kind": 2,
        "children": [
          {
            "name": "import Control.Applicative",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            }
          },
          {
            "name": "import Control.Monad.Fix",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            }
          },
          {
            "name": "import Data.String",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            },
            "range": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            }
          },
          {
            "name": "import Data.Text",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            }
          },
          {
            "name": "import Text.Lucius",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            },
            "range": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Map.Strict",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            },
            "range": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Text.Lazy",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            }
          },
          {
            "name": "import Nexo.Expr.Parse",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            },
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "name": "import Nexo.Expr.Type",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            },
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "name": "import Nexo.Sheet",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            },
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "name": "import Reflex.Dom",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            },
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          },
          {
            "name": "import Data.Maybe",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            },
            "range": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            }
          }
        ],
        "selectionRange": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        },
        "range": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        }
      },
      {
        "name": "cell",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        },
        "range": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        }
      },
      {
        "name": "sheet",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        },
        "range": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        }
      },
      {
        "name": "style",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        },
        "range": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        }
      },
      {
        "name": "main",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        },
        "range": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        }
      }
    ],
    "selectionRange": {
      "start": {
        "line": 7,
        "character": 7
      },
      "end": {
        "line": 7,
        "character": 11
      }
    },
    "range": {
      "start": {
        "line": 0,
        "character": 0
      },
      "end": {
        "line": 2147483647,
        "character": 0
      }
    }
  }
]


[Trace - 01:06:16 PM] Received response 'textDocument/documentSymbol - (5)' in 109ms.
Result: [
  {
    "name": "Main",
    "kind": 1,
    "children": [
      {
        "name": "imports",
        "kind": 2,
        "children": [
          {
            "name": "import Control.Applicative",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            }
          },
          {
            "name": "import Control.Monad.Fix",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            }
          },
          {
            "name": "import Data.String",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            },
            "range": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            }
          },
          {
            "name": "import Data.Text",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            }
          },
          {
            "name": "import Text.Lucius",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            },
            "range": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Map.Strict",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            },
            "range": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Text.Lazy",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            }
          },
          {
            "name": "import Nexo.Expr.Parse",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            },
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "name": "import Nexo.Expr.Type",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            },
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "name": "import Nexo.Sheet",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            },
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "name": "import Reflex.Dom",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            },
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          },
          {
            "name": "import Data.Maybe",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            },
            "range": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            }
          }
        ],
        "selectionRange": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        },
        "range": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        }
      },
      {
        "name": "cell",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        },
        "range": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        }
      },
      {
        "name": "sheet",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        },
        "range": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        }
      },
      {
        "name": "style",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        },
        "range": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        }
      },
      {
        "name": "main",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        },
        "range": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        }
      }
    ],
    "selectionRange": {
      "start": {
        "line": 7,
        "character": 7
      },
      "end": {
        "line": 7,
        "character": 11
      }
    },
    "range": {
      "start": {
        "line": 0,
        "character": 0
      },
      "end": {
        "line": 2147483647,
        "character": 0
      }
    }
  }
]


[Trace - 01:06:16 PM] Received response 'textDocument/documentSymbol - (29)' in 882ms.
Result: [
  {
    "name": "Main",
    "kind": 1,
    "children": [
      {
        "name": "imports",
        "kind": 2,
        "children": [
          {
            "name": "import Control.Applicative",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 9,
                "character": 0
              },
              "end": {
                "line": 9,
                "character": 35
              }
            }
          },
          {
            "name": "import Control.Monad.Fix",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            },
            "range": {
              "start": {
                "line": 10,
                "character": 0
              },
              "end": {
                "line": 10,
                "character": 35
              }
            }
          },
          {
            "name": "import Data.String",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            },
            "range": {
              "start": {
                "line": 11,
                "character": 0
              },
              "end": {
                "line": 11,
                "character": 41
              }
            }
          },
          {
            "name": "import Data.Text",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 12,
                "character": 0
              },
              "end": {
                "line": 12,
                "character": 37
              }
            }
          },
          {
            "name": "import Text.Lucius",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            },
            "range": {
              "start": {
                "line": 13,
                "character": 0
              },
              "end": {
                "line": 13,
                "character": 38
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Map.Strict",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            },
            "range": {
              "start": {
                "line": 15,
                "character": 0
              },
              "end": {
                "line": 15,
                "character": 39
              }
            }
          },
          {
            "detail": "qualified",
            "name": "import Data.Text.Lazy",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            },
            "range": {
              "start": {
                "line": 16,
                "character": 0
              },
              "end": {
                "line": 16,
                "character": 37
              }
            }
          },
          {
            "name": "import Nexo.Expr.Parse",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            },
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "name": "import Nexo.Expr.Type",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            },
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "name": "import Nexo.Sheet",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            },
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "name": "import Reflex.Dom",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            },
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          },
          {
            "name": "import Data.Maybe",
            "kind": 2,
            "selectionRange": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            },
            "range": {
              "start": {
                "line": 23,
                "character": 0
              },
              "end": {
                "line": 23,
                "character": 29
              }
            }
          }
        ],
        "selectionRange": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        },
        "range": {
          "start": {
            "line": 9,
            "character": 0
          },
          "end": {
            "line": 23,
            "character": 29
          }
        }
      },
      {
        "name": "cell",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        },
        "range": {
          "start": {
            "line": 32,
            "character": 0
          },
          "end": {
            "line": 59,
            "character": 22
          }
        }
      },
      {
        "name": "sheet",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        },
        "range": {
          "start": {
            "line": 68,
            "character": 0
          },
          "end": {
            "line": 88,
            "character": 41
          }
        }
      },
      {
        "name": "style",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        },
        "range": {
          "start": {
            "line": 91,
            "character": 0
          },
          "end": {
            "line": 96,
            "character": 2
          }
        }
      },
      {
        "name": "main",
        "kind": 12,
        "selectionRange": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        },
        "range": {
          "start": {
            "line": 99,
            "character": 0
          },
          "end": {
            "line": 99,
            "character": 36
          }
        }
      }
    ],
    "selectionRange": {
      "start": {
        "line": 7,
        "character": 7
      },
      "end": {
        "line": 7,
        "character": 11
      }
    },
    "range": {
      "start": {
        "line": 0,
        "character": 0
      },
      "end": {
        "line": 2147483647,
        "character": 0
      }
    }
  }
]


[Trace - 01:06:16 PM] Received request 'window/workDoneProgress/create - (6).
Params: {
  "token": "194"
}


[Trace - 01:06:16 PM] Sending response 'window/workDoneProgress/create - (6)'. Processing request took 0ms
Params: {
  "jsonrpc": "2.0",
  "id": 6,
  "result": null
}


[Trace - 01:06:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {
  "version": 0,
  "uri": "file:///C:/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs",
  "diagnostics": [
    {
      "code": "refact:Use maybe",
      "source": "hlint",
      "severity": 3,
      "message": "Use maybe\nFound:\n  fromMaybe \"\" $ display . cellValue <$> Map.lookup ident s\nWhy not:\n  maybe \"\" (display . cellValue) (Map.lookup ident s)\n",
      "range": {
        "start": {
          "line": 79,
          "character": 23
        },
        "end": {
          "line": 79,
          "character": 80
        }
      }
    }
  ]
}


[Trace - 01:06:16 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 30
}


[Trace - 01:06:16 PM] Sending request 'textDocument/codeAction - (31)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 89,
      "character": 0
    },
    "end": {
      "line": 89,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:16 PM] Received notification '$/progress'.
Params: {
  "token": "194",
  "value": {
    "kind": "begin",
    "title": "Processing"
  }
}


[Trace - 01:06:17 PM] Received notification '$/progress'.
Params: {
  "token": "194",
  "value": {
    "kind": "report",
    "message": "4/5"
  }
}


[Trace - 01:06:18 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {
  "version": 0,
  "uri": "file:///C:/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs",
  "diagnostics": [
    {
      "code": "refact:Use maybe",
      "source": "hlint",
      "severity": 3,
      "message": "Use maybe\nFound:\n  fromMaybe \"\" $ display . cellValue <$> Map.lookup ident s\nWhy not:\n  maybe \"\" (display . cellValue) (Map.lookup ident s)\n",
      "range": {
        "start": {
          "line": 79,
          "character": 23
        },
        "end": {
          "line": 79,
          "character": 80
        }
      }
    },
    {
      "tags": [
        1
      ],
      "code": "-Wunused-imports",
      "source": "typecheck",
      "severity": 2,
      "message": "The import of ‘Control.Applicative’ is redundant\n  except perhaps to import instances from ‘Control.Applicative’\nTo import instances alone, use: import Control.Applicative()",
      "range": {
        "start": {
          "line": 9,
          "character": 0
        },
        "end": {
          "line": 9,
          "character": 35
        }
      }
    },
    {
      "tags": [
        1
      ],
      "code": "-Wunused-matches",
      "source": "typecheck",
      "severity": 2,
      "message": "Defined but not used: ‘idsDyn’",
      "range": {
        "start": {
          "line": 71,
          "character": 4
        },
        "end": {
          "line": 71,
          "character": 10
        }
      }
    },
    {
      "code": "-Wtyped-holes",
      "source": "typecheck",
      "severity": 1,
      "message": "• Found hole:\n    _ :: Map.Map Int (Event t Cell) -> Dynamic t (Event t a)\n  Where: ‘a’ is a rigid type variable bound by\n           the inferred type of cellsEv :: Event t a\n           at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:84:13-70\n         ‘t’ is a rigid type variable bound by\n           the type signature for:\n             sheet :: forall t (m :: * -> *).\n                      (DomBuilder t m, MonadHold t m, MonadFix m, PostBuild t m,\n                       Reflex t) =>\n                      m ()\n           at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13)\n• In the expression: _\n  In the expression: _ $ updated <$> m\n  In the second argument of ‘(>>=)’, namely\n    ‘\\ m -> _ $ updated <$> m’\n• Relevant bindings include\n    m :: Map.Map Int (Dynamic t Cell)\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:84:49)\n    cellsEv :: Event t a\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:84:13)\n    cellsDyn :: Dynamic t (Map.Map Int (Dynamic t Cell))\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:82:9)\n    getCellValue :: Int -> Dynamic t Text\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:79:13)\n    sheetDyn :: Dynamic t Sheet\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:85:9)\n    cellsCurIx :: Dynamic t Int\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:74:5)\n    sheet :: m ()\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:69:1)\n    (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds)\n  Constraints include\n    DomBuilder\n      t\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    MonadHold\n      t\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    MonadFix\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    PostBuild\n      t\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    Reflex\n      t (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))",
      "range": {
        "start": {
          "line": 83,
          "character": 53
        },
        "end": {
          "line": 83,
          "character": 54
        }
      }
    }
  ]
}


[Trace - 01:06:18 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 31
}


[Trace - 01:06:18 PM] Sending request 'textDocument/codeAction - (32)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 89,
      "character": 0
    },
    "end": {
      "line": 89,
      "character": 0
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:18 PM] Received response 'nil - (13)' in 0ms.
Result: {
  "contents": {
    "value": "",
    "kind": "markdown"
  },
  "range": {
    "start": {
      "line": 16,
      "character": 0
    },
    "end": {
      "line": 16,
      "character": 37
    }
  }
}


[Trace - 01:06:18 PM] Received response 'textDocument/hover - (21)' in 113ms.
Result: null


[Trace - 01:06:18 PM] Received response 'nil - (19)' in 0ms.
Result: null


[Trace - 01:06:18 PM] Received request 'window/workDoneProgress/create - (7).
Params: {
  "token": "215"
}


[Trace - 01:06:18 PM] Sending response 'window/workDoneProgress/create - (7)'. Processing request took 0ms
Params: {
  "jsonrpc": "2.0",
  "id": 7,
  "result": null
}


[Trace - 01:06:18 PM] Received notification '$/progress'.
Params: {
  "token": "215",
  "value": {
    "kind": "begin",
    "title": "Indexing"
  }
}


[Trace - 01:06:18 PM] Received notification '$/progress'.
Params: {
  "token": "215",
  "value": {
    "kind": "report",
    "message": " (0/1)..."
  }
}


[Trace - 01:06:18 PM] Received notification '$/progress'.
Params: {
  "token": "194",
  "value": {
    "kind": "end"
  }
}


[Trace - 01:06:18 PM] Received notification '$/progress'.
Params: {
  "token": "215",
  "value": {
    "kind": "end",
    "message": "Finished indexing 1 files"
  }
}


[Trace - 01:06:18 PM] Received response 'nil - (8)' in 0ms.
Result: [
  {
    "kind": "quickfix",
    "title": "Make all imports explicit",
    "edit": {
      "changes": {
        "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs": [
          {
            "newText": "import Nexo.Expr.Parse ( pExpr, pPType, parseMaybe )",
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "newText": "import Nexo.Expr.Type ( zeroExpr )",
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "newText": "import Nexo.Sheet\n    ( insert,\n      evalSheet,\n      display,\n      Sheet(Sheet),\n      ValueState(Invalidated),\n      Cell(Cell, cellValue) )",
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "newText": "import Reflex.Dom\n    ( mainWidgetWithCss,\n      foldDyn,\n      switchDyn,\n      listHoldWithKey,\n      ffor,\n      count,\n      button,\n      blank,\n      text,\n      el,\n      dynText,\n      elClass,\n      Reflex(updated, Dynamic),\n      MonadHold(holdDyn),\n      mapMaybe,\n      PostBuild,\n      def,\n      InputElement(_inputElement_input),\n      DomBuilder(inputElement) )",
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          }
        ]
      }
    }
  }
]


[Trace - 01:06:18 PM] Received response 'nil - (27)' in 0ms.
Result: []


[Trace - 01:06:18 PM] Received response 'nil - (12)' in 0ms.
Result: [
  {
    "kind": "quickfix",
    "title": "Make all imports explicit",
    "edit": {
      "changes": {
        "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs": [
          {
            "newText": "import Nexo.Expr.Parse ( pExpr, pPType, parseMaybe )",
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "newText": "import Nexo.Expr.Type ( zeroExpr )",
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "newText": "import Nexo.Sheet\n    ( insert,\n      evalSheet,\n      display,\n      Sheet(Sheet),\n      ValueState(Invalidated),\n      Cell(Cell, cellValue) )",
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "newText": "import Reflex.Dom\n    ( mainWidgetWithCss,\n      foldDyn,\n      switchDyn,\n      listHoldWithKey,\n      ffor,\n      count,\n      button,\n      blank,\n      text,\n      el,\n      dynText,\n      elClass,\n      Reflex(updated, Dynamic),\n      MonadHold(holdDyn),\n      mapMaybe,\n      PostBuild,\n      def,\n      InputElement(_inputElement_input),\n      DomBuilder(inputElement) )",
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          }
        ]
      }
    }
  }
]


[Trace - 01:06:18 PM] Received response 'nil - (18)' in 0ms.
Result: [
  {
    "command": {
      "arguments": [
        {
          "restrictToOriginatingFile": null,
          "description": "Unfold main",
          "rewrites": [
            {
              "tag": "Unfold",
              "contents": "Main.main"
            }
          ],
          "originatingFile": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
        }
      ],
      "command": "6772:retrie:retrieCommand",
      "title": "Unfold main"
    },
    "kind": "refactor.inline",
    "title": "Unfold main"
  },
  {
    "command": {
      "arguments": [
        {
          "restrictToOriginatingFile": true,
          "description": "Unfold main in current file",
          "rewrites": [
            {
              "tag": "Unfold",
              "contents": "Main.main"
            }
          ],
          "originatingFile": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
        }
      ],
      "command": "6772:retrie:retrieCommand",
      "title": "Unfold main in current file"
    },
    "kind": "refactor.inline",
    "title": "Unfold main in current file"
  },
  {
    "command": {
      "arguments": [
        {
          "restrictToOriginatingFile": null,
          "description": "Fold main",
          "rewrites": [
            {
              "tag": "Fold",
              "contents": "Main.main"
            }
          ],
          "originatingFile": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
        }
      ],
      "command": "6772:retrie:retrieCommand",
      "title": "Fold main"
    },
    "kind": "refactor.extract",
    "title": "Fold main"
  },
  {
    "command": {
      "arguments": [
        {
          "restrictToOriginatingFile": true,
          "description": "Fold main in current file",
          "rewrites": [
            {
              "tag": "Fold",
              "contents": "Main.main"
            }
          ],
          "originatingFile": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
        }
      ],
      "command": "6772:retrie:retrieCommand",
      "title": "Fold main in current file"
    },
    "kind": "refactor.extract",
    "title": "Fold main in current file"
  }
]


[Trace - 01:06:18 PM] Received response 'nil - (15)' in 0ms.
Result: [
  {
    "kind": "quickfix",
    "title": "Make all imports explicit",
    "edit": {
      "changes": {
        "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs": [
          {
            "newText": "import Nexo.Expr.Parse ( pExpr, pPType, parseMaybe )",
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "newText": "import Nexo.Expr.Type ( zeroExpr )",
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "newText": "import Nexo.Sheet\n    ( insert,\n      evalSheet,\n      display,\n      Sheet(Sheet),\n      ValueState(Invalidated),\n      Cell(Cell, cellValue) )",
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "newText": "import Reflex.Dom\n    ( mainWidgetWithCss,\n      foldDyn,\n      switchDyn,\n      listHoldWithKey,\n      ffor,\n      count,\n      button,\n      blank,\n      text,\n      el,\n      dynText,\n      elClass,\n      Reflex(updated, Dynamic),\n      MonadHold(holdDyn),\n      mapMaybe,\n      PostBuild,\n      def,\n      InputElement(_inputElement_input),\n      DomBuilder(inputElement) )",
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          }
        ]
      }
    }
  }
]


[Trace - 01:06:18 PM] Received response 'nil - (24)' in 0ms.
Result: []


[Trace - 01:06:18 PM] Received response 'nil - (31)' in 0ms.
Result: []


[Trace - 01:06:18 PM] Received response 'nil - (17)' in 0ms.
Result: []


[Trace - 01:06:18 PM] Received response 'nil - (20)' in 0ms.
Result: []


[Trace - 01:06:18 PM] Received response 'nil - (10)' in 0ms.
Result: [
  {
    "kind": "quickfix",
    "title": "Make all imports explicit",
    "edit": {
      "changes": {
        "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs": [
          {
            "newText": "import Nexo.Expr.Parse ( pExpr, pPType, parseMaybe )",
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "newText": "import Nexo.Expr.Type ( zeroExpr )",
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "newText": "import Nexo.Sheet\n    ( insert,\n      evalSheet,\n      display,\n      Sheet(Sheet),\n      ValueState(Invalidated),\n      Cell(Cell, cellValue) )",
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "newText": "import Reflex.Dom\n    ( mainWidgetWithCss,\n      foldDyn,\n      switchDyn,\n      listHoldWithKey,\n      ffor,\n      count,\n      button,\n      blank,\n      text,\n      el,\n      dynText,\n      elClass,\n      Reflex(updated, Dynamic),\n      MonadHold(holdDyn),\n      mapMaybe,\n      PostBuild,\n      def,\n      InputElement(_inputElement_input),\n      DomBuilder(inputElement) )",
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          }
        ]
      }
    }
  }
]


[Trace - 01:06:18 PM] Received response 'nil - (3)' in 0ms.
Result: [
  {
    "kind": "quickfix",
    "title": "Make all imports explicit",
    "edit": {
      "changes": {
        "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs": [
          {
            "newText": "import Nexo.Expr.Parse ( pExpr, pPType, parseMaybe )",
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "newText": "import Nexo.Expr.Type ( zeroExpr )",
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "newText": "import Nexo.Sheet\n    ( insert,\n      evalSheet,\n      display,\n      Sheet(Sheet),\n      ValueState(Invalidated),\n      Cell(Cell, cellValue) )",
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "newText": "import Reflex.Dom\n    ( mainWidgetWithCss,\n      foldDyn,\n      switchDyn,\n      listHoldWithKey,\n      ffor,\n      count,\n      button,\n      blank,\n      text,\n      el,\n      dynText,\n      elClass,\n      Reflex(updated, Dynamic),\n      MonadHold(holdDyn),\n      mapMaybe,\n      PostBuild,\n      def,\n      InputElement(_inputElement_input),\n      DomBuilder(inputElement) )",
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          }
        ]
      }
    }
  }
]


[Trace - 01:06:18 PM] Received response 'nil - (23)' in 0ms.
Result: []


[Trace - 01:06:18 PM] Received response 'textDocument/codeAction - (32)' in 168ms.
Result: []


[Trace - 01:06:18 PM] Received response 'textDocument/codeAction - (28)' in 193ms.
Result: []


[Trace - 01:06:18 PM] Received response 'nil - (6)' in 0ms.
Result: [
  {
    "kind": "quickfix",
    "title": "Make all imports explicit",
    "edit": {
      "changes": {
        "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs": [
          {
            "newText": "import Nexo.Expr.Parse ( pExpr, pPType, parseMaybe )",
            "range": {
              "start": {
                "line": 18,
                "character": 0
              },
              "end": {
                "line": 18,
                "character": 22
              }
            }
          },
          {
            "newText": "import Nexo.Expr.Type ( zeroExpr )",
            "range": {
              "start": {
                "line": 19,
                "character": 0
              },
              "end": {
                "line": 19,
                "character": 21
              }
            }
          },
          {
            "newText": "import Nexo.Sheet\n    ( insert,\n      evalSheet,\n      display,\n      Sheet(Sheet),\n      ValueState(Invalidated),\n      Cell(Cell, cellValue) )",
            "range": {
              "start": {
                "line": 20,
                "character": 0
              },
              "end": {
                "line": 20,
                "character": 17
              }
            }
          },
          {
            "newText": "import Reflex.Dom\n    ( mainWidgetWithCss,\n      foldDyn,\n      switchDyn,\n      listHoldWithKey,\n      ffor,\n      count,\n      button,\n      blank,\n      text,\n      el,\n      dynText,\n      elClass,\n      Reflex(updated, Dynamic),\n      MonadHold(holdDyn),\n      mapMaybe,\n      PostBuild,\n      def,\n      InputElement(_inputElement_input),\n      DomBuilder(inputElement) )",
            "range": {
              "start": {
                "line": 22,
                "character": 0
              },
              "end": {
                "line": 22,
                "character": 34
              }
            }
          }
        ]
      }
    }
  }
]


[Trace - 01:06:18 PM] Received response 'nil - (26)' in 0ms.
Result: []


[Trace - 01:06:18 PM] Received response 'nil - (30)' in 0ms.
Result: []


[Trace - 01:06:28 PM] Sending request 'textDocument/codeAction - (33)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 83,
      "character": 53
    },
    "end": {
      "line": 83,
      "character": 53
    }
  },
  "context": {
    "diagnostics": [
      {
        "code": "-Wtyped-holes",
        "source": "typecheck",
        "severity": 1,
        "message": "• Found hole:\n    _ :: Map.Map Int (Event t Cell) -> Dynamic t (Event t a)\n  Where: ‘a’ is a rigid type variable bound by\n           the inferred type of cellsEv :: Event t a\n           at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:84:13-70\n         ‘t’ is a rigid type variable bound by\n           the type signature for:\n             sheet :: forall t (m :: * -> *).\n                      (DomBuilder t m, MonadHold t m, MonadFix m, PostBuild t m,\n                       Reflex t) =>\n                      m ()\n           at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13)\n• In the expression: _\n  In the expression: _ $ updated <$> m\n  In the second argument of ‘(>>=)’, namely\n    ‘\\ m -> _ $ updated <$> m’\n• Relevant bindings include\n    m :: Map.Map Int (Dynamic t Cell)\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:84:49)\n    cellsEv :: Event t a\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:84:13)\n    cellsDyn :: Dynamic t (Map.Map Int (Dynamic t Cell))\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:82:9)\n    getCellValue :: Int -> Dynamic t Text\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:79:13)\n    sheetDyn :: Dynamic t Sheet\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:85:9)\n    cellsCurIx :: Dynamic t Int\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:74:5)\n    sheet :: m ()\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:69:1)\n    (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds)\n  Constraints include\n    DomBuilder\n      t\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    MonadHold\n      t\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    MonadFix\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    PostBuild\n      t\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    Reflex\n      t (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))",
        "range": {
          "start": {
            "line": 83,
            "character": 53
          },
          "end": {
            "line": 83,
            "character": 54
          }
        }
      }
    ]
  }
}


[Trace - 01:06:28 PM] Sending request 'textDocument/hover - (34)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 83,
    "character": 53
  }
}


[Trace - 01:06:28 PM] Received response 'textDocument/hover - (34)' in 9ms.
Result: {
  "contents": {
    "value": "\n```haskell\n_ :: Map Int (Event t Cell) -> Dynamic t (Event t a)\n```\n\n",
    "kind": "markdown"
  },
  "range": {
    "start": {
      "line": 83,
      "character": 53
    },
    "end": {
      "line": 83,
      "character": 54
    }
  }
}


[Trace - 01:06:28 PM] Sending request 'textDocument/codeAction - (35)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 83,
      "character": 53
    },
    "end": {
      "line": 83,
      "character": 53
    }
  },
  "context": {
    "diagnostics": [
      {
        "code": "-Wtyped-holes",
        "source": "typecheck",
        "severity": 1,
        "message": "• Found hole:\n    _ :: Map.Map Int (Event t Cell) -> Dynamic t (Event t a)\n  Where: ‘a’ is a rigid type variable bound by\n           the inferred type of cellsEv :: Event t a\n           at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:84:13-70\n         ‘t’ is a rigid type variable bound by\n           the type signature for:\n             sheet :: forall t (m :: * -> *).\n                      (DomBuilder t m, MonadHold t m, MonadFix m, PostBuild t m,\n                       Reflex t) =>\n                      m ()\n           at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13)\n• In the expression: _\n  In the expression: _ $ updated <$> m\n  In the second argument of ‘(>>=)’, namely\n    ‘\\ m -> _ $ updated <$> m’\n• Relevant bindings include\n    m :: Map.Map Int (Dynamic t Cell)\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:84:49)\n    cellsEv :: Event t a\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:84:13)\n    cellsDyn :: Dynamic t (Map.Map Int (Dynamic t Cell))\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:82:9)\n    getCellValue :: Int -> Dynamic t Text\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:79:13)\n    sheetDyn :: Dynamic t Sheet\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:85:9)\n    cellsCurIx :: Dynamic t Int\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:74:5)\n    sheet :: m ()\n      (bound at C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:69:1)\n    (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds)\n  Constraints include\n    DomBuilder\n      t\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    MonadHold\n      t\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    MonadFix\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    PostBuild\n      t\n      m (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))\n    Reflex\n      t (from C:\\Users\\bradn\\Documents\\Spreadsheet\\nexo\\gui\\web\\src\\Main.hs:(62,1)-(68,13))",
        "range": {
          "start": {
            "line": 83,
            "character": 53
          },
          "end": {
            "line": 83,
            "character": 54
          }
        }
      }
    ]
  }
}


[Trace - 01:06:28 PM] Sending request 'textDocument/documentHighlight - (36)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 83,
    "character": 53
  }
}


[Trace - 01:06:34 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 33
}


[Trace - 01:06:34 PM] Sending request 'textDocument/codeAction - (37)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 84,
      "character": 53
    },
    "end": {
      "line": 84,
      "character": 53
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:34 PM] Sending request 'textDocument/hover - (38)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 84,
    "character": 53
  }
}


[Trace - 01:06:35 PM] Sending request 'textDocument/hover - (39)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 84,
    "character": 53
  }
}


[Trace - 01:06:35 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 35
}


[Trace - 01:06:35 PM] Sending request 'textDocument/codeAction - (40)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "range": {
    "start": {
      "line": 84,
      "character": 53
    },
    "end": {
      "line": 84,
      "character": 53
    }
  },
  "context": {
    "diagnostics": []
  }
}


[Trace - 01:06:35 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 36
}


[Trace - 01:06:35 PM] Sending request 'textDocument/documentHighlight - (41)'.
Params: {
  "textDocument": {
    "uri": "file:///c%3A/Users/bradn/Documents/Spreadsheet/nexo/gui/web/src/Main.hs"
  },
  "position": {
    "line": 84,
    "character": 53
  }
}


[Trace - 01:06:41 PM] Sending notification '$/cancelRequest'.
Params: {
  "id": 40
}



@jneira jneira added os: windows type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc.. performance Issues about memory consumption, responsiveness, etc. labels Oct 30, 2021
@jneira
Copy link
Member

jneira commented Oct 30, 2021

Hi, thanks for the bug report, could you post a link to the project triggering that anomalous behaviour to try to reproduce?

@bradrn
Copy link
Contributor Author

bradrn commented Oct 31, 2021

Unfortunately, I can’t share the code. Neither have I been able to find a reproducer project, though I have tried. If you want I can email you to set up a video call, if that will help at all.

@jneira
Copy link
Member

jneira commented Nov 3, 2021

Unfortunately, I can’t share the code. Neither have I been able to find a reproducer project, though I have tried. If you want I can email you to set up a video call, if that will help at all.

So you have not identificated what project charateristic trigger the ill behaviour... 😟
One way to trace what component is the culprit could be disable all plugins and see how it goes with the basic functionality. If it works fine, enable plugins until the memory consumption is noticeable. Main suspects should be the eval and tactics plugins, specially the former if you are not using effectively the eval features. You can see the config to disable all plugins here: #2151 (comment)
That issue is about excessive memory usage but the cause is the size of the project. However you can read some tips about how to trace the origin of that memory usage.

Another source of anomalous behaviour could be the use of template haskell, if it is related, loading modules without th and without dependant modules using it will take less memory.

@bradrn
Copy link
Contributor Author

bradrn commented Nov 3, 2021

So you have not identificated what project charateristic trigger the ill behaviour... 😟

Alas, no, though I hope to try doing this more carefully when I get enough time.

One way to trace what component is the culprit could be disable all plugins and see how it goes with the basic functionality

Thanks for the tip! I’ll try this now.

Another source of anomalous behaviour could be the use of template haskell

I do use some Template Haskell, and in particular I recall that I recently added a Lucius quasiquoter to the relevant module. I tried removing it, but it seems to have had no effect.

@bradrn
Copy link
Contributor Author

bradrn commented Nov 3, 2021

OK, so I tried disabling all extensions, with the following code in my init.el:

  (setq-default
   lsp-haskell-brittany-on nil
   lsp-haskell-eval-on nil
   lsp-haskell-floskell-on nil
   lsp-haskell-fourmolu-on nil
   lsp-haskell-ghcide-on nil
   lsp-haskell-hlint-on nil
   lsp-haskell-importlens-on nil
   lsp-haskell-modulename-on nil
   lsp-haskell-ormolu-on nil
   lsp-haskell-pragmas-on nil
   lsp-haskell-retrie-on nil
   lsp-haskell-stylish-haskell-on nil
   lsp-haskell-tactic-on nil
   )

But it had no effect: HLS still reported extremely high memory usage.

Also, I’ve found a series of actions which will reliably reproduce the problem for this particular module:

  1. Open the relevant file in Emacs
  2. Wait for HLS to show all warnings/errors for the module (this takes a minute or two for me)
  3. Move the cursor to the exact location of the first error

Curiously enough, CPU usage only increases on moving the cursor to the first error: even moving it to the first warning is not enough. It is perhaps also relevant that the error in question is a typed hole, the type of which is displayed at the bottom of the frame:

image

@bradrn
Copy link
Contributor Author

bradrn commented Nov 3, 2021

In fact, some further experimenting convinces me that the problem is related to typed holes. When I alter it to (), for instance, CPU usage is fine. On changing it back to _, it suddenly shoots up again.

EDIT: But that can’t be the whole story, for when I create a small test project with a typed hole, everything works correctly. And furthermore I’ve used typed holes many times in the past without running into this issue.

@jneira
Copy link
Member

jneira commented Nov 3, 2021

Maybe the size of dependencies/imports of the module could be related, as hls/ghc will have to examine more modules to gather suggestions?

@jneira jneira changed the title HLS has ridiculously high CPU/memory usage HLS has ridiculously high CPU/memory usage using typed holes Nov 3, 2021
@bradrn
Copy link
Contributor Author

bradrn commented Nov 3, 2021

Perhaps, but I doubt it: I added {-# OPTIONS_GHC -fno-show-valid-hole-fits -fmax-relevant-binds=0 #-} to test, and it didn’t seem to have any effect.

@jneira
Copy link
Member

jneira commented Nov 3, 2021

Maybe we are tweaking ghc options underneath... 🤔

Afaiu we have detected typed holes impact performance see

//cc @pepeiborra

@bradrn
Copy link
Contributor Author

bradrn commented Nov 3, 2021

I doubt it’s related to Wingman at least, since I’ve still got plugins disabled.

@jneira
Copy link
Member

jneira commented Nov 3, 2021

I doubt it’s related to Wingman at least, since I’ve still got plugins disabled.

yeah, but wingman had to disable hole refinements when enabled by performance reasons

Take a look to https://github.com/haskell/haskell-language-server/pull/2037/files, which is disabling the feature removing hardcoded ghc options modifications.

@jneira
Copy link
Member

jneira commented Nov 3, 2021

Just to be sure, do you still think that typed holes are related?

@bradrn
Copy link
Contributor Author

bradrn commented Nov 3, 2021

Just to be sure, do you still think that typed holes are related?

Well, I can’t know for sure, since I’ve only found this one module which triggers it, but I can’t think of very much else that could be the cause — it goes away when I change it to a variable name or ().

@Anton-Latukha
Copy link
Collaborator

Anton-Latukha commented Nov 11, 2021

Also note, pepeiborra would give a talk on performance: #2340 (comment), since typed holes inference is a big computational task & question they worked on recently - he probably/may mention/show/explain it.

@hasufell hasufell added status: needs info Not actionable, because there's missing information and removed old_status: needs repro labels Jul 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
os: windows performance Issues about memory consumption, responsiveness, etc. status: needs info Not actionable, because there's missing information type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc..
Projects
None yet
Development

No branches or pull requests

4 participants