6

私のプロジェクトにはダミーモジュールがあり、その唯一の目的は、ライブラリの残りの部分のHaddockドキュメントを保持することです。実際、このモジュールには何もインポートする必要はありませんが、他のモジュールをインポートしない場合、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()

インポートを削除または作成した場合、Haddockはそのドキュメントに()ハイパーリンクしません。someFunctionこのようなインポートをそのままにしておくと、誤った警告がたくさん表示されますが、これは気に入らないものです。また、プロジェクト全体でこの種の警告を抑制したくありません。これは、このモジュール以外のモジュールで役立つ可能性があります。

質問:

  1. ビルド時にそのような警告なしにハイパーリンクされたHaddock出力を取得するにはどうすればよいですか?
  2. ファイルごとに警告を無効にすることは可能ですか?(でグローバルに実行できるようghc-options.cabal
4

1 に答える 1

7

未使用のインポート警告を消すために、ファイルの先頭にプラグマを置くことができます。

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

スコープ内にない識別子に明示的に修飾することで、それらにリンクできます。

エンティティの完全修飾名を指定することにより、現在のモジュールのスコープにないエンティティを参照することもできます。

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

MTが他の方法でスコープ内にない場合、Haddockは、モジュールMからエクスポートされたエンティティTを指すリンクを発行します(MまたはMTのいずれかが存在するかどうかを確認する必要はありません)。

—Haddockユーザーガイド

ただし、これによりドキュメントソースが非常に見苦しくなり、モジュールの修飾が出力から削除されないため、代わりに警告をオフにすることをお勧めします。

于 2012-02-02T13:33:26.653 に答える