mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-05 11:37:46 +00:00
compiler: implement deferring of interface calls
This commit is contained in:
Vendored
+11
@@ -8,6 +8,14 @@ func (t Thing) String() string {
|
||||
return t.name
|
||||
}
|
||||
|
||||
func (t Thing) Print(arg string) {
|
||||
println("Thing.Print:", t.name, "arg:", arg)
|
||||
}
|
||||
|
||||
type Printer interface {
|
||||
Print(string)
|
||||
}
|
||||
|
||||
func main() {
|
||||
thing := &Thing{"foo"}
|
||||
|
||||
@@ -49,6 +57,9 @@ func testDefer() {
|
||||
defer deferred("...run as defer", i)
|
||||
i++
|
||||
|
||||
var t Printer = &Thing{"foo"}
|
||||
defer t.Print("bar")
|
||||
|
||||
println("deferring...")
|
||||
}
|
||||
|
||||
|
||||
Vendored
+1
@@ -1,5 +1,6 @@
|
||||
hello from function pointer: 5
|
||||
deferring...
|
||||
Thing.Print: foo arg: bar
|
||||
...run as defer 3
|
||||
...run closure deferred: 4
|
||||
...run as defer 1
|
||||
|
||||
Reference in New Issue
Block a user