Rob Pike | 549a600 | 2009-04-18 17:21:00 -0700 | [diff] [blame] | 1 | // $G $F.go && $L $F.$A && ./$A.out |
| 2 | |
| 3 | // Copyright 2009 The Go Authors. All rights reserved. |
| 4 | // Use of this source code is governed by a BSD-style |
| 5 | // license that can be found in the LICENSE file. |
| 6 | |
| 7 | // Correct short declarations and redeclarations. |
| 8 | |
| 9 | package main |
| 10 | |
Russ Cox | f2b5a07 | 2011-01-19 23:09:00 -0500 | [diff] [blame] | 11 | func f1() int { return 1 } |
| 12 | func f2() (float32, int) { return 1, 2 } |
| 13 | func f3() (float32, int, string) { return 1, 2, "3" } |
Rob Pike | 549a600 | 2009-04-18 17:21:00 -0700 | [diff] [blame] | 14 | |
Rob Pike | f83f245 | 2009-04-19 21:12:13 -0700 | [diff] [blame] | 15 | func x() (s string) { |
Rob Pike | 4f61fc9 | 2010-09-04 10:36:13 +1000 | [diff] [blame] | 16 | a, b, s := f3() |
| 17 | _, _ = a, b |
Russ Cox | f2b5a07 | 2011-01-19 23:09:00 -0500 | [diff] [blame] | 18 | return // tests that result var is in scope for redeclaration |
Rob Pike | f83f245 | 2009-04-19 21:12:13 -0700 | [diff] [blame] | 19 | } |
| 20 | |
Rob Pike | 549a600 | 2009-04-18 17:21:00 -0700 | [diff] [blame] | 21 | func main() { |
Rob Pike | 4f61fc9 | 2010-09-04 10:36:13 +1000 | [diff] [blame] | 22 | i, f, s := f3() |
Russ Cox | f2b5a07 | 2011-01-19 23:09:00 -0500 | [diff] [blame] | 23 | j, f := f2() // redeclare f |
Rob Pike | 4f61fc9 | 2010-09-04 10:36:13 +1000 | [diff] [blame] | 24 | k := f1() |
| 25 | m, g, s := f3() |
| 26 | m, h, s := f3() |
Rob Pike | 549a600 | 2009-04-18 17:21:00 -0700 | [diff] [blame] | 27 | { |
| 28 | // new block should be ok. |
Rob Pike | 4f61fc9 | 2010-09-04 10:36:13 +1000 | [diff] [blame] | 29 | i, f, s := f3() |
Russ Cox | f2b5a07 | 2011-01-19 23:09:00 -0500 | [diff] [blame] | 30 | j, f := f2() // redeclare f |
Rob Pike | 4f61fc9 | 2010-09-04 10:36:13 +1000 | [diff] [blame] | 31 | k := f1() |
| 32 | m, g, s := f3() |
| 33 | m, h, s := f3() |
| 34 | _, _, _, _, _, _, _, _, _ = i, f, s, j, k, m, g, s, h |
Rob Pike | 549a600 | 2009-04-18 17:21:00 -0700 | [diff] [blame] | 35 | } |
Rob Pike | f83f245 | 2009-04-19 21:12:13 -0700 | [diff] [blame] | 36 | if x() != "3" { |
Rob Pike | 4f61fc9 | 2010-09-04 10:36:13 +1000 | [diff] [blame] | 37 | println("x() failed") |
Rob Pike | f83f245 | 2009-04-19 21:12:13 -0700 | [diff] [blame] | 38 | } |
Rob Pike | 4f61fc9 | 2010-09-04 10:36:13 +1000 | [diff] [blame] | 39 | _, _, _, _, _, _, _, _, _ = i, f, s, j, k, m, g, s, h |
Rob Pike | 549a600 | 2009-04-18 17:21:00 -0700 | [diff] [blame] | 40 | } |