blob: 0f3f0b1255592e2ded80693f489ebdafc33372e4 [file]
// 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")
}
}