Обработка файлов `.hie` стеком Haskell - PullRequest
0 голосов
/ 09 апреля 2020

Мне нужно создать *.hie файлы для всех моих файловых модулей Haskell в проекте, управляемом Haskell Stack. Я делаю это, добавляя флаг компиляции -fwrite-ide-info к stack.yaml в следующей форме:

ghc-options:
  "$locals": -fwrite-ide-info

Допустим, проект состоит из одного пакета с библиотекой и исполняемым файлом. Урезанный package.cabal будет

name: package

library
  exposed-modules:
    Package.Exposed.Module
  ghc-options: -fwrite-ide-info

executable binary
  main-is: Main.hs
    ghc-options: -fwrite-ide-info
    build-depends:
      package

Затем я запускаю stack build.

Во время компиляции файлы *.hie создаются в каталоге .stack-work.

Если быть точным, соответственно, библиотека и исполняемые файлы находятся в

path/to/project/package/.stack-work/dist/x86_64-linux-tinfo6/Cabal-3.0.1.0/build/Package/...
path/to/project/package/.stack-work/dist/x86_64-linux-tinfo6/Cabal-3.0.1.0/build/binary/binary-tmp/...

Мне нужны файлы *.hie в реальных исходных каталогах, и, как видно, эти *.hie файлы отображаются для библиотеки, но не для исполняемого файла.

Теперь мой вопрос: как Haskell Stack обрабатывает *.hie файлы. Обрабатываются ли они особым образом, например, копируются ли они в исходные файлы, где их могут найти программы, использующие их (одна из таких программ, которую я хочу использовать, - weeder)? Если нет, я понятия не имею, как появились эти *.hie файлы. У вас есть предложения?

Спасибо!

1 Ответ

0 голосов
/ 10 апреля 2020

Итак, Haskell Stack не копирует / не перемещает файлы h ie в исходные папки. Может быть, это произошло в какой-то момент, потому что в противном случае я понятия не имею, как там появились файлы. После удаления файлов hie в исходных папках weeder фактически использует файлы hie в каталогах .stack-work. Я прошу прощения за путаницу.

...