// $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; | |
} |