[obsidian] vault backup: 2025-08-04 00:54:53[
Some checks failed
Build / build (push) Failing after 14m41s

This commit is contained in:
2025-08-04 00:54:54 +09:00
parent 665489d7a7
commit 33afe3ca27
2 changed files with 24 additions and 2 deletions

View File

@@ -119,17 +119,26 @@ fn hoge(){
ここまでしか型は決定できないということに
ただまあ、型が決定不能ならその時コンパイルエラーにすればいいだけで、一応型推論自体は無限ループに陥らず完了するのか?
ただまあ、型が決定不能ならその時コンパイルエラーにすればいいだけで、一応型推論自体は無限ループに陥らず完了するのか?ただ、extern宣言に変えるためには一回すべてのモジュールを読み込んでみてからでないと名前一覧すら作れない
Rustの場合はグローバルな宣言が基本的に型推論しなくて済むようになっているからなあ
型付け手順
- モジュールA読み込み開始
- いったんuse宣言以外の全部のProgramStatementを読んで名前をグローバル空間に登録型宣言は関数などわかるところ以外はすべて変数として登録
- モジュールー型宣言マップにファイル名登録
- use modBの解釈開始
- マップに問い合わせ、ファイルがないのでファイル読み込み開始
- use modAの解釈開始
- マップに問い合わせ、ファイルがあったのでそれを参照
-
- とりあえずmodAの型はすべて不明なレコード型として解釈して型付け開始
- Proigram→Exprへの変換の中でuse宣言をextern modA:{...}に変換し、名前空間参照をレコードへのアクセスに変換
---