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