diff options
author | Russ Cox <rsc@golang.org> | 2010-03-30 10:53:16 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-03-30 10:53:16 -0700 |
commit | a8903e05ec96c2b699bdf6fcb75cc90bb48fe0cc (patch) | |
tree | 9860048644daf94de60dd1bc4f124d147b8a6f95 /src/cmd/gc/walk.c | |
parent | a4d61cffa679cee2c85de18f115d754727a127cd (diff) | |
download | golang-a8903e05ec96c2b699bdf6fcb75cc90bb48fe0cc.tar.gz |
gc: add panic and recover (still unimplemented in runtime)
main semantic change is to enforce single argument to panic.
runtime: change to 1-argument panic.
use String method on argument if it has one.
R=ken2, r
CC=golang-dev
http://codereview.appspot.com/812043
Diffstat (limited to 'src/cmd/gc/walk.c')
-rw-r--r-- | src/cmd/gc/walk.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index b64d58e7f..1d5db4c04 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -425,7 +425,6 @@ walkstmt(Node **np) switch(n->left->op) { case OPRINT: case OPRINTN: - case OPANIC: walkexprlist(n->left->list, &n->ninit); n->left = walkprint(n->left, &n->ninit, 1); break; @@ -623,11 +622,18 @@ walkexpr(Node **np, NodeList **init) case OPRINT: case OPRINTN: - case OPANIC: walkexprlist(n->list, init); n = walkprint(n, init, 0); goto ret; + case OPANIC: + n = mkcall("panic", T, init, n->left); + goto ret; + + case ORECOVER: + n = mkcall("recover", n->type, init); + goto ret; + case OLITERAL: n->addable = 1; goto ret; |