Skip to content

Comments renaming should not be allowed #3915

Closed
@yttriumz

Description

@yttriumz

Your environment

Which OS do you use?

Operating System: openSUSE Tumbleweed 20231206
KDE Plasma Version: 5.27.9
KDE Frameworks Version: 5.112.0
Qt Version: 5.15.11
Kernel Version: 6.6.3-1-default (64-bit)
Graphics Platform: X11

Which version of GHC do you use and how did you install it?

Output of haskell-language-server-wrapper --probe-tools:

haskell-language-server version: 2.4.0.0 (GHC: 9.0.2) (PATH: /home/az/.ghcup/hls/2.4.0.0/lib/haskell-language-server-2.4.0.0/bin/haskell-language-server-wrapper)
Tool versions found on the $PATH
cabal:          3.6.2.1
stack:          2.11.1
ghc:            9.4.7

Tool versions in your project
2023-12-18T06:37:13.171524Z | Debug | executing command: ghc --numeric-version
ghc:            9.4.7

Installed via curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh

How is your project built (alternative: link to the project)?

N/A

Which LSP client (editor/plugin) do you use?

VSCode 1.85.0 + haskell.haskell 2.4.2

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

See above.

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

No.

Steps to reproduce

I discovered the issue accidentally when using a spell checker to correct a typo in my comment. But it caused an error message from HLS. These are the steps to reproduce:

  1. Open a .hs file and place the cursor on a comment.

  2. Press F2.

  3. The word will be prompted to rename.

  4. Enter a new word and press Enter, error occurs:

    image

Expected behaviour

Renaming comments should never be allowed, i.e, pressing F2 on comments should have no effect at all.

Actual behaviour

There is a renaming prompt but renaming will eventually cause error.

Include debug information

Execute in the root of your project the command haskell-language-server-wrapper --debug . and paste the logs here (you can find the executable location here):

Debug output:
No 'hie.yaml' found. Try to discover the project type!
Run entered for haskell-language-server-wrapper(haskell-language-server-wrapper) Version 2.4.0.0 x86_64 ghc-9.0.2
Current directory: /home/az/workspace/playground-Haskell/playground/Penn-spring-15
Operating system: linux
Arguments: ["--debug","."]
Cradle directory: /home/az/workspace/playground-Haskell/playground/Penn-spring-15
Cradle type: Default

Tool versions found on the $PATH
cabal:          3.6.2.1
stack:          2.11.1
ghc:            9.4.7


Consulting the cradle to get project GHC version...
2023-12-19T08:59:14.336850Z | Debug | executing command: ghc --numeric-version
Project GHC version: 9.4.7
haskell-language-server exe candidates: ["haskell-language-server-9.4.7","haskell-language-server"]
Launching haskell-language-server exe at:/home/az/.ghcup/bin/haskell-language-server-9.4.7
2023-12-19T08:59:14.370612Z | Debug | executing command: ghc -v0 -package-env=- -ignore-dot-ghci -e Control.Monad.join (Control.Monad.fmap System.IO.putStr System.Environment.getExecutablePath)
2023-12-19T08:59:14.465947Z | Debug | executing command: ghc --print-libdir
2023-12-19T08:59:15.952401Z | Info | haskell-language-server version: 2.4.0.0 (GHC: 9.4.7) (PATH: /home/az/.ghcup/hls/2.4.0.0/lib/haskell-language-server-2.4.0.0/bin/haskell-language-server-9.4.7)
2023-12-19T08:59:15.953132Z | Info | Directory: /home/az/workspace/playground-Haskell/playground/Penn-spring-15
2023-12-19T08:59:15.953370Z | Info | Logging heap statistics every 60.00s
 ghcide setup tester in /home/az/workspace/playground-Haskell/playground/Penn-spring-15.
Report bugs at https://github.com/haskell/haskell-language-server/issues

Step 1/4: Finding files to test in /home/az/workspace/playground-Haskell/playground/Penn-spring-15
Found 2 files

Step 2/4: Looking for hie.yaml files that control setup
Found 1 cradle
  ()

Step 3/4: Initializing the IDE
2023-12-19T08:59:16.043207Z | Debug | Initializing exports map from hiedb
2023-12-19T08:59:16.044802Z | Debug | Shake session initialized

