11. Lint と制約検証
コンパイラは行番号付きの警告/エラーを返します。エラー報告の形式と粒度は仕様のファーストクラスの 要素で、メッセージは自己修正ループに乗る形でなければなりません (評価フレームワーク)。 「何が間違っているか / ターゲットで有効な候補 / 推奨される修正」の三つ組です。
11.1 カテゴリ
Section titled “11.1 カテゴリ”- 構文: parse / 型 /
key=valueの妥当性。 - ジオメトリ: AABB 展開で「壁の外の窓」「空中に浮くドア」などを検出。
- attachment: 額縁/絵画/看板/ボタン/レバー/松明が有効な取り付け面に乗っているか (空気への取り 付けを検出)。
- entity_aabb: armor_stand/villager/display が壁/通路にめり込んでいないか、ドアの開閉弧を塞いで いないか、エンティティの過密 (密度)。
- support: 吊りランタン、松明、キャンプファイア、砂利などの重力ブロックの支持条件。
- fluid: 水源 / 流れ / waterlogged の整合性。
- version_caps / parity: 状態/エンティティのスキーマがターゲットで使えるか (バージョンとエディション)。
- edit_stability:
intent_stateの変更が無関係なメンバのresolved_stateに波及しないか。 - redstone: 合成された回路を tick 単位でシミュレートし、宣言された真理値表/時相アサーションと 突き合わせる。タイミング衝突、QC 依存、配線輻輳 (レッドストーン)。
- AABB 干渉: 重なった場合は優先マージか lint エラーで拒否する。境界ブロックステートの再解決 (内角階段など) は IR 層の責務。
11.2 エラーと警告の区分
Section titled “11.2 エラーと警告の区分”- 放置すると意図しない結果になるもの (概念の不在、未知 ID、ドメイン外の状態) は エラー (サイレント 置換と暗黙の削除は禁止)。
- バージョン/エディション間の意味ドリフト、レッドストーン挙動の非保証などは 警告。
- autofix を提供するかは実装で定義します。
11.3 制約カタログ
Section titled “11.3 制約カタログ”ゲーム内制約 (重力ブロック、取り付け条件、流体挙動、許容されない組み合わせなど) はカタログ化し、 バージョンごとに管理します (バージョンとエディション)。「額縁はガラス に掛けられない」のような制約はここに入ります。