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  }