Step 4/4: Type checkin2023-12-19T08:59:16.045101Z | Debug | Done initializing exports map from hiedb. Size: 0
g the files
2023-12-19T08:59:16.051016Z | Info | Cradle path: 01-intro.hs
2023-12-19T08:59:16.051689Z | Warning | No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for 01-intro.hs.
Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie).
You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error.
2023-12-19T08:59:16.079383Z | Debug | Cradle: Cradle {cradleRootDir = "/home/az/workspace/playground-Haskell/playground/Penn-spring-15", cradleOptsProg = CradleAction: Default}
2023-12-19T08:59:16.079586Z | Info | invoking build tool to determine build flags (this may take some time depending on the cache)
2023-12-19T08:59:16.079977Z | Debug | executing command: ghc --print-libdir
2023-12-19T08:59:16.116266Z | Debug | Session loading result: Right (ComponentOptions {componentOptions = ["-dynamic"], componentRoot = "/home/az/workspace/playground-Haskell/playground/Penn-spring-15", componentDependencies = []},"/home/az/.ghcup/ghc/9.4.7/lib64/ghc-9.4.7/lib")
2023-12-19T08:59:16.147423Z | Info | Interface files cache directory: /home/az/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda-1a596a151463f2c53ee4feb14ecd276a1ccebfda
2023-12-19T08:59:16.147783Z | Info | Making new HscEnv. In-place unit ids: [ main-1a596a151463f2c53ee4feb14ecd276a1ccebfda ]
2023-12-19T08:59:16.174230Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 4),fromList [])
2023-12-19T08:59:16.174546Z | Debug | Known files updated:
  fromList [(TargetFile NormalizedFilePath "/home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs",fromList ["/home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs"])]
2023-12-19T08:59:16.175015Z | Debug | Finished build session
AsyncCancelled
2023-12-19T08:59:16.175136Z | Debug | Restarting build session due to new component
Action Queue: [User TypeCheck]
Keys: [GhcSessionIO; , GetKnownTargets; ]
Aborting previous build session took 0.00s 
2023-12-19T08:59:16.176152Z | Debug | hlint: Getting hlint ideas for  NormalizedFilePath "/home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs"
2023-12-19T08:59:16.176388Z | Debug | hlint: Getting hlint ideas for  NormalizedFilePath "/home/az/workspace/playground-Haskell/playground/Penn-spring-15/02-poly-FPP.hs"
2023-12-19T08:59:16.240635Z | Info | Cradle path: 02-poly-FPP.hs
2023-12-19T08:59:16.240815Z | Warning | No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for 02-poly-FPP.hs.
Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie).
You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error.
2023-12-19T08:59:16.248616Z | Debug | Cradle: Cradle {cradleRootDir = "/home/az/workspace/playground-Haskell/playground/Penn-spring-15", cradleOptsProg = CradleAction: Default}
2023-12-19T08:59:16.248719Z | Info | invoking build tool to determine build flags (this may take some time depending on the cache)
2023-12-19T08:59:16.248932Z | Debug | executing command: ghc --print-libdir
2023-12-19T08:59:16.360446Z | Debug | Session loading result: Right (ComponentOptions {componentOptions = ["-dynamic"], componentRoot = "/home/az/workspace/playground-Haskell/playground/Penn-spring-15", componentDependencies = []},"/home/az/.ghcup/ghc/9.4.7/lib64/ghc-9.4.7/lib")
2023-12-19T08:59:16.426082Z | Info | Interface files cache directory: /home/az/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda-1a596a151463f2c53ee4feb14ecd276a1ccebfda
2023-12-19T08:59:16.426595Z | Info | Interface files cache directory: /home/az/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda-1a596a151463f2c53ee4feb14ecd276a1ccebfda
2023-12-19T08:59:16.427516Z | Info | Making new HscEnv. In-place unit ids: [ main-1a596a151463f2c53ee4feb14ecd276a1ccebfda
                                      , main-1a596a151463f2c53ee4feb14ecd276a1ccebfda ]
