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