summaryrefslogtreecommitdiff
path: root/src/cmd/gc/walk.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-03-30 10:53:16 -0700
committerRuss Cox <rsc@golang.org>2010-03-30 10:53:16 -0700
commita8903e05ec96c2b699bdf6fcb75cc90bb48fe0cc (patch)
tree9860048644daf94de60dd1bc4f124d147b8a6f95 /src/cmd/gc/walk.c
parenta4d61cffa679cee2c85de18f115d754727a127cd (diff)
downloadgolang-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.c10
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;