github.com/traefik/yaegi@v0.15.1/_test/issue-1202.go (about)

     1  package main
     2  
     3  import "fmt"
     4  
     5  type foobar struct {
     6  	callback func(string) func()
     7  }
     8  
     9  func cb(text string) func() {
    10  	return func() {
    11  		fmt.Println(text)
    12  	}
    13  }
    14  
    15  func main() {
    16  	// These ways of invoking it all work...
    17  	cb("Hi from inline callback!")()
    18  
    19  	asVarTest1 := cb("Hi from asVarTest1 callback!")
    20  	asVarTest1()
    21  
    22  	asVarTest2 := cb
    23  	asVarTest2("Hi from asVarTest2 callback!")()
    24  
    25  	// But inside a struct panics in yaegi...
    26  	asStructField := &foobar{callback: cb}
    27  	asStructField.callback("Hi from struct field callback!")() // <--- panics here
    28  }
    29  
    30  // Output:
    31  // Hi from inline callback!
    32  // Hi from asVarTest1 callback!
    33  // Hi from asVarTest2 callback!
    34  // Hi from struct field callback!