package main

import (
	"fmt"
	"go/ast"
	"go/parser"
	"go/token"
	"go/types"
	"log"
)

const src = `
//!+input
package p

func Square[N ~int|~float64](n N) N {
	return n*n
}
//!-input
`

//!+show
func ShowImplicit(pkg *types.Package) {
	Square := pkg.Scope().Lookup("Square").Type().(*types.Signature)
	N := Square.TypeParams().At(0)
	constraint := N.Constraint().(*types.Interface)
	fmt.Println(constraint)
	fmt.Println("IsImplicit:", constraint.IsImplicit())
}

//!-show

/*
//!+output
~int|~float64
IsImplicit: true
//!-output
*/

func main() {
	fset := token.NewFileSet()
	f, err := parser.ParseFile(fset, "p.go", src, 0)
	if err != nil {
		log.Fatal(err)
	}
	conf := types.Config{}
	pkg, err := conf.Check("typesets", fset, []*ast.File{f}, nil)
	if err != nil {
		log.Fatal(err)
	}
	ShowImplicit(pkg)
}
