github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/types/check.go (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // このファイルは型チェックを実行するCheck関数を実装しています。 6 7 package types 8 9 import ( 10 "github.com/shogo82148/std/go/ast" 11 "github.com/shogo82148/std/go/token" 12 ) 13 14 // Checkerは型チェッカーの状態を維持します。 15 // [NewChecker] で作成する必要があります。 16 type Checker struct { 17 18 // If EnableAlias is set, alias declarations produce an Alias type. 19 // Otherwise the alias information is only in the type name, which 20 // points directly to the actual (aliased) type. 21 enableAlias bool 22 23 conf *Config 24 ctxt *Context 25 fset *token.FileSet 26 pkg *Package 27 *Info 28 version goVersion 29 nextID uint64 30 objMap map[Object]*declInfo 31 impMap map[importKey]*Package 32 33 // pkgPathMapはパッケージ名をインポートパスの集合にマッピングします。 34 // インポートグラフのどこかでその名前に対して見た異なるインポートパスの集合です。 35 // エラーメッセージでパッケージ名を曖昧にするために使用されます。 36 // 37 // pkgPathMapは遅延して割り当てられており、ハッピーな経路上で構築するコストを支払いません。 38 // seenPkgMapはすでに歩いたパッケージを追跡します。 39 pkgPathMap map[string]map[string]bool 40 seenPkgMap map[*Package]bool 41 42 // パッケージファイルのセットの型チェック中に収集された情報 43 // (Filesによって初期化され、check.Filesの間のみ有効です; 44 // マップとリストは必要に応じて割り当てられます) 45 files []*ast.File 46 versions map[*ast.File]string 47 imports []*PkgName 48 dotImportMap map[dotImportKey]*PkgName 49 recvTParamMap map[*ast.Ident]*TypeParam 50 brokenAliases map[*TypeName]bool 51 unionTypeSets map[*Union]*_TypeSet 52 mono monoGraph 53 54 firstErr error 55 methods map[*TypeName][]*Func 56 untyped map[ast.Expr]exprInfo 57 delayed []action 58 objPath []Object 59 cleaners []cleaner 60 61 // 現在のオブジェクトが型チェックされる環境(特定のオブジェクトの型チェックの間のみ有効) 62 environment 63 64 // デバッグ中 65 indent int 66 } 67 68 // NewCheckerは指定されたパッケージに対して新しい [Checker] インスタンスを返します。 69 // [Package] ファイルは、checker.Filesを通じて段階的に追加することができます。 70 func NewChecker(conf *Config, fset *token.FileSet, pkg *Package, info *Info) *Checker 71 72 // Filesはチェッカーのパッケージの一部として提供されたファイルをチェックします。 73 func (check *Checker) Files(files []*ast.File) error