haskell / haskell-language-server

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

user error (Failed to get the immediate reverse dependencies of NormalizedFilePath... #1450

Closed greggaree closed 9 months ago

greggaree commented 3 years ago

I'm running VS Code on Linux. I found this message in the terminal console:

user error (Failed to get the immediate reverse dependencies of NormalizedFilePath "/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/autogen/Paths_sol.hs") compiler (1,1)

What's causing this? Looking at the log output from Haskell trace server messages, I also found this:

2021-02-26 14:57:34.961401292 [ThreadId 7] DEBUG haskell-lsp.sendServer:    <--2--{"method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"range":{"end":{"character":0,"line":1},"start":{"character":0,"line":0}},"message":"user error (Failed to get the immediate reverse dependencies of NormalizedFilePath \"/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/autogen/Paths_sol.hs\")","severity":1,"source":"compiler"}],"uri":"file:///home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/autogen/Paths_sol.hs"},"jsonrpc":"2.0"}

The user error message only seems to appear when I restart VS Code, then do a a Go To Definition. Shortly after VS Code jumps to tthe definition, the user error message appears in the terminal window. Clicking on the user error message takes me to Paths_sol.hs, then the user error message disappears from the terminal. Subsequent Go To Definition actions do not trigger this user error message.

Ailrun commented 3 years ago

Could you add,

greggaree commented 3 years ago

When the VS Code plugin installed the HLS and haskell-language-server-wrapper (HLSW), the plugin didn't install the HLSW or HLS on my path. After some searching on the web, I found the HLSW at:

~/.config/Code/User/globalStorage/haskell.haskell

