Server : LiteSpeed System : Linux in-mum-web1333.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64 User : u141265441 ( 141265441) PHP Version : 8.4.3 Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail Directory : /proc/self/root/opt/golang/1.22.0/test/interface/embed3.dir/ |
// 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()
}