2023-12-19T08:59:16.436604Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 6),fromList [])
2023-12-19T08:59:16.465046Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 7),fromList [])
2023-12-19T08:59:16.465276Z | Debug | Known files updated:
  fromList [(TargetFile NormalizedFilePath "/home/az/workspace/playground-Haskell/playground/Penn-spring-15/02-poly-FPP.hs",fromList ["/home/az/workspace/playground-Haskell/playground/Penn-spring-15/02-poly-FPP.hs"]),(TargetFile NormalizedFilePath "/home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs",fromList ["/home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs"])]
2023-12-19T08:59:16.502470Z | Debug | Finished build session
AsyncCancelled
2023-12-19T08:59:16.502560Z | Debug | Restarting build session due to new component
Action Queue: [User TypeCheck]
Keys: [GhcSessionIO; ]
Aborting previous build session took 0.04s 
2023-12-19T08:59:16.502692Z | Debug | hlint: Getting hlint ideas for  NormalizedFilePath "/home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs"
2023-12-19T08:59:16.520457Z | Debug | hlint: Getting hlint ideas for  NormalizedFilePath "/home/az/workspace/playground-Haskell/playground/Penn-spring-15/02-poly-FPP.hs"
2023-12-19T08:59:16.711449Z | Debug | hlint: Using extensions for  NormalizedFilePath "/home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs": [ MonomorphismRestriction
                                                                                                                               , RelaxedPolyRec
                                                                                                                               , ForeignFunctionInterface
                                                                                                                               , ImplicitPrelude
                                                                                                                               , ScopedTypeVariables
                                                                                                                               , BangPatterns
                                                                                                                               , NamedFieldPuns
                                                                                                                               , GADTSyntax
                                                                                                                               , DoAndIfThenElse
                                                                                                                               , ConstraintKinds
                                                                                                                               , PolyKinds
                                                                                                                               , InstanceSigs
                                                                                                                               , StandaloneDeriving
                                                                                                                               , DeriveDataTypeable
                                                                                                                               , DeriveFunctor
                                                                                                                               , DeriveTraversable
                                                                                                                               , DeriveFoldable
                                                                                                                               , DeriveGeneric
                                                                                                                               , DeriveLift
                                                                                                                               , TypeSynonymInstances
                                                                                                                               , FlexibleContexts
                                                                                                                               , FlexibleInstances
                                                                                                                               , ConstrainedClassMethods
                                                                                                                               , MultiParamTypeClasses
                                                                                                                               , ExistentialQuantification
                                                                                                                               , EmptyDataDecls
                                                                                                                               , KindSignatures
                                                                                                                               , GeneralizedNewtypeDeriving
                                                                                                                               , PostfixOperators
                                                                                                                               , TupleSections
                                                                                                                               , PatternGuards
                                                                                                                               , RankNTypes
                                                                                                                               , TypeOperators
                                                                                                                               , ExplicitForAll
                                                                                                                               , TraditionalRecordSyntax
                                                                                                                               , BinaryLiterals
                                                                                                                               , HexFloatLiterals
                                                                                                                               , EmptyCase
                                                                                                                               , NamedWildCards
                                                                                                                               , TypeApplications
                                                                                                                               , EmptyDataDeriving
                                                                                                                               , NumericUnderscores
                                                                                                                               , StarIsType
                                                                                                                               , ImportQualifiedPost
                                                                                                                               , StandaloneKindSignatures
                                                                                                                               , FieldSelectors ]
