| // $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; | |
| } | |
| var _ = i(); | |
| func main() { | |
| if call != "i" {panic("init did not run")} | |
| call = ""; | |
| _, _ = 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; | |
| } |