Пикши гиперссылки и без предупреждения об избыточном импорте - PullRequest
5 голосов
/ 02 февраля 2012

В моем проекте есть фиктивный модуль, единственная цель которого - хранить документацию Haddock для остальной части библиотеки. На самом деле мне не нужно для импорта чего-либо в этом модуле, но если я не импортирую другие модули, Хэддок не связывает имена функций с их модулями.

Мой модуль выглядит так

{- |

Lots of Haddock text here... it references 'someFunction'.

-}
module TopLevelDoc () where

import Other.Module.With.SomeFunction

Теперь, если я строю проект, я получаю это предупреждение:

    Warning: The import of `Other.Module.With.SomeFunction' is redundant
           except perhaps to import instances from `Other.Module.With.SomeFunction'
         To import instances alone, use: import Other.Module.With.SomeFunction()

Если я удаляю импорт или делаю его (), Хэддок не делает гиперссылку someFunction на свою документацию. Если я оставлю такой импорт как есть, я получу много ложных предупреждений, которые мне не нравятся. И я не хочу подавлять такого рода предупреждения для всего проекта, это может быть полезно для любого другого модуля, кроме этого.

Вопросы:

  1. Как получить выходные данные Haddock с гиперссылками без таких предупреждений при сборке?
  2. Можно ли отключить предупреждения для каждого файла отдельно? (как я могу сделать это глобально с ghc-options в .cabal)

1 Ответ

7 голосов
/ 02 февраля 2012

Чтобы отключить предупреждение о неиспользованном импорте, вы можете поместить прагму вверху файла:

{-# OPTIONS_GHC -fno-warn-unused-imports #-}

Вы можете ссылаться на идентификаторы, которые не входят в область действия, явно указав их:

Также можно ссылаться на объекты, которые не входят в область действия текущего модуля, указав полное квалифицированное имя объекта:

-- | The identifier 'M.T' is not in scope

Если M.T не находится в области видимости иначе, Хэддок просто выдаст ссылку, указывающую на сущность T, экспортированную из модуля M (без проверки, существует ли M или M.T).

- Руководство пользователя Haddock

Однако это, вероятно, сделает ваш источник документации довольно уродливым, а квалификации модулей не будут удалены из вывода, поэтому я рекомендую вместо этого отключить предупреждения.

...