// Copyright 2012 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 a

type T struct{ A, B int }

type A []int

type M map[int]int

func F1() int {
	if (T{1, 2}) == (T{3, 4}) {
		return 1
	}
	return 0
}

func F2() int {
	if (M{1: 2}) == nil {
		return 1
	}
	return 0
}

func F3() int {
	if nil == (A{}) {
		return 1
	}
	return 0
}

func F4() int {
	if a := (A{}); a == nil {
		return 1
	}
	return 0
}

func F5() int {
	for k, v := range (M{1: 2}) {
		return v - k
	}
	return 0
}

func F6() int {
	switch a := (T{1, 1}); a == (T{1, 2}) {
	default:
		return 1
	}
	return 0
}

func F7() int {
	for m := (M{}); len(m) < (T{1, 2}).A; m[1] = (A{1})[0] {
		return 1
	}
	return 0
}

func F8() int {
	if a := (&T{1, 1}); a != nil {
		return 1
	}
	return 0
}

func F9() int {
	var a *T
	if a = (&T{1, 1}); a != nil {
		return 1
	}
	return 0
}
