Skip to content

Inline variable refactor doesn't work for let bindings inside do block #4408

Open
@BogdanYarotsky

Description

@BogdanYarotsky

Your environment

Which OS do you use?
MacOS

Which version of GHC do you use and how did you install it?
Tested with GHC 9.4.8 installed with ghcup.

How is your project built (alternative: link to the project)?
Cabal (exe + lib + tests). Link: https://github.com/BogdanYarotsky/async-http-client/blob/main/app/Main.hs

Which LSP client (editor/plugin) do you use?
VS Code + Haskell extension

Which version of HLS do you use and how did you install it?
2.9.0.1 installed from ghcup.

Have you configured HLS in any way (especially: a hie.yaml file)?
No

Steps to reproduce

  1. Enter the following code
data Uri = Uri
  { host :: String,
    path :: String
  }

simpleHttpGet :: Uri -> IO String
simpleHttpGet uri' = 
  return "doesn't matter"

main :: IO ()
main = do
  let path' = "/"
  response <- simpleHttpGet (Uri "example.com" path')
  putStrLn response
  1. Try to inline the let binding inside a do block using a code action.

Expected behavior

In the example path’ should be replaced with “/“ in the place of invocation (Uri constructor) like this:


main = do
  response <- simpleHttpGet (Uri "example.com" "/")
  putStrLn response


Actual behavior

2 cryptic error messages from HLS and no changes to the code:

  1. retrie: Internal Error: Retrie - inline produced no changes
  2. Error condition, please check your setup and/or the issue tracker: retrie: Internal Error: Retrie - inline produced no changes

Please check the video below:

Screen.Recording.2024-09-21.at.09.33.58.mov

May be related to issue #4374

Metadata

Metadata

Assignees

No one assigned

    Labels

    component: hls-retrie-pluginstatus: blockedNot actionable, because blocked by upstream/GHC etc.type: bugSomething isn't right: doesn't work as intended, documentation is missing/outdated, etc..

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions