Initial commit: Go 1.23 release state
This commit is contained in:
78
test/interface/embed3.dir/embed1.go
Normal file
78
test/interface/embed3.dir/embed1.go
Normal file
@@ -0,0 +1,78 @@
|
||||
// Copyright 2019 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 "./embed0"
|
||||
|
||||
type X1 struct{}
|
||||
|
||||
func (X1) Foo() {}
|
||||
|
||||
type X2 struct{}
|
||||
|
||||
func (X2) foo() {}
|
||||
|
||||
type X3 struct{}
|
||||
|
||||
func (X3) foo(int) {}
|
||||
|
||||
type X4 struct{ p.M1 }
|
||||
|
||||
type X5 struct{ p.M1 }
|
||||
|
||||
func (X5) foo(int) {}
|
||||
|
||||
type X6 struct{ p.M2 }
|
||||
|
||||
type X7 struct{ p.M2 }
|
||||
|
||||
func (X7) foo() {}
|
||||
|
||||
type X8 struct{ p.M2 }
|
||||
|
||||
func (X8) foo(int) {}
|
||||
|
||||
func main() {
|
||||
var i1 interface{} = X1{}
|
||||
check(func() { _ = i1.(p.I1) }, "interface conversion: main.X1 is not p.I1: missing method Foo")
|
||||
|
||||
var i2 interface{} = X2{}
|
||||
check(func() { _ = i2.(p.I2) }, "interface conversion: main.X2 is not p.I2: missing method foo")
|
||||
|
||||
var i3 interface{} = X3{}
|
||||
check(func() { _ = i3.(p.I2) }, "interface conversion: main.X3 is not p.I2: missing method foo")
|
||||
|
||||
var i4 interface{} = X4{}
|
||||
check(func() { _ = i4.(p.I2) }, "interface conversion: main.X4 is not p.I2: missing method foo")
|
||||
|
||||
var i5 interface{} = X5{}
|
||||
check(func() { _ = i5.(p.I2) }, "interface conversion: main.X5 is not p.I2: missing method foo")
|
||||
|
||||
var i6 interface{} = X6{}
|
||||
check(func() { _ = i6.(p.I2) }, "")
|
||||
|
||||
var i7 interface{} = X7{}
|
||||
check(func() { _ = i7.(p.I2) }, "")
|
||||
|
||||
var i8 interface{} = X8{}
|
||||
check(func() { _ = i8.(p.I2) }, "")
|
||||
}
|
||||
|
||||
func check(f func(), msg string) {
|
||||
defer func() {
|
||||
v := recover()
|
||||
if v == nil {
|
||||
if msg == "" {
|
||||
return
|
||||
}
|
||||
panic("did not panic")
|
||||
}
|
||||
got := v.(error).Error()
|
||||
if msg != got {
|
||||
panic("want '" + msg + "', got '" + got + "'")
|
||||
}
|
||||
}()
|
||||
f()
|
||||
}
|
||||
Reference in New Issue
Block a user