blob: 8913846d503358a866a7fcd21ebe051ec68386d3 [file] [log] [blame] [edit]
//go:build go1.26
package a
// Test of induction through interface assignments. (Applies only to
// interface methods declared in files that use at least Go 1.26.)
import "fmt"
type myLogger int
func (myLogger) Logf(format string, args ...any) { // want Logf:"printfWrapper"
print(fmt.Sprintf(format, args...))
}
// Logger is assigned from myLogger.
type Logger interface {
Logf(format string, args ...any) // want Logf:"printfWrapper"
}
var _ Logger = myLogger(0) // establishes that Logger wraps myLogger
func _(log Logger) {
log.Logf("%s", 123) // want `\(a.Logger\).Logf format %s has arg 123 of wrong type int`
}
// Logger2 is not assigned from myLogger.
type Logger2 interface {
Logf(format string, args ...any)
}
func _(log Logger2) {
log.Logf("%s", 123) // nope
}