From: Cuong Manh Le Date: Thu, 14 Nov 2019 03:00:33 +0000 (+0700) Subject: cmd/compile: allow print/println(f()) where f() is multi-value X-Git-Tag: go1.15beta1~1136 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=af686da46ffeb463c113607bac3ec5e8f53acaf9;p=gostls13.git cmd/compile: allow print/println(f()) where f() is multi-value Fixes #35576 Change-Id: Ia128f412120069e9f8813e9e910e62644f950bfb Reviewed-on: https://go-review.googlesource.com/c/go/+/207118 Run-TryBot: Cuong Manh Le TryBot-Result: Gobot Gobot Reviewed-by: Matthew Dempsky --- diff --git a/src/cmd/compile/internal/gc/typecheck.go b/src/cmd/compile/internal/gc/typecheck.go index ae2e16760d..2ca7f2dbe4 100644 --- a/src/cmd/compile/internal/gc/typecheck.go +++ b/src/cmd/compile/internal/gc/typecheck.go @@ -1805,7 +1805,7 @@ func typecheck1(n *Node, top int) (res *Node) { case OPRINT, OPRINTN: ok |= ctxStmt - typecheckslice(n.List.Slice(), ctxExpr) + typecheckargs(n) ls := n.List.Slice() for i1, n1 := range ls { // Special case for print: int constant is int64, not int. diff --git a/test/fixedbugs/issue35576.go b/test/fixedbugs/issue35576.go new file mode 100644 index 0000000000..8228555c9a --- /dev/null +++ b/test/fixedbugs/issue35576.go @@ -0,0 +1,16 @@ +// run + +// Copyright 2019 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. + +// Check print/println(f()) is allowed where f() is multi-value. + +package main + +func f() (int16, float64, string) { return -42, 42.0, "x" } + +func main() { + print(f()) + println(f()) +} diff --git a/test/fixedbugs/issue35576.out b/test/fixedbugs/issue35576.out new file mode 100644 index 0000000000..2aefe3edc5 --- /dev/null +++ b/test/fixedbugs/issue35576.out @@ -0,0 +1 @@ +-42+4.200000e+001x-42 +4.200000e+001 x