github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/go/types/lookup.go (about)

     1  // "go test -run=Generate -write=all" によって生成されたコードです。編集しないでください。
     2  
     3  // Copyright 2013 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  // このファイルは、さまざまなフィールドやメソッドの検索機能を実装しています。
     8  
     9  package types
    10  
    11  // LookupFieldOrMethodは、与えられたパッケージと名前でTというフィールドまたはメソッドを検索し、対応する*Varまたは*Func、インデックスのシーケンス、そしてパスにおいてポインタ間接参照があったかどうかを示すブール値を返します。addressableが設定されている場合、Tはアドレス可能な変数の型です(メソッドの検索にのみ関係します)。Tはnilであってはなりません。
    12  // 最後のインデックスエントリは、エントリが見つかった(埋め込まれた可能性のある)型のフィールドまたはメソッドのインデックスであり、次のいずれかです:
    13  //
    14  //  1. 名前付き型の宣言されたメソッドのリスト
    15  //  2. インターフェース型のすべてのメソッド(メソッドセット)のリスト
    16  //  3. 構造体型のフィールドのリスト
    17  //
    18  // より早いインデックスエントリは、見つかったエントリに到達するためにトラバースされた埋め込まれた構造体フィールドのインデックスであり、depth 0から開始します。
    19  // エントリが見つからない場合、nilオブジェクトが返されます。この場合、返されるインデックスとindirectの値の意味は次のとおりです:
    20  //   - もしindex != nilなら、インデックスシーケンスは曖昧なエントリを指します(同じ名前が同じ埋め込みレベルで複数回現れました)。
    21  //   - indirectが設定されている場合、ポインタレシーバータイプを持つメソッドが見つかりましたが、実際のレシーバータイプからメソッドの形式的なレシーバーベースタイプへのパスにポインタがなく、レシーバーがアドレス可能ではありませんでした。
    22  func LookupFieldOrMethod(T Type, addressable bool, pkg *Package, name string) (obj Object, index []int, indirect bool)
    23  
    24  // MissingMethodは、VがTを実装している場合、(nil, false)を返します。そうでない場合、Tに必要な欠落しているメソッドと、欠落しているか、または単に間違った型(ポインタレシーバーまたは間違ったシグネチャ)を返します。
    25  // 非インターフェース型V、またはstaticが設定されている場合、VがTを実装するには、TのすべてのメソッドがVに存在する必要があります。それ以外の場合(Vがインターフェースであり、staticが設定されていない場合)、MissingMethodは、Vにも存在するTのメソッドの型が一致していることだけをチェックします(例:型アサーションx.(T)の場合、xがインターフェース型Vである場合)。
    26  func MissingMethod(V Type, T *Interface, static bool) (method *Func, wrongType bool)