// $G $D/$F.go && $L $F.$A && ./$A.out // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package main import _ "fmt" var call string type T struct { _, _, _ int; } func (T) _() { } func (T) _() { } const ( c0 = iota; _; _; _; c4; ) var ints = []string { "1", "2", "3" } func f() (int, int) { call += "f"; return 1,2 } func g() (float, float) { call += "g"; return 3,4 } func h(_ int, _ float) { } func i() int { call += "i"; return 23; } func main() { _, _ = f(); a, _ := f(); if a != 1 {panic(a)} b, _ := g(); if b != 3 {panic(b)} _, a = f(); if a != 2 {panic(a)} _, b = g(); if b != 4 {panic(b)} _ = i(); if call != "ffgfgi" {panic(call)} if c4 != 4 {panic(c4)} out := ""; for _, s := range ints { out += s; } if out != "123" {panic(out)} sum := 0; for s, _ := range ints { sum += s; } if sum != 3 {panic(sum)} h(a,b); } // useless but legal var _ int = 1; var _ = 2; var _, _ = 3, 4; const _ = 3; const _, _ = 4, 5; type _ int; func _() { panic("oops") } func ff() { var _ int = 1; }