github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/types/named.go (about) 1 // 「go test -run = Generate -write = all」によって生成されたコードです。編集しないでください。 2 3 // Copyright 2011 The Go Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 package types 8 9 import ( 10 "github.com/shogo82148/std/sync" 11 ) 12 13 // Namedは名前付き(定義された)型を表します。 14 type Named struct { 15 check *Checker 16 obj *TypeName 17 18 // fromRHS はこの *Named 型が派生元となる宣言の右辺値の型(サイクルの報告用)を保持します。 19 // validType のみで使用されるため、同期化は必要ありません。 20 fromRHS Type 21 22 // インスタンス化された型に関する情報; それ以外はnil 23 inst *instance 24 25 mu sync.Mutex 26 state_ uint32 27 underlying Type 28 tparams *TypeParamList 29 30 // この型に宣言されたメソッド(この型のメソッドセットではない) 31 // シグネチャは遅延してチェックされます。 32 // インスタンス化されていない型の場合、これは完全なメソッドのリストです。インスタンス化された型の場合、 33 // メソッドは最初にアクセスされたときに個別に展開されます。 34 methods []*Func 35 36 // loaderは型パラメータ、基底型、およびメソッドを遅延読み込みするために提供されるかもしれません。 37 loader func(*Named) (tparams []*TypeParam, underlying Type, methods []*Func) 38 } 39 40 // NewNamedは、与えられた型名、基礎型、および関連するメソッドに対して新しい名前付き型を返します。 41 // もし与えられた型名のオブジェクトがまだ型を持っていない場合、その型は返された名前付き型に設定されます。 42 // 基礎型は*Namedではない必要があります。 43 func NewNamed(obj *TypeName, underlying Type, methods []*Func) *Named 44 45 // Objは、名前tで定義された宣言の型名を返します。インスタンス化された型の場合、これは元の型の型名と同じです。 46 func (t *Named) Obj() *TypeName 47 48 // Originは、指定された型tがインスタンス化されたジェネリック型を返します。 49 // tがインスタンス化されていない型の場合は、結果はtとなります。 50 func (t *Named) Origin() *Named 51 52 // TypeParams は、名前付きの型 t の型パラメーターを返します。返り値は nil です。 53 // (元々) ジェネリック型である場合、インスタンス化されているかどうかに関わらず、結果は非 nil です。 54 func (t *Named) TypeParams() *TypeParamList 55 56 // SetTypeParamsは名前付き型tの型パラメータを設定します。 57 // tには型引数を持っていてはいけません。 58 func (t *Named) SetTypeParams(tparams []*TypeParam) 59 60 // TypeArgsは、名前付きの型tをインスタンス化するために使用される型引数を返します。 61 func (t *Named) TypeArgs() *TypeList 62 63 // NumMethodsはtに定義された明示的なメソッドの数を返します。 64 func (t *Named) NumMethods() int 65 66 // Method returns the i'th method of named type t for 0 <= i < t.NumMethods(). 67 // 68 // For an ordinary or instantiated type t, the receiver base type of this 69 // method is the named type t. For an uninstantiated generic type t, each 70 // method receiver is instantiated with its receiver type parameters. 71 // 72 // Methods are numbered deterministically: given the same list of source files 73 // presented to the type checker, or the same sequence of NewMethod and AddMethod 74 // calls, the mapping from method index to corresponding method remains the same. 75 // But the specific ordering is not specified and must not be relied on as it may 76 // change in the future. 77 func (t *Named) Method(i int) *Func 78 79 // SetUnderlyingは基本型を設定し、tを完全なものとしてマークします。 80 // tには型引数を持っていてはいけません。 81 func (t *Named) SetUnderlying(underlying Type) 82 83 // AddMethodは、メソッドmがすでにメソッドリストに存在しない場合に追加します。 84 // メソッドはtと同じパッケージに存在しなければならず、tは 85 // 型引数を持っていてはなりません。 86 func (t *Named) AddMethod(m *Func) 87 88 // TODO(gri) Investigate if Unalias can be moved to where underlying is set. 89 func (t *Named) Underlying() Type 90 func (t *Named) String() string