From 7147983e3c342399afc885789dc3c57989910b50 Mon Sep 17 00:00:00 2001 From: Petar Dambovaliev Date: Wed, 4 Dec 2024 10:08:25 +0100 Subject: [PATCH] fix: impl empty statement exec (#3252) Implement empty statement in the runtime exec. Closes https://github.com/gnolang/gno/issues/3202 --- gnovm/pkg/gnolang/go2gno.go | 2 ++ gnovm/pkg/gnolang/op_exec.go | 1 + gnovm/tests/files/goto_empty_stmt.gno | 10 ++++++++++ 3 files changed, 13 insertions(+) create mode 100644 gnovm/tests/files/goto_empty_stmt.gno diff --git a/gnovm/pkg/gnolang/go2gno.go b/gnovm/pkg/gnolang/go2gno.go index 99e051f7913..338efa20fcc 100644 --- a/gnovm/pkg/gnolang/go2gno.go +++ b/gnovm/pkg/gnolang/go2gno.go @@ -471,6 +471,8 @@ func Go2Gno(fs *token.FileSet, gon ast.Node) (n Node) { PkgName: pkgName, Decls: decls, } + case *ast.EmptyStmt: + return &EmptyStmt{} default: panic(fmt.Sprintf("unknown Go type %v: %s\n", reflect.TypeOf(gon), diff --git a/gnovm/pkg/gnolang/op_exec.go b/gnovm/pkg/gnolang/op_exec.go index 900b5f8e9bb..5f71ffefa0c 100644 --- a/gnovm/pkg/gnolang/op_exec.go +++ b/gnovm/pkg/gnolang/op_exec.go @@ -769,6 +769,7 @@ EXEC_SWITCH: } m.PushOp(OpBody) m.PushStmt(b.GetBodyStmt()) + case *EmptyStmt: default: panic(fmt.Sprintf("unexpected statement %#v", s)) } diff --git a/gnovm/tests/files/goto_empty_stmt.gno b/gnovm/tests/files/goto_empty_stmt.gno new file mode 100644 index 00000000000..fd939de1045 --- /dev/null +++ b/gnovm/tests/files/goto_empty_stmt.gno @@ -0,0 +1,10 @@ +package main + +func main() { + println("Hi") + goto done +done: +} + +// Output: +// Hi \ No newline at end of file