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