1// run
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// Test correct short declarations and redeclarations.
8
9package main
10
11func f1() int                    { return 1 }
12func f2() (float32, int)         { return 1, 2 }
13func f3() (float32, int, string) { return 1, 2, "3" }
14
15func x() (s string) {
16	a, b, s := f3()
17	_, _ = a, b
18	return // tests that result var is in scope for redeclaration
19}
20
21func main() {
22	i, f, s := f3()
23	j, f := f2() // redeclare f
24	k := f1()
25	m, g, s := f3()
26	m, h, s := f3()
27	{
28		// new block should be ok.
29		i, f, s := f3()
30		j, f := f2() // redeclare f
31		k := f1()
32		m, g, s := f3()
33		m, h, s := f3()
34		_, _, _, _, _, _, _, _, _ = i, f, s, j, k, m, g, s, h
35	}
36	if y := x(); y != "3" {
37		println("x() failed", y)
38		panic("fail")
39	}
40	_, _, _, _, _, _, _, _, _ = i, f, s, j, k, m, g, s, h
41}
42