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