Home | History | Annotate | Download | only in test
      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 
      9 package main
     10 
     11 func f1() int                    { return 1 }
     12 func f2() (float32, int)         { return 1, 2 }
     13 func f3() (float32, int, string) { return 1, 2, "3" }
     14 
     15 func x() (s string) {
     16 	a, b, s := f3()
     17 	_, _ = a, b
     18 	return // tests that result var is in scope for redeclaration
     19 }
     20 
     21 func 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