2023-12-19T08:59:16.900538Z | Debug | hlint: Using extensions for  NormalizedFilePath "/home/az/workspace/playground-Haskell/playground/Penn-spring-15/02-poly-FPP.hs": [ MonomorphismRestriction
                                                                                                                                  , RelaxedPolyRec
                                                                                                                                  , ForeignFunctionInterface
                                                                                                                                  , ImplicitPrelude
                                                                                                                                  , ScopedTypeVariables
                                                                                                                                  , BangPatterns
                                                                                                                                  , NamedFieldPuns
                                                                                                                                  , GADTSyntax
                                                                                                                                  , DoAndIfThenElse
                                                                                                                                  , ConstraintKinds
                                                                                                                                  , PolyKinds
                                                                                                                                  , InstanceSigs
                                                                                                                                  , StandaloneDeriving
                                                                                                                                  , DeriveDataTypeable
                                                                                                                                  , DeriveFunctor
                                                                                                                                  , DeriveTraversable
                                                                                                                                  , DeriveFoldable
                                                                                                                                  , DeriveGeneric
                                                                                                                                  , DeriveLift
                                                                                                                                  , TypeSynonymInstances
                                                                                                                                  , FlexibleContexts
                                                                                                                                  , FlexibleInstances
                                                                                                                                  , ConstrainedClassMethods
                                                                                                                                  , MultiParamTypeClasses
                                                                                                                                  , ExistentialQuantification
                                                                                                                                  , EmptyDataDecls
                                                                                                                                  , KindSignatures
                                                                                                                                  , GeneralizedNewtypeDeriving
                                                                                                                                  , PostfixOperators
                                                                                                                                  , TupleSections
                                                                                                                                  , PatternGuards
                                                                                                                                  , RankNTypes
                                                                                                                                  , TypeOperators
                                                                                                                                  , ExplicitForAll
                                                                                                                                  , TraditionalRecordSyntax
                                                                                                                                  , BinaryLiterals
                                                                                                                                  , HexFloatLiterals
                                                                                                                                  , EmptyCase
                                                                                                                                  , NamedWildCards
                                                                                                                                  , TypeApplications
                                                                                                                                  , EmptyDataDeriving
                                                                                                                                  , NumericUnderscores
                                                                                                                                  , StarIsType
                                                                                                                                  , ImportQualifiedPost
                                                                                                                                  , StandaloneKindSignatures
                                                                                                                                  , FieldSelectors ]
2023-12-19T08:59:16.990386Z | Info | hlint: updateFileDiagnostics published different from new diagnostics - file diagnostics: File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    105:8-105:21
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  EvaluateFound:True && FalseWhy not:False
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    107:13-107:26
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  EvaluateFound:False || TrueWhy not:True
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    109:8-109:20
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  Redundant bracketFound:('a' == 'a')Why not:'a' == 'a'
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    111:8-111:17
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  Redundant bracketFound:(16 /= 3)Why not:16 /= 3
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    134:5-134:19
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  Use evenFound:n `mod` 2 == 0Why not:even n
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    208:8-208:14
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  Use list literalFound:1 : []Why not:[1]
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    210:8-210:20
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  Use list literalFound:3 : (1 : [])Why not:[3, 1]
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    212:8-212:22
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  Use list literalFound:2 : 3 : 4 : []Why not:[2, 3, 4]
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    214:21-214:35
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  Use list literalFound:2 : 3 : 4 : []Why not:[2, 3, 4]
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    225:1-227:46
Source:   hlint
Severity: DiagnosticSeverity_Information
Message: 
  Use foldr
  Found:
  intListLength [] = 0
  intListLength (x : xs) = 1 + intListLength xs
  Why not:
  intListLength xs = foldr (\ x -> (+) 1) 0 xs
File:     /home/az/workspace/playground-Haskell/playground/Penn-spring-15/01-intro.hs
Hidden:   no
Range:    232:13-232:21
Source:   hlint
Severity: DiagnosticSeverity_Information
Message:  Use list literal patternFound:(x : [])Why not:[x]
2023-12-19T08:59:17.008159Z | Debug | Finished: User TypeCheck Took: 0.51s
2023-12-19T08:59:17.036935Z | Debug | Finished: GetHie Took: 0.02s

2023-12-19T08:59:17.038173Z | Debug | Finished: GenerateCore Took: 0.00s
Completed (2 files worked, 0 files failed)

Paste the contents of extension specific log, you can check instructions about how to find it here

Extension log:
2023-12-19T09:00:58.657929Z | Error | rename: Internal Error: Renaming of an imported name is unsupported
[Error - 5:00:58 PM] Request textDocument/rename failed.
  Message: rename: Internal Error: Renaming of an imported name is unsupported
  Code: -32603 
2023-12-19T09:01:05.695432Z | Info | Live bytes: 410.59MB Heap size: 1522.53MB
2023-12-19T09:01:18.237218Z | Warning | LSP: no handler for: "$/setTrace"
2023-12-19T09:01:41.353329Z | Warning | LSP: no handler for: "$/setTrace"
2023-12-19T09:02:05.740575Z | Info | Live bytes: 410.59MB Heap size: 1522.53MB
2023-12-19T09:03:05.741596Z | Info | Live bytes: 410.59MB Heap size: 1522.53MB

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: needs triagetype: 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