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