// run -gcflags=-G=3

// Copyright 2021 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.

// Smoke test for constraint literals with elided interface
// per issue #48424.

package main

func identity[T int](x T) T {
	return x
}

func min[T int|string](x, y T) T {
	if x < y {
		return x
	}
	return y
}

func max[T ~float64](x, y T) T {
	if x > y {
		return x
	}
	return y
}

func main() {
	if identity(1) != 1 {
		panic("identity(1) failed")
	}

	if min(2, 3) != 2 {
		panic("min(2, 3) failed")
	}

	if min("foo", "bar") != "bar" {
		panic(`min("foo", "bar") failed`)
	}

	if max(2, 3) != 3 {
		panic("max(2, 3) failed")
	}
}

// Some random type parameter lists with elided interfaces.

type (
	_ [T struct{}] struct{}
	_ [M map[K]V, K comparable, V any] struct{}
	_ [_ interface{}|int] struct{}
)
