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

     1  // 「go test -run=Generate -write=all」によって生成されたコードです。編集しないでください。
     2  
     3  // Copyright 2020 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  // 型の統一は、与えられた(束縛された)型パラメータのリスト内で発生する可能性がある
    10  // xとyの2つの型が構造的に等しくなるように試みます。もしxとyが構造的に異なる場合
    11  // (例えば、[]T vs chan Tのような場合)、または型パラメータに対して矛盾する型が
    12  // 決定された場合、統一は失敗します。統一が成功した場合、副作用として、束縛された型
    13  // パラメータの型が決定されるかもしれません。
    14  //
    15  // 統一には通常、与えられた統一子uに対して複数回のu.unify(x, y)の呼び出しが必要であり、
    16  // さまざまなxとyの型の組み合わせが必要です。各呼び出しでは、追加の型パラメータの型が
    17  // 副作用として決定され、uに記録される場合があります。
    18  // もし呼び出しが失敗した場合(falseを返す場合)、統一も失敗します。
    19  //
    20  // 統一の文脈において、2つの型の構造的な等価性は、片方の型が定義済みであるかどうかに
    21  // 関わらず、定義済みの型とその基になる型の違いを無視します。
    22  // また、(外部の未指定)型パラメータとそのコア型の違いも無視します。
    23  // もし2つの型が構造的に等しくない場合、それらはGoの同一の型ではありません。
    24  // しかし、もし構造的に等しい場合、これらはGoの同一であるか、少なくとも代入可能であるか、
    25  // 制約の型セットにあるかもしれません。
    26  // これらが実際に同一であるか、代入可能であるかは、インスタンス化と関数引数の渡し方に
    27  // よって決まります。
    28  
    29  package types