AST 検証
AST 検証 は、ツリー内の各アイテムを訪問して簡単なチェックを行う独立した AST パスです。このパスは、複雑な解析、型チェック、名前解決を行いません。
検証を実行する前に、コンパイラはまずマクロを展開します。その後、このパスは各 AST アイテムが正しい状態にあることをチェックする検証を実行します。そしてこのパスが完了すると、コンパイラはクレート解決パスを実行します。
検証
検証は AstValidator 型で定義されており、この型自体は rustc_ast_passes クレートにあります。この型は、特定の言語規則が破られたときにエラーを出力する、さまざまな単純なチェックを実装しています。
さらに、AstValidator は AST アイテム(関数、トレイト、列挙型など)を訪問する方法を定義する Visitor トレイトを実装しています。
各アイテムに対して、visitor は固有のチェックを実行します。たとえば、関数宣言を訪問するとき、AstValidator はその関数について次のことをチェックします。
- パラメーター数が
u16::MAXを超えていないこと。 - c 可変長引数が宣言内で最後に来ること。
- ドキュメンテーションコメントが関数パラメーターに適用されていないこと。
- その他の検証。