// Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import ( "reflect" "./a" "./b" ) // Comparing two interfaces whose dynamic type the compiler knows is // compiled to a direct comparison, so compare through a function that has // to go through the type descriptor at run time. // //go:noinline func eq(x, y any) bool { return x == y } func main() { // main never mentions [2]a.K itself, so the only descriptors for it // are the ones in packages a and b. _ = a.Sink x, y := b.Get(), b.Get() if !reflect.TypeOf(x).Comparable() { panic("descriptor for [2]a.K has no equality function") } if !eq(x, y) { panic("[2]a.K values compare unequal") } }