(rontolisp) docs
← マクロ

uiop:with-deprecation

(uiop:with-deprecation (level) definitions...)

包んだ定義をそのまま確立し、最後の定義の値を返します。さらに、包んだ各 defun を 非推奨としてマークします: 最初の呼び出しで level フォームを一度評価し、その レベルが選ぶ非推奨コンディションをシグナルします。

level フォームは通常 (uiop:version-deprecation ...) で、バージョン文字列を :style-warning / :warning / :error / :delete に写像します。各レベルは それぞれ固有のコンディションクラスをシグナルします — deprecated-function-style-warning、deprecated-function-warning、 deprecated-function-error、deprecated-function-should-be-deleted — 関数ごとに 一度だけです (本家はマクロ展開時に level を評価しますが、この移植には展開時評価器が ないため、最初の呼び出しで評価します)。defun 以外のフォームはそのまま通されます。

展開はトップレベルにスプライスされるので、包まれたトップレベルの defun は コンパイルバックエンドでもトップレベル定義のままです (ライブラリが使う形は通常 eval-when の内側にあるこの形です)。

uiop は ASDF の移植性レイヤであり Common Lisp の一部ではありません: この名前は uiop: 修飾付きでのみ参照できます。

バックエンドサポート

4 つすべてのバックエンドで動作します: インタプリタと 2 つのコンパイラが共有する 組み込みマクロ展開です。他の組み込みマクロと同様に関数値は持ちません (#'uiop:with-deprecation はエラーです)。