]> Cypherpunks repositories - gostls13.git/commitdiff
gc: handle go print() and go println()
authorStephen Ma <stephenm@golang.org>
Mon, 13 Jun 2011 12:50:51 +0000 (22:50 +1000)
committerStephen Ma <stephenm@golang.org>
Mon, 13 Jun 2011 12:50:51 +0000 (22:50 +1000)
Fixes #1952.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4611041

src/cmd/gc/walk.c
test/golden.out
test/goprint.go [new file with mode: 0644]

index 65a504bff5f338b57af9054411854bd3e57a4b82..4d06179eb864ff28090eec5bc2cc2bba3f570905 100644 (file)
@@ -243,7 +243,16 @@ walkstmt(Node **np)
                break;
 
        case OPROC:
-               walkexpr(&n->left, &n->ninit);
+               switch(n->left->op) {
+               case OPRINT:
+               case OPRINTN:
+                       walkexprlist(n->left->list, &n->ninit);
+                       n->left = walkprint(n->left, &n->ninit, 1);
+                       break;
+               default:
+                       walkexpr(&n->left, &n->ninit);
+                       break;
+               }
                break;
 
        case ORETURN:
index 4400e41dd147545e9fdac29e0aaaf37164e63023..655ceda5653d6e91adbfcd0938e8fea3e45dc5e8 100644 (file)
@@ -21,6 +21,9 @@ panic: runtime error: hash of unhashable type []int
 printing: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
 42 true false true +1.500000e+000 world 0x0 [0/0]0x0 0x0 0x0 255
 
+=========== ./goprint.go
+42 true false true +1.500000e+000 world 0x0 [0/0]0x0 0x0 0x0 255
+
 =========== ./helloworld.go
 hello, world
 
diff --git a/test/goprint.go b/test/goprint.go
new file mode 100644 (file)
index 0000000..c0e34c7
--- /dev/null
@@ -0,0 +1,14 @@
+// $G $D/$F.go && $L $F.$A && ./$A.out
+
+// Copyright 2011 The Go Authors.  All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+import "time"
+
+func main() {
+       go println(42, true, false, true, 1.5, "world", (chan int)(nil), []int(nil), (map[string]int)(nil), (func())(nil), byte(255))
+       time.Sleep(1e6)
+}