modernc.org/gc@v1.0.1-0.20240304020402-f0dba7c97c2b/testdata/errchk/test/decl.go (about) 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 }