After a cd ~/.config/Code/User/globalStorage/haskell.haskell, I ran ./haskell-language-server-wrapper-1.0.0-linux--probe-tools (typing just ./haskell-language-server-wrapper doesn't work) and saw this:

haskell-language-server version: 1.0.0.0 (GHC: 8.10.4) (PATH: /home/greg/.config/Code/User/globalStorage/haskell.haskell/haskell-language-server-wrapper-1.0.0-linux) (GIT hash: 4cd1cf934638881e52b3eba9f70157a4b799c0e9)

Here is the log from VSCode:

LSP logs: ``` [client] run command: "/home/greg/.config/Code/User/globalStorage/haskell.haskell/haskell-language-server-1.0.0-linux-8.10.4 --lsp -d" [client] debug command: "/home/greg/.config/Code/User/globalStorage/haskell.haskell/haskell-language-server-1.0.0-linux-8.10.4 --lsp -d" [client] server cwd: undefined haskell-language-server version: 1.0.0.0 (GHC: 8.10.4) (PATH: /home/greg/.config/Code/User/globalStorage/haskell.haskell/haskell-language-server-1.0.0-linux-8.10.4) (GIT hash: 4cd1cf934638881e52b3eba9f70157a4b799c0e9) Starting (haskell-language-server)LSP server... with arguments: LspArguments {argLSP = True, argsCwd = Nothing, argFiles = [], argsShakeProfiling = Nothing, argsTesting = False, argsExamplePlugin = False, argsDebugOn = True, argsLogFile = Nothing, argsThreads = 0, argsProjectGhcVersion = False} with plugins: [PluginId "brittany",PluginId "class",PluginId "eval",PluginId "floskell",PluginId "fourmolu",PluginId "ghcide-code-actions",PluginId "ghcide-completions",PluginId "ghcide-hover-and-symbols",PluginId "ghcide-type-lenses",PluginId "haddockComments",PluginId "hlint",PluginId "importLens",PluginId "moduleName",PluginId "ormolu",PluginId "pragmas",PluginId "retrie",PluginId "splice",PluginId "stylish-haskell",PluginId "tactic"] in directory: /home/greg/sol If you are seeing this in a terminal, you probably should have run ghcide WITHOUT the --lsp option! Starting LSP server... If you are seeing this in a terminal, you probably should have run ghcide WITHOUT the --lsp option! 2021-02-26 21:04:02.787699892 [ThreadId 5] INFO haskell-lsp.runWith: haskell-lsp:Starting up server ... 2021-02-26 21:04:02.793037331 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":23047,"clientInfo":{"name":"vscode","version":"1.53.2"},"rootPath":"/home/greg/sol","rootUri":"file:///home/greg/sol","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","rename","delete"],"failureHandling":"textOnlyTransactional"},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"executeCommand":{"dynamicRegistration":true},"configuration":true,"workspaceFolders":true},"textDocument":{"publishDiagnostics":{"relatedInformation":true,"versionSupport":false,"tagSupport":{"valueSet":[1,2]}},"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"contextSupport":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true,"preselectSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}},"contextSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true},"codeAction":{"dynamicRegistration":true,"isPreferredSupport":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"colorProvider":{"dynamicRegistration":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":5000,"lineFoldingOnly":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"selectionRange":{"dynamicRegistration":true},"callHierarchy":{"dynamicRegistration":true},"semanticTokens":{"dynamicRegistration":true,"tokenTypes":["comment","keyword","number","regexp","operator","namespace","type","struct","class","interface","enum","typeParameter","function","member","macro","variable","parameter","property","label"],"tokenModifiers":["declaration","documentation","static","abstract","deprecated","async","readonly"]}},"window":{"workDoneProgress":true}},"trace":"off","workspaceFolders":[{"uri":"file:///home/greg/sol","name":"sol"}]}} Started LSP server in 0.05s setInitialDynFlags cradle: Cradle {cradleRootDir = "/home/greg/sol", cradleOptsProg = CradleAction: Stack} 2021-02-26 21:04:03.473627407 [ThreadId 5] INFO hls: Registering ide configuration: IdeConfiguration {workspaceFolders = fromList [NormalizedUri (-4798700326591551332) "file:///home/greg/sol"], clientSettings = hashed Nothing} 2021-02-26 21:04:03.475201862 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":{"capabilities":{"foldingRangeProvider":false,"hoverProvider":true,"typeDefinitionProvider":true,"colorProvider":false,"renameProvider":false,"declarationProvider":false,"executeCommandProvider":{"commands":["23142:class:addMinimalMethodPlaceholders","23142:eval:evalCommand","23142:ghcide-completions:extendImport","23142:ghcide-type-lenses:typesignature.add","23142:hlint:applyOne","23142:hlint:applyAll","23142:importLens:ImportLensCommand","23142:moduleName:edit","23142:retrie:retrieCommand","23142:splice:expandTHSpliceInplace","23142:tactic:tacticsAutoCommand","23142:tactic:tacticsIntrosCommand","23142:tactic:tacticsDestructCommand","23142:tactic:tacticsHomomorphismCommand","23142:tactic:tacticsDestructLambdaCaseCommand","23142:tactic:tacticsHomomorphismLambdaCaseCommand"]},"documentRangeFormattingProvider":true,"documentHighlightProvider":true,"implementationProvider":false,"completionProvider":{"resolveProvider":false,"triggerCharacters":["."]},"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":true}},"definitionProvider":true,"documentFormattingProvider":true,"referencesProvider":true,"selectionRangeProvider":false,"codeLensProvider":{"resolveProvider":false,"workDoneProgress":false},"documentSymbolProvider":true,"textDocumentSync":{"save":{},"change":2,"openClose":true},"workspaceSymbolProvider":true,"codeActionProvider":true}},"id":0,"jsonrpc":"2.0"} 2021-02-26 21:04:03.480331127 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","method":"initialized","params":{}} 2021-02-26 21:04:03.482498372 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"haskell":{"hlintOn":true,"maxNumberOfProblems":100,"diagnosticsOnChange":true,"liquidOn":false,"completionSnippetsOn":true,"formatOnImportOn":true,"formattingProvider":"ormolu","trace":{"server":"messages"},"logFile":"","languageServerVariant":"haskell-language-server","serverExecutablePath":"","updateBehavior":"keep-up-to-date","indentationRules":{"enabled":true}}}}} 2021-02-26 21:04:03.486504599 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///home/greg/sol/app/Main.hs","languageId":"haskell","version":1,"text":"{-# LANGUAGE TemplateHaskell #-}\n\nmodule Main where\n\nimport Control.Monad (void)\nimport Graphics.Vty as Vty\n ( mkVty,\n bold,\n defAttr,\n underline,\n withStyle,\n red,\n white,\n standardIOConfig,\n Vty(outputIface),\n Event(EvMouseDown, EvKey),\n Key(KChar, KEsc),\n Mode(Mouse),\n Output(setMode)\n )\nimport Lens.Micro.TH (makeLenses)\nimport qualified System.Random as R (next, newStdGen)\n\nimport Brick.AttrMap ( attrMap, attrName, AttrMap ) \nimport Brick.Main\n ( continue, customMain, findClickedExtents, halt, showFirstCursor, App(..) )\nimport Brick.Types\n ( BrickEvent(VtyEvent), EventM, Next, Extent(extentName) ) \nimport Brick.Util ( fg ) \n\nimport CardTypes\n ( Action(Undo, New), DCard, Ext(ActionX), Field, GSt, Pile )\nimport Movement (doMove)\nimport Render (drawUI)\nimport Utils (hasWon, undoMove, newGame, mkInitS)\n\nmakeLenses ''DCard\nmakeLenses ''Pile\nmakeLenses ''Field\nmakeLenses ''GSt\n\n-------------------------------------------------------------------------------\nappEvent :: GSt -> BrickEvent Ext e -> EventM Ext (Next GSt)\nappEvent s (VtyEvent e) = \n case e of\n Vty.EvKey Vty.KEsc [] -> halt s\n Vty.EvKey (Vty.KChar 'q') [] -> halt s\n Vty.EvMouseDown col row _ _ -> do\n extents <- map extentName <$> findClickedExtents (col, row)\n case extents of \n [ActionX New] -> continue (newGame s)\n [ActionX Undo] -> continue (undoMove s)\n _ -> if hasWon s\n then continue s \n else continue (doMove s extents)\n _ -> continue s \n \nappEvent s _ = continue s\n\naMap :: AttrMap\naMap = attrMap Vty.defAttr\n [ ( attrName \"redCard\" , fg Vty.red )\n , ( attrName \"blackCard\" , fg Vty.white )\n , ( attrName \"btnAttr\" , withStyle defAttr underline)\n , ( attrName \"bold\" , withStyle defAttr bold)\n ]\n\n-- App \napp :: App GSt e Ext\napp = App { appDraw = drawUI -- s -> [Widget n]\n , appChooseCursor = showFirstCursor -- s -> [CursorLocation n] \n -- -> Maybe (CursorLocation n)\n , appHandleEvent = appEvent -- s -> BrickEvent n e \n -- -> EventM n (Next s)\n , appStartEvent = return -- s -> EventM n s\n , appAttrMap = const aMap -- s -> AttrMap\n }\n\n{-\n\n-}\n\nmain :: IO ()\n-- main = do\n-- let buildVty = do v <- Vty.mkVty =<< Vty.standardIOConfig\n-- Vty.setMode (Vty.outputIface v) Vty.Mouse True\n-- return v\n-- -- customMain (IO Vty) (?BChan)(App) ( init state )\n-- n <- R.newStdGen\n-- --let deal = R.shuffle' initialDeal 52 n\n-- initialVty <- buildVty\n-- void $ customMain initialVty buildVty Nothing app $ mkInitS n\n\n\nmain = do\n let buildVty = do \n v <- Vty.mkVty =<< Vty.standardIOConfig\n Vty.setMode (Vty.outputIface v) Vty.Mouse True\n return v\n \n n <- R.newStdGen\n initialVty <- buildVty\n void $ customMain initialVty buildVty Nothing app $ mkInitS n\n\n"}}} 2021-02-26 21:04:03.509400018 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":1,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/greg/sol/app/Main.hs"}}} 2021-02-26 21:04:03.511327866 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":2,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///home/greg/sol/app/Main.hs"},"range":{"start":{"line":54,"character":90},"end":{"line":54,"character":90}},"context":{"diagnostics":[]}}} 2021-02-26 21:04:03.654245385 [ThreadId 31] DEBUG hls: Configuration changed: Object (fromList [("haskell",Object (fromList [("completionSnippetsOn",Bool True),("diagnosticsOnChange",Bool True),("formatOnImportOn",Bool True),("formattingProvider",String "ormolu"),("hlintOn",Bool True),("indentationRules",Object (fromList [("enabled",Bool True)])),("languageServerVariant",String "haskell-language-server"),("liquidOn",Bool False),("logFile",String ""),("maxNumberOfProblems",Number 100.0),("serverExecutablePath",String ""),("trace",Object (fromList [("server",String "messages")])),("updateBehavior",String "keep-up-to-date")]))]) 2021-02-26 21:04:03.654835205 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"id":0,"method":"client/registerCapability","params":{"registrations":[{"id":"globalFileWatches","method":"workspace/didChangeWatchedFiles","registerOptions":{"watchers":[{"kind":5,"globPattern":"**/*.hs"},{"kind":5,"globPattern":"**/*.hs-boot"},{"kind":5,"globPattern":"**/*.lhs"},{"kind":5,"globPattern":"**/*.lhs-boot"}]}}]},"jsonrpc":"2.0"} 2021-02-26 21:04:03.655462716 [ThreadId 18] DEBUG hls: Finishing build session(exception: AsyncCancelled) 2021-02-26 21:04:03.655834579 [ThreadId 31] DEBUG hls: Restarting build session (aborting the previous one took 0.00s) 2021-02-26 21:04:03.660432166 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":0,"result":null} 2021-02-26 21:04:03.662339422 [ThreadId 31] DEBUG hls: Set files of interest to: [(NormalizedFilePath "/home/greg/sol/app/Main.hs",Modified {firstOpen = True})] 2021-02-26 21:04:03.66291184 [ThreadId 37] DEBUG hls: Finishing build session(exception: AsyncCancelled) 2021-02-26 21:04:03.663229067 [ThreadId 31] DEBUG hls: Restarting build session (aborting the previous one took 0.00s) 2021-02-26 21:04:03.666919812 [ThreadId 31] DEBUG hls: Opened text document: file:///home/greg/sol/app/Main.hs 2021-02-26 21:04:03.670014465 [ThreadId 77] INFO hls: hlint:getIdeas:file:NormalizedFilePath "/home/greg/sol/app/Main.hs" 2021-02-26 21:04:03.670595791 [ThreadId 76] INFO hls: Consulting the cradle for "app/Main.hs" Output from setting up the cradle Cradle {cradleRootDir = "/home/greg/sol", cradleOptsProg = CradleAction: Stack} 2021-02-26 21:04:03.674322947 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"window/showMessage","params":{"message":"No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for app/Main.hs.\n Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie).\nYou should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error.","type":2},"jsonrpc":"2.0"} 2021-02-26 21:04:03.674657703 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"id":1,"method":"window/workDoneProgress/create","params":{"token":0},"jsonrpc":"2.0"} 2021-02-26 21:04:03.674891979 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":0,"value":{"title":"Setting up sol (for app/Main.hs)","kind":"begin","cancellable":false}},"jsonrpc":"2.0"} 2021-02-26 21:04:03.679527647 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":1,"result":null} [Error - 9:04:03 PM] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":1,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null 2021-02-26 21:04:03.681037338 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"window/logMessage","params":{"message":"haskell-lsp:incoming message parse error. {\"jsonrpc\":\"2.0\",\"id\":1,\"result\":null} Error in $.result: parsing () failed, expected Array, but encountered Null\n","type":1},"jsonrpc":"2.0"} 2021-02-26 21:04:03.762095548 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":3,"method":"textDocument/codeLens","params":{"textDocument":{"uri":"file:///home/greg/sol/app/Main.hs"}}} 2021-02-26 21:04:03.763245286 [ThreadId 89] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "fp" "/home/greg/sol/app/Main.hs" 2021-02-26 21:04:03.784419631 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"id":2,"method":"window/workDoneProgress/create","params":{"token":"55"},"jsonrpc":"2.0"} 2021-02-26 21:04:03.785160628 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"55","value":{"title":"Processing","kind":"begin"}},"jsonrpc":"2.0"} 2021-02-26 21:04:03.786977978 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":2,"result":null} [Error - 9:04:03 PM] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":2,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null 2021-02-26 21:04:03.791856642 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"window/logMessage","params":{"message":"haskell-lsp:incoming message parse error. {\"jsonrpc\":\"2.0\",\"id\":2,\"result\":null} Error in $.result: parsing () failed, expected Array, but encountered Null\n","type":1},"jsonrpc":"2.0"} 2021-02-26 21:04:03.884900797 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"55","value":{"message":"0/2","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:04.386981307 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"55","value":{"message":"1/2","kind":"report"}},"jsonrpc":"2.0"} > Using main module: 1. Package `sol' component sol:exe:sol-exe with main-is file: /home/greg/sol/app/Main.hs > The following GHC options are incompatible with GHCi and have not been passed to it: -threaded > Configuring GHCi with the following packages: sol > /home/greg/sol/.stack-work/install/x86_64-linux/e048b758e46055999b6765460900d63244ddc6e079df249448ebc51f4dfd5d6b/8.10.4/pkgdb:/home/greg/.stack/snapshots/x86_64-linux/e048b758e46055999b6765460900d63244ddc6e079df249448ebc51f4dfd5d6b/8.10.4/pkgdb:/home/greg/.stack/programs/x86_64-linux/ghc-8.10.4/lib/ghc-8.10.4/package.conf.d 2021-02-26 21:04:07.01816523 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":0,"value":{"kind":"end"}},"jsonrpc":"2.0"} 2021-02-26 21:04:07.018006916 [ThreadId 76] DEBUG hls: Session loading result: Right (ComponentOptions {componentOptions = ["-i","-odir=/home/greg/sol/.stack-work/odir","-hidir=/home/greg/sol/.stack-work/odir","-hide-all-packages","-i/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/sol-exe","-i/home/greg/sol/app","-i/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/sol-exe/autogen","-i/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/global-autogen","-i/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/sol-exe/sol-exe-tmp","-stubdir=/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build","-package-id=base-4.14.1.0","-package-id=brick-0.58.1-6ghBpvIgh5AFnjK2o1gDSV","-package-id=containers-0.6.2.1","-package-id=microlens-0.4.11.2-9caS3Frz8K54yIHXMtlddL","-package-id=microlens-th-0.4.3.9-Db0VdtrwlWbBg7iDbnid3G","-package-id=random-1.1-IcUwfYF3CGOHS82o6ktbLi","-package-id=random-shuffle-0.0.4-D5uwGL5R06NKCY8FSEQz6G","-package-id=sol-0.1.0.0-FWKnEnIe4atJQbjN3WpRDv","-package-id=split-0.2.3.4-88UKBE2UY7dFTqHQfZTaFK","-package-id=vty-5.32-FlxW7nsIMHa3Gwrt1Qy1O2","-package-id=word-wrap-0.4.1-DmOHZbAIRWyG1iVg1DPotX","-rtsopts","-with-rtsopts=-N","-optP-include","-optP/home/greg/sol/.stack-work/ghci/c7488234/cabal_macros.h","-ghci-script=/tmp/haskell-stack-ghci/a9c1d792/ghci-script","-package-db","/home/greg/sol/.stack-work/install/x86_64-linux/e048b758e46055999b6765460900d63244ddc6e079df249448ebc51f4dfd5d6b/8.10.4/pkgdb","-package-db","/home/greg/.stack/snapshots/x86_64-linux/e048b758e46055999b6765460900d63244ddc6e079df249448ebc51f4dfd5d6b/8.10.4/pkgdb","-package-db","/home/greg/.stack/programs/x86_64-linux/ghc-8.10.4/lib/ghc-8.10.4/package.conf.d"], componentRoot = "/home/greg/sol", componentDependencies = ["sol.cabal","package.yaml","stack.yaml"]},"/home/greg/.stack/programs/x86_64-linux/ghc-8.10.4/lib/ghc-8.10.4") 2021-02-26 21:04:07.156976366 [ThreadId 76] INFO hls: Using interface files cache dir: /home/greg/.cache/ghcide/main-723390f46a4589f63ba7f1f708946a659f5ad047 2021-02-26 21:04:07.157205007 [ThreadId 76] INFO hls: Making new HscEnv[main] 2021-02-26 21:04:07.17026512 [ThreadId 76] DEBUG hls: New Component Cache HscEnvEq: (([],Just HscEnvEq 56),fromList [("package.yaml",Just 2021-02-15 00:51:51.466318989 UTC),("sol.cabal",Just 2021-02-26 04:06:33.366691842 UTC),("stack.yaml",Just 2021-02-26 20:30:14.155072307 UTC)]) 2021-02-26 21:04:07.173050217 [ThreadId 76] DEBUG hls: Known files updated: fromList [(TargetFile NormalizedFilePath "/home/greg/sol/app/Main.hs",["/home/greg/sol/app/Main.hs"]),(TargetModule Paths_sol,["/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/sol-exe/autogen/Paths_sol.hs"])] 2021-02-26 21:04:07.173556373 [ThreadId 76] DEBUG hls: Restarting build session (aborting the previous one took 0.00s) 2021-02-26 21:04:07.173763246 [ThreadId 44] DEBUG hls: Finishing build session(exception: AsyncCancelled) 2021-02-26 21:04:07.177319628 [ThreadId 115] INFO hls: hlint:getIdeas:file:NormalizedFilePath "/home/greg/sol/app/Main.hs" 2021-02-26 21:04:07.178516406 [ThreadId 143] INFO hls: finish: ModuleName.ghcSession (took 0.00s) 2021-02-26 21:04:07.193421777 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"55","value":{"message":"4/6","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:07.203075534 [ThreadId 155] INFO hls: finish: Pragmas.GetParsedModule (took 0.03s) 2021-02-26 21:04:07.203282516 [ThreadId 155] INFO hls: finish: parsed (took 0.03s) 2021-02-26 21:04:07.203328329 [ThreadId 147] INFO hls: finish: splice.codeAction.GitHieAst (took 0.03s) 2021-02-26 21:04:07.203488104 [ThreadId 147] INFO hls: finish: importLens (took 0.03s) 2021-02-26 21:04:07.203619966 [ThreadId 147] INFO hls: finish: ModuleName.GetParsedModule (took 0.02s) 2021-02-26 21:04:07.203360511 [ThreadId 89] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "excluded comments" "[]" 2021-02-26 21:04:07.203867565 [ThreadId 89] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "comments" "Comments {lineComments = fromList [(Range {_start = Position {_line = 41, _character = 0}, _end = Position {_line = 41, _character = 79}},RawLineComment {getRawLineComment = \"-------------------------------------------------------------------------------\"}),(Range {_start = Position {_line = 67, _character = 0}, _end = Position {_line = 67, _character = 51}},RawLineComment {getRawLineComment = \"-- App \"}),(Range {_start = Position {_line = 69, _character = 46}, _end = Position {_line = 69, _character = 64}},RawLineComment {getRawLineComment = \"-- s -> [Widget n]\"}),(Range {_start = Position {_line = 70, _character = 46}, _end = Position {_line = 70, _character = 73}},RawLineComment {getRawLineComment = \"-- s -> [CursorLocation n] \"}),(Range {_start = Position {_line = 71, _character = 46}, _end = Position {_line = 71, _character = 78}},RawLineComment {getRawLineComment = \"-- -> Maybe (CursorLocation n)\"}),(Range {_start = Position {_line = 72, _character = 46}, _end = Position {_line = 72, _character = 69}},RawLineComment {getRawLineComment = \"-- s -> BrickEvent n e \"}),(Range {_start = Position {_line = 73, _character = 46}, _end = Position {_line = 73, _character = 71}},RawLineComment {getRawLineComment = \"-- -> EventM n (Next s)\"}),(Range {_start = Position {_line = 74, _character = 46}, _end = Position {_line = 74, _character = 64}},RawLineComment {getRawLineComment = \"-- s -> EventM n s\"}),(Range {_start = Position {_line = 75, _character = 46}, _end = Position {_line = 75, _character = 61}},RawLineComment {getRawLineComment = \"-- s -> AttrMap\"}),(Range {_start = Position {_line = 83, _character = 0}, _end = Position {_line = 83, _character = 12}},RawLineComment {getRawLineComment = \"-- main = do\"}),(Range {_start = Position {_line = 84, _character = 0}, _end = Position {_line = 84, _character = 62}},RawLineComment {getRawLineComment = \"-- let buildVty = do v <- Vty.mkVty =<< Vty.standardIOConfig\"}),(Range {_start = Position {_line = 85, _character = 0}, _end = Position {_line = 85, _character = 69}},RawLineComment {getRawLineComment = \"-- Vty.setMode (Vty.outputIface v) Vty.Mouse True\"}),(Range {_start = Position {_line = 86, _character = 0}, _end = Position {_line = 86, _character = 31}},RawLineComment {getRawLineComment = \"-- return v\"}),(Range {_start = Position {_line = 87, _character = 0}, _end = Position {_line = 87, _character = 60}},RawLineComment {getRawLineComment = \"-- -- customMain (IO Vty) (?BChan)(App) ( init state )\"}),(Range {_start = Position {_line = 88, _character = 0}, _end = Position {_line = 88, _character = 21}},RawLineComment {getRawLineComment = \"-- n <- R.newStdGen\"}),(Range {_start = Position {_line = 89, _character = 0}, _end = Position {_line = 89, _character = 45}},RawLineComment {getRawLineComment = \"-- --let deal = R.shuffle' initialDeal 52 n\"}),(Range {_start = Position {_line = 90, _character = 0}, _end = Position {_line = 90, _character = 27}},RawLineComment {getRawLineComment = \"-- initialVty <- buildVty\"}),(Range {_start = Position {_line = 91, _character = 0}, _end = Position {_line = 91, _character = 66}},RawLineComment {getRawLineComment = \"-- void $ customMain initialVty buildVty Nothing app $ mkInitS n\"})], blockComments = fromList [(Range {_start = Position {_line = 0, _character = 0}, _end = Position {_line = 0, _character = 32}},RawBlockComment {getRawBlockComment = \"{-# LANGUAGE TemplateHaskell #-}\"}),(Range {_start = Position {_line = 78, _character = 0}, _end = Position {_line = 80, _character = 2}},RawBlockComment {getRawBlockComment = \"{-\\n\\n-}\"})]}" 2021-02-26 21:04:07.204616619 [ThreadId 89] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "Tests" "0 tests in 5 sections 0 setups 0 lenses." 2021-02-26 21:04:07.204986976 [ThreadId 89] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "tests" "0.00s" 2021-02-26 21:04:07.205091326 [ThreadId 89] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "codeLens" "3.44s" 2021-02-26 21:04:07.233618811 [ThreadId 147] INFO hls: finish: HaddockComments.GetAnnotatedParsedSource (took 0.06s) 2021-02-26 21:04:07.233919577 [ThreadId 147] INFO hls: finish: Outline (took 0.06s) 2021-02-26 21:04:07.234680525 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":[{"selectionRange":{"end":{"character":11,"line":2},"start":{"character":7,"line":2}},"range":{"end":{"character":0,"line":9223372036854775807},"start":{"character":0,"line":0}},"children":[{"selectionRange":{"end":{"character":53,"line":34},"start":{"character":0,"line":4}},"range":{"end":{"character":53,"line":34},"start":{"character":0,"line":4}},"children":[{"selectionRange":{"end":{"character":42,"line":4},"start":{"character":0,"line":4}},"range":{"end":{"character":42,"line":4},"start":{"character":0,"line":4}},"kind":2,"name":"import Control.Monad"},{"selectionRange":{"end":{"character":7,"line":19},"start":{"character":0,"line":5}},"range":{"end":{"character":7,"line":19},"start":{"character":0,"line":5}},"kind":2,"name":"import Graphics.Vty"},{"selectionRange":{"end":{"character":48,"line":20},"start":{"character":0,"line":20}},"range":{"end":{"character":48,"line":20},"start":{"character":0,"line":20}},"kind":2,"name":"import Lens.Micro.TH"},{"selectionRange":{"end":{"character":53,"line":21},"start":{"character":0,"line":21}},"range":{"end":{"character":53,"line":21},"start":{"character":0,"line":21}},"kind":2,"name":"import System.Random","detail":"qualified"},{"selectionRange":{"end":{"character":51,"line":23},"start":{"character":0,"line":23}},"range":{"end":{"character":51,"line":23},"start":{"character":0,"line":23}},"kind":2,"name":"import Brick.AttrMap"},{"selectionRange":{"end":{"character":80,"line":25},"start":{"character":0,"line":24}},"range":{"end":{"character":80,"line":25},"start":{"character":0,"line":24}},"kind":2,"name":"import Brick.Main"},{"selectionRange":{"end":{"character":62,"line":27},"start":{"character":0,"line":26}},"range":{"end":{"character":62,"line":27},"start":{"character":0,"line":26}},"kind":2,"name":"import Brick.Types"},{"selectionRange":{"end":{"character":24,"line":28},"start":{"character":0,"line":28}},"range":{"end":{"character":24,"line":28},"start":{"character":0,"line":28}},"kind":2,"name":"import Brick.Util"},{"selectionRange":{"end":{"character":64,"line":31},"start":{"character":0,"line":30}},"range":{"end":{"character":64,"line":31},"start":{"character":0,"line":30}},"kind":2,"name":"import CardTypes"},{"selectionRange":{"end":{"character":25,"line":32},"start":{"character":0,"line":32}},"range":{"end":{"character":25,"line":32},"start":{"character":0,"line":32}},"kind":2,"name":"import Movement"},{"selectionRange":{"end":{"character":25,"line":33},"start":{"character":0,"line":33}},"range":{"end":{"character":25,"line":33},"start":{"character":0,"line":33}},"kind":2,"name":"import Render"},{"selectionRange":{"end":{"character":53,"line":34},"start":{"character":0,"line":34}},"range":{"end":{"character":53,"line":34},"start":{"character":0,"line":34}},"kind":2,"name":"import Utils"}],"kind":2,"name":"imports"},{"selectionRange":{"end":{"character":36,"line":57},"start":{"character":0,"line":43}},"range":{"end":{"character":36,"line":57},"start":{"character":0,"line":43}},"kind":12,"name":"appEvent"},{"selectionRange":{"end":{"character":6,"line":65},"start":{"character":0,"line":60}},"range":{"end":{"character":6,"line":65},"start":{"character":0,"line":60}},"kind":12,"name":"aMap"},{"selectionRange":{"end":{"character":11,"line":76},"start":{"character":0,"line":69}},"range":{"end":{"character":11,"line":76},"start":{"character":0,"line":69}},"kind":12,"name":"app"},{"selectionRange":{"end":{"character":69,"line":102},"start":{"character":0,"line":94}},"range":{"end":{"character":69,"line":102},"start":{"character":0,"line":94}},"kind":12,"name":"main"}],"kind":1,"name":"Main"}],"id":1,"jsonrpc":"2.0"} 2021-02-26 21:04:07.3291033 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"55","value":{"message":"3/6","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:07.431667644 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"55","value":{"message":"5/7","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:07.531339059 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"55","value":{"message":"6/7","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:08.223830077 [ThreadId 522] INFO hls: finish: retrie (took 1.05s) 2021-02-26 21:04:08.224083092 [ThreadId 522] INFO hls: finish: codeLens (took 1.05s) 2021-02-26 21:04:08.224502556 [ThreadId 523] INFO hls: finish: (took 1.05s) 2021-02-26 21:04:08.230134785 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":[],"id":3,"jsonrpc":"2.0"} 2021-02-26 21:04:08.23033035 [ThreadId 523] DEBUG hls: finish: InitialLoad (took 1.05s) 2021-02-26 21:04:08.236319088 [ThreadId 529] INFO hls: finish: CodeAction (took 1.06s) 2021-02-26 21:04:08.236569942 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"id":3,"method":"window/workDoneProgress/create","params":{"token":"271"},"jsonrpc":"2.0"} 2021-02-26 21:04:08.236579613 [ThreadId 506] INFO hls: finish: tactic (took 1.06s) 2021-02-26 21:04:08.237472175 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":3,"result":null} 2021-02-26 21:04:08.238089751 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"271","value":{"title":"Indexing references from:","kind":"begin"}},"jsonrpc":"2.0"} 2021-02-26 21:04:08.238450896 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"271","value":{"message":"NormalizedFilePath \"/home/greg/sol/app/Main.hs\" (0/1)...","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:08.238651652 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"window/logMessage","params":{"message":"haskell-lsp:incoming message parse error. {\"jsonrpc\":\"2.0\",\"id\":3,\"result\":null} Error in $.result: parsing () failed, expected Array, but encountered Null\n","type":1},"jsonrpc":"2.0"} [Error - 9:04:08 PM] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":3,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null 2021-02-26 21:04:08.244140993 [ThreadId 533] INFO hls: finish: tactic (took 0.01s) 2021-02-26 21:04:08.24449311 [ThreadId 535] INFO hls: finish: tactic (took 0.00s) 2021-02-26 21:04:08.245220663 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"55","value":{"kind":"end"}},"jsonrpc":"2.0"} 2021-02-26 21:04:08.313210736 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"271","value":{"message":"Finished indexing 1 files","kind":"end"}},"jsonrpc":"2.0"} 2021-02-26 21:04:08.487082484 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":[],"id":2,"jsonrpc":"2.0"} 2021-02-26 21:04:27.020796706 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":4,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/greg/sol/app/Main.hs"},"position":{"line":53,"character":73}}} 2021-02-26 21:04:27.021558137 [ThreadId 542] DEBUG hls: GhcIde.hover entered (ideLogger) 2021-02-26 21:04:27.021966734 [ThreadId 542] DEBUG hls: Hover request at position 54:74 in file: /home/greg/sol/app/Main.hs 2021-02-26 21:04:27.022391222 [ThreadId 542] DEBUG hls: LOOKUP UP PERSISTENT FOR: GetDocMap 2021-02-26 21:04:27.022865172 [ThreadId 543] DEBUG hls: finish: C:GetHieAst (took 0.00s) 2021-02-26 21:04:27.023191667 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":{"range":{"end":{"character":104,"line":54},"start":{"character":67,"line":52}},"contents":{"kind":"markdown","value":""}},"id":4,"jsonrpc":"2.0"} 2021-02-26 21:04:27.03944186 [ThreadId 548] DEBUG hls: finish: C:GetDocMap (took 0.02s) 2021-02-26 21:04:27.731936839 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":5,"method":"textDocument/hover","params":{"textDocument":{"uri":"file:///home/greg/sol/app/Main.hs"},"position":{"line":54,"character":90}}} 2021-02-26 21:04:27.732357792 [ThreadId 552] DEBUG hls: GhcIde.hover entered (ideLogger) 2021-02-26 21:04:27.732633029 [ThreadId 552] DEBUG hls: Hover request at position 55:91 in file: /home/greg/sol/app/Main.hs 2021-02-26 21:04:27.733367189 [ThreadId 556] DEBUG hls: finish: C:GetDocMap (took 0.00s) 2021-02-26 21:04:27.733584223 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":{"range":{"end":{"character":93,"line":54},"start":{"character":87,"line":54}},"contents":{"kind":"markdown","value":"\n```haskell\ndoMove :: GSt -> [Ext] -> GSt\n```\n\n*Defined in ‘Movement’*\n\n\n\n"}},"id":5,"jsonrpc":"2.0"} 2021-02-26 21:04:27.733805057 [ThreadId 554] DEBUG hls: finish: C:GetHieAst (took 0.00s) 2021-02-26 21:04:30.193803171 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":6,"method":"textDocument/definition","params":{"textDocument":{"uri":"file:///home/greg/sol/app/Main.hs"},"position":{"line":54,"character":90}}} 2021-02-26 21:04:30.19418018 [ThreadId 559] DEBUG hls: Definition request at position 55:91 in file: /home/greg/sol/app/Main.hs 2021-02-26 21:04:30.194358381 [ThreadId 559] DEBUG hls: LOOKUP UP PERSISTENT FOR: GetImportMap 2021-02-26 21:04:30.194444227 [ThreadId 560] DEBUG hls: finish: C:GetHieAst (took 0.00s) 2021-02-26 21:04:30.194728299 [ThreadId 566] DEBUG hls: finish: C:GetImportMap (took 0.00s) 2021-02-26 21:04:30.195201084 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":[{"range":{"end":{"character":6,"line":169},"start":{"character":0,"line":169}},"uri":"file:///home/greg/sol/src/Movement.hs"}],"id":6,"jsonrpc":"2.0"} 2021-02-26 21:04:30.222172469 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":7,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/greg/sol/app/Main.hs"}}} 2021-02-26 21:04:30.223185821 [ThreadId 572] INFO hls: finish: Outline (took 0.00s) 2021-02-26 21:04:30.224893064 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":[{"selectionRange":{"end":{"character":11,"line":2},"start":{"character":7,"line":2}},"range":{"end":{"character":0,"line":9223372036854775807},"start":{"character":0,"line":0}},"children":[{"selectionRange":{"end":{"character":53,"line":34},"start":{"character":0,"line":4}},"range":{"end":{"character":53,"line":34},"start":{"character":0,"line":4}},"children":[{"selectionRange":{"end":{"character":42,"line":4},"start":{"character":0,"line":4}},"range":{"end":{"character":42,"line":4},"start":{"character":0,"line":4}},"kind":2,"name":"import Control.Monad"},{"selectionRange":{"end":{"character":7,"line":19},"start":{"character":0,"line":5}},"range":{"end":{"character":7,"line":19},"start":{"character":0,"line":5}},"kind":2,"name":"import Graphics.Vty"},{"selectionRange":{"end":{"character":48,"line":20},"start":{"character":0,"line":20}},"range":{"end":{"character":48,"line":20},"start":{"character":0,"line":20}},"kind":2,"name":"import Lens.Micro.TH"},{"selectionRange":{"end":{"character":53,"line":21},"start":{"character":0,"line":21}},"range":{"end":{"character":53,"line":21},"start":{"character":0,"line":21}},"kind":2,"name":"import System.Random","detail":"qualified"},{"selectionRange":{"end":{"character":51,"line":23},"start":{"character":0,"line":23}},"range":{"end":{"character":51,"line":23},"start":{"character":0,"line":23}},"kind":2,"name":"import Brick.AttrMap"},{"selectionRange":{"end":{"character":80,"line":25},"start":{"character":0,"line":24}},"range":{"end":{"character":80,"line":25},"start":{"character":0,"line":24}},"kind":2,"name":"import Brick.Main"},{"selectionRange":{"end":{"character":62,"line":27},"start":{"character":0,"line":26}},"range":{"end":{"character":62,"line":27},"start":{"character":0,"line":26}},"kind":2,"name":"import Brick.Types"},{"selectionRange":{"end":{"character":24,"line":28},"start":{"character":0,"line":28}},"range":{"end":{"character":24,"line":28},"start":{"character":0,"line":28}},"kind":2,"name":"import Brick.Util"},{"selectionRange":{"end":{"character":64,"line":31},"start":{"character":0,"line":30}},"range":{"end":{"character":64,"line":31},"start":{"character":0,"line":30}},"kind":2,"name":"import CardTypes"},{"selectionRange":{"end":{"character":25,"line":32},"start":{"character":0,"line":32}},"range":{"end":{"character":25,"line":32},"start":{"character":0,"line":32}},"kind":2,"name":"import Movement"},{"selectionRange":{"end":{"character":25,"line":33},"start":{"character":0,"line":33}},"range":{"end":{"character":25,"line":33},"start":{"character":0,"line":33}},"kind":2,"name":"import Render"},{"selectionRange":{"end":{"character":53,"line":34},"start":{"character":0,"line":34}},"range":{"end":{"character":53,"line":34},"start":{"character":0,"line":34}},"kind":2,"name":"import Utils"}],"kind":2,"name":"imports"},{"selectionRange":{"end":{"character":36,"line":57},"start":{"character":0,"line":43}},"range":{"end":{"character":36,"line":57},"start":{"character":0,"line":43}},"kind":12,"name":"appEvent"},{"selectionRange":{"end":{"character":6,"line":65},"start":{"character":0,"line":60}},"range":{"end":{"character":6,"line":65},"start":{"character":0,"line":60}},"kind":12,"name":"aMap"},{"selectionRange":{"end":{"character":11,"line":76},"start":{"character":0,"line":69}},"range":{"end":{"character":11,"line":76},"start":{"character":0,"line":69}},"kind":12,"name":"app"},{"selectionRange":{"end":{"character":69,"line":102},"start":{"character":0,"line":94}},"range":{"end":{"character":69,"line":102},"start":{"character":0,"line":94}},"kind":12,"name":"main"}],"kind":1,"name":"Main"}],"id":7,"jsonrpc":"2.0"} 2021-02-26 21:04:30.338766664 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///home/greg/sol/src/Movement.hs","languageId":"haskell","version":1,"text":"{-# LANGUAGE TemplateHaskell #-}\n{-# LANGUAGE ImpredicativeTypes #-}\n\nmodule Movement\n ( doMove\n ) where\n\nimport Data.List (findIndex)\nimport Data.Maybe (fromJust, isJust)\nimport Lens.Micro ( Getting, Lens'\n , (%~), (&), (.~), (^.), (^?!)\n , each, ix, lens, _head\n )\nimport Lens.Micro.TH (makeLenses)\n\nimport CardTypes\n ( Ext(TableX, StockX, WasteX, FoundX, DCX, IdX),\n GSt,\n Field,\n Pile,\n PileType(TableP, FoundP),\n DCard(..),\n FaceDir(FaceDown, FaceUp),\n Card )\nimport Utils (canPlace)\n\nmakeLenses ''DCard\nmakeLenses ''Pile\nmakeLenses ''GSt\nmakeLenses ''Field\n\n--------------------------------------------------------------------------------\n\n-- creates a lens from the field to the stock\n-- operates on lists of displaycards\nstockL :: Lens' Field [DCard] --all\nstockL = lens (\\f -> f ^. stock.cards & each.facedir .~ FaceUp) \n (\\f dcs -> f & stock.cards .~ (dcs & each.facedir .~ FaceDown)) \n\n-- creates a lens from the field to the waste\n-- operates on lists of displaycards\nwasteL :: Lens' Field [DCard]\nwasteL = lens (\\f -> f ^. waste.cards) \n (\\f dcs -> f & waste.cards .~ dcs) \n\n-- creates a lens from the field to an indexed tableau column\n-- operates on piles\ntableLN :: Int -> Lens' Field Pile\ntableLN n = lens (\\f -> f ^. table ^?! ix n) \n (\\f p -> f & table . ix n .~ p) \n\n-- creates a lens from the field to an indexed foundation row\n-- operates on piles.\nfoundLN :: Int -> Lens' Field Pile\nfoundLN n = lens (\\f -> f ^. found ^?! ix n) \n (\\f p -> f & found . ix n .~ p) \n\n--------------------------------------------------------------------------------\n-- data PileType = StockP | WasteP | TableP | FoundP deriving (Eq, Show, Ord)\n\n-- returns a list of [Lens' Field Pile], or pileLenses, which can be used in a\n-- construction like (field .^ pileLens).\ninTableau :: Functor f0 => [(Pile -> f0 Pile) -> Field -> f0 Field]\ninTableau = map tableLN [0..6] \n\ninFoundation :: Functor f0 => [(Pile -> f0 Pile) -> Field -> f0 Field]\ninFoundation = map foundLN [0..3] \n\n-- findSpot takes a list of pileLenses, a card, and a field and iterates thru\n-- the piles as derived from (field .^ pileLens) to see if the card can be\n-- placed on any of them. it returns either Nothing or Just Idx, the index of\n-- the first pile it could be placed on.\n--\n-- we do this instead of simply returning the pile to avoid collapsing the\n-- type-vague pileLens from a lens to specifically a setter. the index lets us\n-- read it as a getter from the _LN functions above without resolving it\n-- to being a setter here.\nfindSpot :: [Getting Pile s Pile] -> Card -> s -> Maybe Int\nfindSpot pLenses c f = findIndex (\\pL -> canPlace c (f ^. pL)) pLenses\n\n-- alias for isJust of the above\nisSpot pLs c f = isJust $ findSpot pLs c f\n-- alias for fromJust of the above\nmkSpot pLs c f = fromJust $ findSpot pLs c f\n\n--------------------------------------------------------------------------------\n\n-- takes a field and returns an updated field with the next move applied, if\n-- possible. defaults to returning the same field. To be used by (.~), not (%~).\n-- * clicking the empty stockX recalls the entire waste\n-- * clicking a non-empty stockX moves 3 or less cards from stock to waste\n-- * clicking a top waste card tries a move to the tableau or foundation\n-- * clicking a top foundation card tries a move to the tableau\n-- * clicking any tableau card tries a move to the tableau or foundation,\n-- depending on row\n\ntryMove :: [Ext] -> Field -> (Field, Int->Int)\n\ntryMove [StockX] f = (f',id)\n where f' = f & stockL %~ (reverse load ++)\n & wasteL .~ []\n load = f ^. wasteL \n\ntryMove [_, StockX] f = (f',id)\n where f' = f & stockL %~ drop 3 --drop 3 from stock\n & wasteL %~ (reverse load ++) --add 3 to waste\n load = f ^. stockL & take 3 --get 3 from stock\n\ntryMove [DCX dc, IdX 0, WasteX] f\n | canMove 0 dc f = (f', scoreFn)\n | otherwise = (f , id)\n where (moveL, pType) = mkMoveL 0 (dc ^. card) f\n f' = f & moveL . cards %~ (dc:) --write 1 to _\n & wasteL %~ drop 1 --drop 1 from waste\n scoreFn\n | pType == FoundP = (+10)\n | otherwise = (+5)\n\ntryMove [DCX dc, IdX row, FoundX] f\n | canMove row dc f = (f', scoreFn)\n | otherwise = (f , id)\n where (moveL, pType) = mkMoveL row (dc ^. card) f\n f' = f & moveL . cards %~ (dc:) --write 1 to _\n & foundLN row . cards %~ drop 1 --drop 1 from found.\n scoreFn i = i - 15 \n\ntryMove [DCX dc, IdX row, IdX col, TableX] f\n | canMove row dc f = (f', scoreFn)\n | otherwise = (f , id)\n where load = f ^. tableLN col . cards & take (succ row) \n (moveL, pType) = mkMoveL row (dc ^. card) f\n f' = f & moveL . cards %~ (load++) --write n to _\n & tableLN col . cards \n %~ drop (succ row) --drop n from tableau\n & tableLN col . cards . _head . facedir\n .~ FaceUp --flip underlying card\n scoreFn\n | pType == FoundP = (+15)\n | otherwise = (+5)\ntryMove _ f = (f,id)\n\n--------------------------------------------------------------------------------\n\n-- returns true if a card could be moved anywhere else in the field of play\n-- * if we're talking about a facedown card, the answer is no. \n-- * else a card at the top of its pile could go anywhere\n-- * any other card must remain in the tableau \ncanMove :: Int -> DCard -> Field -> Bool\ncanMove _ DCard{_facedir=FaceDown} _ = False\ncanMove 0 DCard{_card=c} f = isSpot (inFoundation ++ inTableau) c f \ncanMove _ DCard{_card=c} f = isSpot inTableau c f \n\n--------------------------------------------------------------------------------\n\n-- returns a (Lens' Field Pile) to the next valid move location \n-- * if we're moving from a row 0, it could be to the foundation or to the tableau\n-- * otherwise we're certainly moving to the tableau\nmkMoveL :: Functor f => Int -> Card -> Field \n -> ( (Pile -> f Pile) -> Field -> f Field, PileType)\nmkMoveL 0 c f = if idx <= 3 \n then (foundLN idx , FoundP)\n else (tableLN (idx - 4) , TableP)\n where idx = mkSpot (inFoundation ++ inTableau) c f \nmkMoveL _ c f = (tableLN $ mkSpot inTableau c f , TableP)\n\n--------------------------------------------------------------------------------\n\n-- wrapper for tryMove to add logging of historical states\ndoMove :: GSt -> [Ext] -> GSt\ndoMove s exs = if wasChange\n then s & field .~ newField -- & is a pipe function; the reverse of $ (composition function) -gw\n & history %~ ((oldField, oldScore) : ) -- partial function? -gw\n & score %~ scoreFn\n & moves %~ succ\n else s\n where\n wasChange = oldField /= newField\n oldField = s ^. field\n oldScore = s ^. score\n (newField, scoreFn) = tryMove exs oldField\n\n"}}} 2021-02-26 21:04:30.339998184 [ThreadId 31] DEBUG hls: Set files of interest to: [(NormalizedFilePath "/home/greg/sol/src/Movement.hs",Modified {firstOpen = True}),(NormalizedFilePath "/home/greg/sol/app/Main.hs",Modified {firstOpen = True})] 2021-02-26 21:04:30.340393469 [ThreadId 109] DEBUG hls: Finishing build session(exception: AsyncCancelled) 2021-02-26 21:04:30.340825177 [ThreadId 31] DEBUG hls: Restarting build session (aborting the previous one took 0.00s) 2021-02-26 21:04:30.343353999 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":8,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///home/greg/sol/src/Movement.hs"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}} 2021-02-26 21:04:30.360621805 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":9,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/greg/sol/src/Movement.hs"}}} 2021-02-26 21:04:30.358602432 [ThreadId 31] DEBUG hls: Opened text document: file:///home/greg/sol/src/Movement.hs 2021-02-26 21:04:30.362755303 [ThreadId 607] INFO hls: hlint:getIdeas:file:NormalizedFilePath "/home/greg/sol/src/Movement.hs" 2021-02-26 21:04:30.363676238 [ThreadId 614] INFO hls: Consulting the cradle for "src/Movement.hs" 2021-02-26 21:04:30.363940919 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"window/showMessage","params":{"message":"No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for src/Movement.hs.\n Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie).\nYou should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error.","type":2},"jsonrpc":"2.0"} Output from setting up the cradle Cradle {cradleRootDir = "/home/greg/sol", cradleOptsProg = CradleAction: Stack} 2021-02-26 21:04:30.369137803 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"id":4,"method":"window/workDoneProgress/create","params":{"token":1},"jsonrpc":"2.0"} 2021-02-26 21:04:30.369358759 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":1,"value":{"title":"Setting up sol (for src/Movement.hs)","kind":"begin","cancellable":false}},"jsonrpc":"2.0"} 2021-02-26 21:04:30.370011241 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":4,"result":null} 2021-02-26 21:04:30.370352909 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"window/logMessage","params":{"message":"haskell-lsp:incoming message parse error. {\"jsonrpc\":\"2.0\",\"id\":4,\"result\":null} Error in $.result: parsing () failed, expected Array, but encountered Null\n","type":1},"jsonrpc":"2.0"} [Error - 9:04:30 PM] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":4,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null 2021-02-26 21:04:30.462010504 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"id":5,"method":"window/workDoneProgress/create","params":{"token":"481"},"jsonrpc":"2.0"} 2021-02-26 21:04:30.462234717 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"481","value":{"title":"Processing","kind":"begin"}},"jsonrpc":"2.0"} 2021-02-26 21:04:30.468592455 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":5,"result":null} 2021-02-26 21:04:30.469857843 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"window/logMessage","params":{"message":"haskell-lsp:incoming message parse error. {\"jsonrpc\":\"2.0\",\"id\":5,\"result\":null} Error in $.result: parsing () failed, expected Array, but encountered Null\n","type":1},"jsonrpc":"2.0"} [Error - 9:04:30 PM] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":5,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null 2021-02-26 21:04:30.556328457 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":10,"method":"textDocument/codeLens","params":{"textDocument":{"uri":"file:///home/greg/sol/src/Movement.hs"}}} 2021-02-26 21:04:30.55695073 [ThreadId 924] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "fp" "/home/greg/sol/src/Movement.hs" 2021-02-26 21:04:30.563236824 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"481","value":{"message":"7/8","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:30.583689037 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":11,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"file:///home/greg/sol/src/Movement.hs"},"range":{"start":{"line":169,"character":0},"end":{"line":169,"character":0}},"context":{"diagnostics":[]}}} 2021-02-26 21:04:30.58477509 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":8}} > Configuring GHCi with the following packages: sol > /home/greg/sol/.stack-work/install/x86_64-linux/e048b758e46055999b6765460900d63244ddc6e079df249448ebc51f4dfd5d6b/8.10.4/pkgdb:/home/greg/.stack/snapshots/x86_64-linux/e048b758e46055999b6765460900d63244ddc6e079df249448ebc51f4dfd5d6b/8.10.4/pkgdb:/home/greg/.stack/programs/x86_64-linux/ghc-8.10.4/lib/ghc-8.10.4/package.conf.d 2021-02-26 21:04:33.579518164 [ThreadId 614] DEBUG hls: Session loading result: Right (ComponentOptions {componentOptions = ["-i","-odir=/home/greg/sol/.stack-work/odir","-hidir=/home/greg/sol/.stack-work/odir","-hide-all-packages","-i/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build","-i/home/greg/sol/src","-i/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/autogen","-i/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/global-autogen","-stubdir=/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build","-package-id=base-4.14.1.0","-package-id=brick-0.58.1-6ghBpvIgh5AFnjK2o1gDSV","-package-id=containers-0.6.2.1","-package-id=microlens-0.4.11.2-9caS3Frz8K54yIHXMtlddL","-package-id=microlens-th-0.4.3.9-Db0VdtrwlWbBg7iDbnid3G","-package-id=random-1.1-IcUwfYF3CGOHS82o6ktbLi","-package-id=random-shuffle-0.0.4-D5uwGL5R06NKCY8FSEQz6G","-package-id=split-0.2.3.4-88UKBE2UY7dFTqHQfZTaFK","-package-id=vty-5.32-FlxW7nsIMHa3Gwrt1Qy1O2","-package-id=word-wrap-0.4.1-DmOHZbAIRWyG1iVg1DPotX","-optP-include","-optP/home/greg/sol/.stack-work/ghci/abaf9387/cabal_macros.h","-ghci-script=/tmp/haskell-stack-ghci/aff87a3f/ghci-script","-package-db","/home/greg/sol/.stack-work/install/x86_64-linux/e048b758e46055999b6765460900d63244ddc6e079df249448ebc51f4dfd5d6b/8.10.4/pkgdb","-package-db","/home/greg/.stack/snapshots/x86_64-linux/e048b758e46055999b6765460900d63244ddc6e079df249448ebc51f4dfd5d6b/8.10.4/pkgdb","-package-db","/home/greg/.stack/programs/x86_64-linux/ghc-8.10.4/lib/ghc-8.10.4/package.conf.d"], componentRoot = "/home/greg/sol", componentDependencies = ["sol.cabal","package.yaml","stack.yaml"]},"/home/greg/.stack/programs/x86_64-linux/ghc-8.10.4/lib/ghc-8.10.4") 2021-02-26 21:04:33.580701839 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":1,"value":{"kind":"end"}},"jsonrpc":"2.0"} 2021-02-26 21:04:33.653403401 [ThreadId 614] INFO hls: Using interface files cache dir: /home/greg/.cache/ghcide/main-8d5acbaf6f13cb24872537b8db0c10e228f4c782 2021-02-26 21:04:33.653667007 [ThreadId 614] INFO hls: Using interface files cache dir: /home/greg/.cache/ghcide/main-8d5acbaf6f13cb24872537b8db0c10e228f4c782 2021-02-26 21:04:33.653792976 [ThreadId 614] INFO hls: Making new HscEnv[main,main] 2021-02-26 21:04:33.661988241 [ThreadId 614] DEBUG hls: New Component Cache HscEnvEq: (([],Just HscEnvEq 509),fromList [("package.yaml",Just 2021-02-15 00:51:51.466318989 UTC),("sol.cabal",Just 2021-02-26 04:06:33.366691842 UTC),("stack.yaml",Just 2021-02-26 20:30:14.155072307 UTC)]) 2021-02-26 21:04:33.66659683 [ThreadId 614] DEBUG hls: New Component Cache HscEnvEq: (([],Just HscEnvEq 510),fromList [("package.yaml",Just 2021-02-15 00:51:51.466318989 UTC),("sol.cabal",Just 2021-02-26 04:06:33.366691842 UTC),("stack.yaml",Just 2021-02-26 20:30:14.155072307 UTC)]) 2021-02-26 21:04:33.678007329 [ThreadId 614] DEBUG hls: Known files updated: fromList [(TargetFile NormalizedFilePath "/home/greg/sol/src/Movement.hs",["/home/greg/sol/src/Movement.hs"]),(TargetFile NormalizedFilePath "/home/greg/sol/app/Main.hs",["/home/greg/sol/app/Main.hs","/home/greg/sol/app/Main.hs"]),(TargetModule Utils,["/home/greg/sol/src/Utils.hs"]),(TargetModule Render,["/home/greg/sol/src/Render.hs"]),(TargetModule Movement,["/home/greg/sol/src/Movement.hs"]),(TargetModule Paths_sol,["/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/sol-exe/autogen/Paths_sol.hs","/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/sol-exe/autogen/Paths_sol.hs"]),(TargetModule CardTypes,["/home/greg/sol/src/CardTypes.hs"])] 2021-02-26 21:04:33.678447991 [ThreadId 614] DEBUG hls: Restarting build session (aborting the previous one took 0.00s) 2021-02-26 21:04:33.678557062 [ThreadId 578] DEBUG hls: Finishing build session(exception: AsyncCancelled) 2021-02-26 21:04:33.682943909 [ThreadId 966] INFO hls: hlint:getIdeas:file:NormalizedFilePath "/home/greg/sol/src/Movement.hs" 2021-02-26 21:04:33.688575513 [ThreadId 996] INFO hls: finish: ModuleName.ghcSession (took 0.01s) 2021-02-26 21:04:33.699506807 [ThreadId 965] INFO hls: finish: splice.codeAction.GitHieAst (took 0.02s) 2021-02-26 21:04:33.69981291 [ThreadId 965] INFO hls: finish: Outline (took 0.02s) 2021-02-26 21:04:33.700214641 [ThreadId 996] INFO hls: finish: parsed (took 0.01s) 2021-02-26 21:04:33.892589317 [ThreadId 996] INFO hls: finish: importLens (took 0.21s) 2021-02-26 21:04:33.892809486 [ThreadId 996] INFO hls: finish: Pragmas.GetParsedModule (took 0.21s) 2021-02-26 21:04:33.892918588 [ThreadId 996] INFO hls: finish: Pragmas.GetParsedModule (took 0.21s) 2021-02-26 21:04:33.893025679 [ThreadId 996] INFO hls: finish: ModuleName.GetParsedModule (took 0.20s) 2021-02-26 21:04:33.892902194 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":[{"selectionRange":{"end":{"character":15,"line":3},"start":{"character":7,"line":3}},"range":{"end":{"character":0,"line":9223372036854775807},"start":{"character":0,"line":0}},"children":[{"selectionRange":{"end":{"character":27,"line":24},"start":{"character":0,"line":7}},"range":{"end":{"character":27,"line":24},"start":{"character":0,"line":7}},"children":[{"selectionRange":{"end":{"character":32,"line":7},"start":{"character":0,"line":7}},"range":{"end":{"character":32,"line":7},"start":{"character":0,"line":7}},"kind":2,"name":"import Data.List"},{"selectionRange":{"end":{"character":39,"line":8},"start":{"character":0,"line":8}},"range":{"end":{"character":39,"line":8},"start":{"character":0,"line":8}},"kind":2,"name":"import Data.Maybe"},{"selectionRange":{"end":{"character":22,"line":12},"start":{"character":0,"line":9}},"range":{"end":{"character":22,"line":12},"start":{"character":0,"line":9}},"kind":2,"name":"import Lens.Micro"},{"selectionRange":{"end":{"character":33,"line":13},"start":{"character":0,"line":13}},"range":{"end":{"character":33,"line":13},"start":{"character":0,"line":13}},"kind":2,"name":"import Lens.Micro.TH"},{"selectionRange":{"end":{"character":12,"line":23},"start":{"character":0,"line":15}},"range":{"end":{"character":12,"line":23},"start":{"character":0,"line":15}},"kind":2,"name":"import CardTypes"},{"selectionRange":{"end":{"character":27,"line":24},"start":{"character":0,"line":24}},"range":{"end":{"character":27,"line":24},"start":{"character":0,"line":24}},"kind":2,"name":"import Utils"}],"kind":2,"name":"imports"},{"selectionRange":{"end":{"character":77,"line":37},"start":{"character":0,"line":36}},"range":{"end":{"character":77,"line":37},"start":{"character":0,"line":36}},"kind":12,"name":"stockL"},{"selectionRange":{"end":{"character":48,"line":43},"start":{"character":0,"line":42}},"range":{"end":{"character":48,"line":43},"start":{"character":0,"line":42}},"kind":12,"name":"wasteL"},{"selectionRange":{"end":{"character":48,"line":49},"start":{"character":0,"line":48}},"range":{"end":{"character":48,"line":49},"start":{"character":0,"line":48}},"kind":12,"name":"tableLN"},{"selectionRange":{"end":{"character":48,"line":55},"start":{"character":0,"line":54}},"range":{"end":{"character":48,"line":55},"start":{"character":0,"line":54}},"kind":12,"name":"foundLN"},{"selectionRange":{"end":{"character":30,"line":63},"start":{"character":0,"line":63}},"range":{"end":{"character":30,"line":63},"start":{"character":0,"line":63}},"kind":12,"name":"inTableau"},{"selectionRange":{"end":{"character":33,"line":66},"start":{"character":0,"line":66}},"range":{"end":{"character":33,"line":66},"start":{"character":0,"line":66}},"kind":12,"name":"inFoundation"},{"selectionRange":{"end":{"character":70,"line":78},"start":{"character":0,"line":78}},"range":{"end":{"character":70,"line":78},"start":{"character":0,"line":78}},"kind":12,"name":"findSpot"},{"selectionRange":{"end":{"character":42,"line":81},"start":{"character":0,"line":81}},"range":{"end":{"character":42,"line":81},"start":{"character":0,"line":81}},"kind":12,"name":"isSpot"},{"selectionRange":{"end":{"character":73,"line":93},"start":{"character":0,"line":83}},"range":{"end":{"character":73,"line":93},"start":{"character":0,"line":83}},"kind":12,"name":"mkSpot"},{"selectionRange":{"end":{"character":47,"line":146},"start":{"character":0,"line":98}},"range":{"end":{"character":47,"line":146},"start":{"character":0,"line":98}},"kind":12,"name":"tryMove"},{"selectionRange":{"end":{"character":52,"line":156},"start":{"character":0,"line":148}},"range":{"end":{"character":52,"line":156},"start":{"character":0,"line":148}},"kind":12,"name":"canMove"},{"selectionRange":{"end":{"character":57,"line":163},"start":{"character":0,"line":159}},"range":{"end":{"character":57,"line":163},"start":{"character":0,"line":159}},"kind":12,"name":"mkMoveL"},{"selectionRange":{"end":{"character":46,"line":179},"start":{"character":0,"line":169}},"range":{"end":{"character":46,"line":179},"start":{"character":0,"line":169}},"kind":12,"name":"doMove"}],"kind":1,"name":"Movement"}],"id":9,"jsonrpc":"2.0"} 2021-02-26 21:04:33.893165365 [ThreadId 996] INFO hls: finish: splice.codeAction.GitHieAst (took 0.21s) 2021-02-26 21:04:33.70036682 [ThreadId 924] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "excluded comments" "[]" 2021-02-26 21:04:33.898250107 [ThreadId 996] INFO hls: finish: HaddockComments.GetAnnotatedParsedSource (took 0.22s) 2021-02-26 21:04:33.902689811 [ThreadId 995] INFO hls: finish: HaddockComments.GetAnnotatedParsedSource (took 0.22s) 2021-02-26 21:04:33.905225356 [ThreadId 996] INFO hls: finish: importLens (took 0.22s) 2021-02-26 21:04:33.903941308 [ThreadId 924] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "comments" "Comments {lineComments = fromList [(Range {_start = Position {_line = 31, _character = 0}, _end = Position {_line = 31, _character = 80}},RawLineComment {getRawLineComment = \"--------------------------------------------------------------------------------\"}),(Range {_start = Position {_line = 33, _character = 0}, _end = Position {_line = 33, _character = 45}},RawLineComment {getRawLineComment = \"-- creates a lens from the field to the stock\"}),(Range {_start = Position {_line = 34, _character = 0}, _end = Position {_line = 34, _character = 36}},RawLineComment {getRawLineComment = \"-- operates on lists of displaycards\"}),(Range {_start = Position {_line = 35, _character = 30}, _end = Position {_line = 35, _character = 35}},RawLineComment {getRawLineComment = \"--all\"}),(Range {_start = Position {_line = 39, _character = 0}, _end = Position {_line = 39, _character = 45}},RawLineComment {getRawLineComment = \"-- creates a lens from the field to the waste\"}),(Range {_start = Position {_line = 40, _character = 0}, _end = Position {_line = 40, _character = 36}},RawLineComment {getRawLineComment = \"-- operates on lists of displaycards\"}),(Range {_start = Position {_line = 45, _character = 0}, _end = Position {_line = 45, _character = 61}},RawLineComment {getRawLineComment = \"-- creates a lens from the field to an indexed tableau column\"}),(Range {_start = Position {_line = 46, _character = 0}, _end = Position {_line = 46, _character = 20}},RawLineComment {getRawLineComment = \"-- operates on piles\"}),(Range {_start = Position {_line = 51, _character = 0}, _end = Position {_line = 51, _character = 61}},RawLineComment {getRawLineComment = \"-- creates a lens from the field to an indexed foundation row\"}),(Range {_start = Position {_line = 52, _character = 0}, _end = Position {_line = 52, _character = 21}},RawLineComment {getRawLineComment = \"-- operates on piles.\"}),(Range {_start = Position {_line = 57, _character = 0}, _end = Position {_line = 57, _character = 80}},RawLineComment {getRawLineComment = \"--------------------------------------------------------------------------------\"}),(Range {_start = Position {_line = 58, _character = 0}, _end = Position {_line = 58, _character = 80}},RawLineComment {getRawLineComment = \"-- data PileType = StockP | WasteP | TableP | FoundP deriving (Eq, Show, Ord)\"}),(Range {_start = Position {_line = 60, _character = 0}, _end = Position {_line = 60, _character = 78}},RawLineComment {getRawLineComment = \"-- returns a list of [Lens' Field Pile], or pileLenses, which can be used in a\"}),(Range {_start = Position {_line = 61, _character = 0}, _end = Position {_line = 61, _character = 41}},RawLineComment {getRawLineComment = \"-- construction like (field .^ pileLens).\"}),(Range {_start = Position {_line = 68, _character = 0}, _end = Position {_line = 68, _character = 77}},RawLineComment {getRawLineComment = \"-- findSpot takes a list of pileLenses, a card, and a field and iterates thru\"}),(Range {_start = Position {_line = 69, _character = 0}, _end = Position {_line = 69, _character = 74}},RawLineComment {getRawLineComment = \"-- the piles as derived from (field .^ pileLens) to see if the card can be\"}),(Range {_start = Position {_line = 70, _character = 0}, _end = Position {_line = 70, _character = 77}},RawLineComment {getRawLineComment = \"-- placed on any of them. it returns either Nothing or Just Idx, the index of\"}),(Range {_start = Position {_line = 71, _character = 0}, _end = Position {_line = 71, _character = 40}},RawLineComment {getRawLineComment = \"-- the first pile it could be placed on.\"}),(Range {_start = Position {_line = 72, _character = 0}, _end = Position {_line = 72, _character = 2}},RawLineComment {getRawLineComment = \"--\"}),(Range {_start = Position {_line = 73, _character = 0}, _end = Position {_line = 73, _character = 74}},RawLineComment {getRawLineComment = \"-- we do this instead of simply returning the pile to avoid collapsing the\"}),(Range {_start = Position {_line = 74, _character = 0}, _end = Position {_line = 74, _character = 78}},RawLineComment {getRawLineComment = \"-- type-vague pileLens from a lens to specifically a setter. the index lets us\"}),(Range {_start = Position {_line = 75, _character = 0}, _end = Position {_line = 75, _character = 72}},RawLineComment {getRawLineComment = \"-- read it as a getter from the _LN functions above without resolving it\"}),(Range {_start = Position {_line = 76, _character = 0}, _end = Position {_line = 76, _character = 26}},RawLineComment {getRawLineComment = \"-- to being a setter here.\"}),(Range {_start = Position {_line = 80, _character = 0}, _end = Position {_line = 80, _character = 32}},RawLineComment {getRawLineComment = \"-- alias for isJust of the above\"}),(Range {_start = Position {_line = 82, _character = 0}, _end = Position {_line = 82, _character = 34}},RawLineComment {getRawLineComment = \"-- alias for fromJust of the above\"}),(Range {_start = Position {_line = 85, _character = 0}, _end = Position {_line = 85, _character = 80}},RawLineComment {getRawLineComment = \"--------------------------------------------------------------------------------\"}),(Range {_start = Position {_line = 87, _character = 0}, _end = Position {_line = 87, _character = 76}},RawLineComment {getRawLineComment = \"-- takes a field and returns an updated field with the next move applied, if\"}),(Range {_start = Position {_line = 88, _character = 0}, _end = Position {_line = 88, _character = 80}},RawLineComment {getRawLineComment = \"-- possible. defaults to returning the same field. To be used by (.~), not (%~).\"}),(Range {_start = Position {_line = 89, _character = 0}, _end = Position {_line = 89, _character = 55}},RawLineComment {getRawLineComment = \"-- * clicking the empty stockX recalls the entire waste\"}),(Range {_start = Position {_line = 90, _character = 0}, _end = Position {_line = 90, _character = 74}},RawLineComment {getRawLineComment = \"-- * clicking a non-empty stockX moves 3 or less cards from stock to waste\"}),(Range {_start = Position {_line = 91, _character = 0}, _end = Position {_line = 91, _character = 72}},RawLineComment {getRawLineComment = \"-- * clicking a top waste card tries a move to the tableau or foundation\"}),(Range {_start = Position {_line = 92, _character = 0}, _end = Position {_line = 92, _character = 63}},RawLineComment {getRawLineComment = \"-- * clicking a top foundation card tries a move to the tableau\"}),(Range {_start = Position {_line = 93, _character = 0}, _end = Position {_line = 93, _character = 73}},RawLineComment {getRawLineComment = \"-- * clicking any tableau card tries a move to the tableau or foundation,\"}),(Range {_start = Position {_line = 94, _character = 0}, _end = Position {_line = 94, _character = 21}},RawLineComment {getRawLineComment = \"-- depending on row\"}),(Range {_start = Position {_line = 104, _character = 45}, _end = Position {_line = 104, _character = 64}},RawLineComment {getRawLineComment = \"--drop 3 from stock\"}),(Range {_start = Position {_line = 105, _character = 45}, _end = Position {_line = 105, _character = 61}},RawLineComment {getRawLineComment = \"--add 3 to waste\"}),(Range {_start = Position {_line = 106, _character = 45}, _end = Position {_line = 106, _character = 63}},RawLineComment {getRawLineComment = \"--get 3 from stock\"}),(Range {_start = Position {_line = 112, _character = 52}, _end = Position {_line = 112, _character = 66}},RawLineComment {getRawLineComment = \"--write 1 to _\"}),(Range {_start = Position {_line = 113, _character = 52}, _end = Position {_line = 113, _character = 71}},RawLineComment {getRawLineComment = \"--drop 1 from waste\"}),(Range {_start = Position {_line = 122, _character = 59}, _end = Position {_line = 122, _character = 73}},RawLineComment {getRawLineComment = \"--write 1 to _\"}),(Range {_start = Position {_line = 123, _character = 59}, _end = Position {_line = 123, _character = 79}},RawLineComment {getRawLineComment = \"--drop 1 from found.\"}),(Range {_start = Position {_line = 131, _character = 57}, _end = Position {_line = 131, _character = 71}},RawLineComment {getRawLineComment = \"--write n to _\"}),(Range {_start = Position {_line = 133, _character = 57}, _end = Position {_line = 133, _character = 78}},RawLineComment {getRawLineComment = \"--drop n from tableau\"}),(Range {_start = Position {_line = 135, _character = 57}, _end = Position {_line = 135, _character = 79}},RawLineComment {getRawLineComment = \"--flip underlying card\"}),(Range {_start = Position {_line = 141, _character = 0}, _end = Position {_line = 141, _character = 80}},RawLineComment {getRawLineComment = \"--------------------------------------------------------------------------------\"}),(Range {_start = Position {_line = 143, _character = 0}, _end = Position {_line = 143, _character = 75}},RawLineComment {getRawLineComment = \"-- returns true if a card could be moved anywhere else in the field of play\"}),(Range {_start = Position {_line = 144, _character = 0}, _end = Position {_line = 144, _character = 63}},RawLineComment {getRawLineComment = \"-- * if we're talking about a facedown card, the answer is no. \"}),(Range {_start = Position {_line = 145, _character = 0}, _end = Position {_line = 145, _character = 57}},RawLineComment {getRawLineComment = \"-- * else a card at the top of its pile could go anywhere\"}),(Range {_start = Position {_line = 146, _character = 0}, _end = Position {_line = 146, _character = 47}},RawLineComment {getRawLineComment = \"-- * any other card must remain in the tableau \"}),(Range {_start = Position {_line = 152, _character = 0}, _end = Position {_line = 152, _character = 80}},RawLineComment {getRawLineComment = \"--------------------------------------------------------------------------------\"}),(Range {_start = Position {_line = 154, _character = 0}, _end = Position {_line = 154, _character = 64}},RawLineComment {getRawLineComment = \"-- returns a (Lens' Field Pile) to the next valid move location \"}),(Range {_start = Position {_line = 155, _character = 0}, _end = Position {_line = 155, _character = 82}},RawLineComment {getRawLineComment = \"-- * if we're moving from a row 0, it could be to the foundation or to the tableau\"}),(Range {_start = Position {_line = 156, _character = 0}, _end = Position {_line = 156, _character = 52}},RawLineComment {getRawLineComment = \"-- * otherwise we're certainly moving to the tableau\"}),(Range {_start = Position {_line = 165, _character = 0}, _end = Position {_line = 165, _character = 80}},RawLineComment {getRawLineComment = \"--------------------------------------------------------------------------------\"}),(Range {_start = Position {_line = 167, _character = 0}, _end = Position {_line = 167, _character = 58}},RawLineComment {getRawLineComment = \"-- wrapper for tryMove to add logging of historical states\"}),(Range {_start = Position {_line = 170, _character = 64}, _end = Position {_line = 170, _character = 132}},RawLineComment {getRawLineComment = \"-- & is a pipe function; the reverse of $ (composition function) -gw\"}),(Range {_start = Position {_line = 171, _character = 64}, _end = Position {_line = 171, _character = 88}},RawLineComment {getRawLineComment = \"-- partial function? -gw\"})], blockComments = fromList [(Range {_start = Position {_line = 0, _character = 0}, _end = Position {_line = 0, _character = 32}},RawBlockComment {getRawBlockComment = \"{-# LANGUAGE TemplateHaskell #-}\"}),(Range {_start = Position {_line = 1, _character = 0}, _end = Position {_line = 1, _character = 35}},RawBlockComment {getRawBlockComment = \"{-# LANGUAGE ImpredicativeTypes #-}\"})]}" 2021-02-26 21:04:33.907780285 [ThreadId 924] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "Tests" "0 tests in 20 sections 0 setups 0 lenses." 2021-02-26 21:04:33.908621668 [ThreadId 924] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "tests" "0.00s" 2021-02-26 21:04:33.908819405 [ThreadId 924] DEBUG hls: src/Ide/Plugin/Eval/CodeLens.hs:191:15 "codeLens" "3.35s" 2021-02-26 21:04:33.915689249 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"481","value":{"message":"6/12","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:33.981870592 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"range":{"end":{"character":0,"line":1},"start":{"character":0,"line":0}},"message":"user error (Failed to get the immediate reverse dependencies of NormalizedFilePath \"/home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/autogen/Paths_sol.hs\")","severity":1,"source":"compiler"}],"uri":"file:///home/greg/sol/.stack-work/dist/x86_64-linux/Cabal-3.2.1.0/build/autogen/Paths_sol.hs"},"jsonrpc":"2.0"} 2021-02-26 21:04:33.995297036 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"481","value":{"message":"9/14","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.21726991 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"id":6,"method":"window/workDoneProgress/create","params":{"token":"924"},"jsonrpc":"2.0"} 2021-02-26 21:04:34.217621222 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"924","value":{"title":"Indexing references from:","kind":"begin"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.227848622 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":6,"result":null} 2021-02-26 21:04:34.22811085 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"924","value":{"message":"NormalizedFilePath \"/home/greg/sol/app/Main.hs\" (0/1)...","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.228342602 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"window/logMessage","params":{"message":"haskell-lsp:incoming message parse error. {\"jsonrpc\":\"2.0\",\"id\":6,\"result\":null} Error in $.result: parsing () failed, expected Array, but encountered Null\n","type":1},"jsonrpc":"2.0"} [Error - 9:04:34 PM] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":6,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null 2021-02-26 21:04:34.29930564 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"924","value":{"message":"Finished indexing 1 files","kind":"end"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.302420367 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"481","value":{"message":"10/14","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.506147492 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"id":7,"method":"window/workDoneProgress/create","params":{"token":"925"},"jsonrpc":"2.0"} 2021-02-26 21:04:34.50635241 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"925","value":{"title":"Indexing references from:","kind":"begin"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.50651031 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"925","value":{"message":"NormalizedFilePath \"/home/greg/sol/src/CardTypes.hs\" (0/1)...","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.50769996 [ThreadId 5] DEBUG haskell-lsp.parseOne: ---> {"jsonrpc":"2.0","id":7,"result":null} [Error - 9:04:34 PM] haskell-lsp:incoming message parse error. {"jsonrpc":"2.0","id":7,"result":null} Error in $.result: parsing () failed, expected Array, but encountered Null 2021-02-26 21:04:34.509945432 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"window/logMessage","params":{"message":"haskell-lsp:incoming message parse error. {\"jsonrpc\":\"2.0\",\"id\":7,\"result\":null} Error in $.result: parsing () failed, expected Array, but encountered Null\n","type":1},"jsonrpc":"2.0"} 2021-02-26 21:04:34.551795605 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"481","value":{"message":"12/15","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.71494877 [ThreadId 1437] INFO hls: finish: codeLens (took 1.03s) 2021-02-26 21:04:34.714986217 [ThreadId 1420] INFO hls: finish: retrie (took 1.03s) 2021-02-26 21:04:34.715678879 [ThreadId 1437] INFO hls: finish: retrie (took 1.03s) 2021-02-26 21:04:34.719713823 [ThreadId 1437] INFO hls: finish: (took 1.04s) 2021-02-26 21:04:34.72023702 [ThreadId 1420] DEBUG hls: finish: InitialLoad (took 1.04s) 2021-02-26 21:04:34.722198301 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":[{"range":{"end":{"character":6,"line":81},"start":{"character":0,"line":81}},"command":{"title":"isSpot :: [Getting Pile s Pile] -> Card -> s -> Bool","command":"23142:ghcide-type-lenses:typesignature.add","arguments":[{"changes":{"file:///home/greg/sol/src/Movement.hs":[{"range":{"end":{"character":0,"line":81},"start":{"character":0,"line":81}},"newText":"isSpot :: [Getting Pile s Pile] -> Card -> s -> Bool\n"}]}}]}},{"range":{"end":{"character":6,"line":83},"start":{"character":0,"line":83}},"command":{"title":"mkSpot :: [Getting Pile s Pile] -> Card -> s -> Int","command":"23142:ghcide-type-lenses:typesignature.add","arguments":[{"changes":{"file:///home/greg/sol/src/Movement.hs":[{"range":{"end":{"character":0,"line":83},"start":{"character":0,"line":83}},"newText":"mkSpot :: [Getting Pile s Pile] -> Card -> s -> Int\n"}]}}]}}],"id":10,"jsonrpc":"2.0"} 2021-02-26 21:04:34.751003289 [ThreadId 1442] INFO hls: finish: CodeAction (took 1.07s) 2021-02-26 21:04:34.751011429 [ThreadId 1436] INFO hls: finish: tactic (took 1.07s) 2021-02-26 21:04:34.751205805 [ThreadId 1442] INFO hls: finish: CodeAction (took 1.07s) 2021-02-26 21:04:34.751636305 [ThreadId 1436] INFO hls: finish: tactic (took 1.07s) 2021-02-26 21:04:34.751834664 [ThreadId 1445] INFO hls: finish: tactic (took 0.00s) 2021-02-26 21:04:34.751916763 [ThreadId 1446] INFO hls: finish: tactic (took 0.00s) 2021-02-26 21:04:34.752479447 [ThreadId 1447] INFO hls: finish: tactic (took 0.00s) 2021-02-26 21:04:34.753668408 [ThreadId 1449] INFO hls: finish: tactic (took 0.00s) 2021-02-26 21:04:34.755403836 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"925","value":{"message":"NormalizedFilePath \"/home/greg/sol/src/Utils.hs\" (1/3)...","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.763295246 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"481","value":{"message":"15/16","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.772562027 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"481","value":{"kind":"end"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.856278428 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"925","value":{"message":"NormalizedFilePath \"/home/greg/sol/src/Movement.hs\" (2/3)...","kind":"report"}},"jsonrpc":"2.0"} 2021-02-26 21:04:34.894822411 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":[],"id":8,"jsonrpc":"2.0"} 2021-02-26 21:04:34.895228996 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"result":[{"title":"Unfold doMove","kind":"refactor.inline","command":{"title":"Unfold doMove","command":"23142:retrie:retrieCommand","arguments":[{"originatingFile":"file:///home/greg/sol/src/Movement.hs","rewrites":[{"contents":"Movement.doMove","tag":"Unfold"}],"description":"Unfold doMove","restrictToOriginatingFile":false}]}},{"title":"Unfold doMove in current file","kind":"refactor.inline","command":{"title":"Unfold doMove in current file","command":"23142:retrie:retrieCommand","arguments":[{"originatingFile":"file:///home/greg/sol/src/Movement.hs","rewrites":[{"contents":"Movement.doMove","tag":"Unfold"}],"description":"Unfold doMove in current file","restrictToOriginatingFile":true}]}},{"title":"Fold doMove","kind":"refactor.extract","command":{"title":"Fold doMove","command":"23142:retrie:retrieCommand","arguments":[{"originatingFile":"file:///home/greg/sol/src/Movement.hs","rewrites":[{"contents":"Movement.doMove","tag":"Fold"}],"description":"Fold doMove","restrictToOriginatingFile":false}]}},{"title":"Fold doMove in current file","kind":"refactor.extract","command":{"title":"Fold doMove in current file","command":"23142:retrie:retrieCommand","arguments":[{"originatingFile":"file:///home/greg/sol/src/Movement.hs","rewrites":[{"contents":"Movement.doMove","tag":"Fold"}],"description":"Fold doMove in current file","restrictToOriginatingFile":true}]}}],"id":11,"jsonrpc":"2.0"} 2021-02-26 21:04:34.945827329 [ThreadId 7] DEBUG haskell-lsp.sendServer: <--2--{"method":"$/progress","params":{"token":"925","value":{"message":"Finished indexing 3 files","kind":"end"}},"jsonrpc":"2.0"} ```
Ailrun commented 3 years ago

Great, thank you!

Maybe it's related with hiedb update? CC. @wz1000

Savelenko commented 3 years ago

I started getting the same error after changing hie.yaml from just

cradle:
  stack:

to

cradle:
  stack:
    - path: "./src"
      component: "ttb:lib"
    - path: "./app"
      component: "ttb:exe:ttb-exe"
    - path: "./test"
      component: "ttb:test:ttb-test"

I am using haskell-language-server-1.0.0-linux-8.8.4 at the moment.

I hope this can provide additional insights. Thank you!

michaelpj commented 9 months ago

Closing as old and no recent reproductions