Skip to content

Sensitivity to symlinks in flags from hie-bios #3510

Open
@ylecornec

Description

@ylecornec

For context, in rules_haskell we output compilation options as described in the hie-bios documentation, and encountered a case where two different paths to the same directory (because of symlinks) are not equivalent.

See the following repro: https://github.com/ylecornec/hls-symlink-repro.

The repro was made on NixOS but we encountered the same thing on Ubuntu and Windows as well.


In this example ,haskell-language-server is setup using a hie-bios script which outputs the following flags:

  -isubdir_alias
  Main.hs
  subdir/Lib.hs

where subdir_alias is a symbolic link to subdir.

Running the following command:

haskell-language-server-wrapper Main.hs

fails with error:

Message:  Variable not in scope: val

whereas using either subdir or subdir_alias in both places works fine.

(running ghci $(./hie-bios | tr '\n' ' ') as indicated in hie-bios documentation also seems to work fine)

Versions:

This behavior seems present since haskell-language-server version 1.6 as the following commands fail:

nix-shell shell_1_9_0_0.nix --run "haskell-language-server-wrapper Main.hs"
nix-shell shell_1_6_1_1.nix --run "haskell-language-server-wrapper Main.hs"

While this one succeeds:

nix-shell shell_1_5_0_1.nix --run "haskell-language-server-wrapper Main.hs"

Metadata

Metadata

Assignees

No one assigned

    Labels

    component: ghcidetype: 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