43 lines
878 B
Go
43 lines
878 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type MyStruct[T any] struct {
|
|
value T
|
|
}
|
|
|
|
func (m *MyStruct[T]) Method() {
|
|
fmt.Println("In generic method")
|
|
genericFunc[T](m.value)
|
|
}
|
|
|
|
func genericFunc[T any](v T) {
|
|
fmt.Println("In generic function")
|
|
normalFunc()
|
|
}
|
|
|
|
func normalFunc() {
|
|
fmt.Println("In normal function")
|
|
panic("panic occurs here")
|
|
}
|
|
|
|
func main() {
|
|
m := &MyStruct[string]{value: "hello"}
|
|
m.Method()
|
|
}
|
|
|
|
//Expected:
|
|
// In generic method
|
|
// In generic function
|
|
// In normal function
|
|
// panic: panic occurs here
|
|
|
|
// [0x00C6D310 github.com/goplus/llgo/internal/runtime.Rethrow+0x2f, SP = 0x60]
|
|
// [0x00C6CF44 github.com/goplus/llgo/internal/runtime.Panic+0x2d, SP = 0x50]
|
|
// [0x00C69420 main.normalFunc+0xf, SP = 0xa8]
|
|
// [0x00C69564 main.genericFunc[string]+0x18, SP = 0x74]
|
|
// [0x00C694A8 main.(*MyStruct[string]).Method+0x1f, SP = 0x84]
|
|
// [0x00C6936C main+0x4, SP = 0x40]
|