// run

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

func assertequal(is, shouldbe int, msg string) {
	if is != shouldbe {
		print("assertion fail", msg, "\n")
		panic(1)
	}
}

func main() {
	i5 := 5
	i7 := 7

	var count int

	count = 0
	if true {
		count = count + 1
	}
	assertequal(count, 1, "if true")

	count = 0
	if false {
		count = count + 1
	}
	assertequal(count, 0, "if false")

	count = 0
	if one := 1; true {
		count = count + one
	}
	assertequal(count, 1, "if true one")

	count = 0
	if one := 1; false {
		count = count + 1
		_ = one
	}
	assertequal(count, 0, "if false one")

	count = 0
	if i5 < i7 {
		count = count + 1
	}
	assertequal(count, 1, "if cond")

	count = 0
	if true {
		count = count + 1
	} else {
		count = count - 1
	}
	assertequal(count, 1, "if else true")

	count = 0
	if false {
		count = count + 1
	} else {
		count = count - 1
	}
	assertequal(count, -1, "if else false")

	count = 0
	if t := 1; false {
		count = count + 1
		_ = t
		t := 7
		_ = t
	} else {
		count = count - t
	}
	assertequal(count, -1, "if else false var")

	count = 0
	t := 1
	if false {
		count = count + 1
		t := 7
		_ = t
	} else {
		count = count - t
	}
	_ = t
	assertequal(count, -1, "if else false var outside")
}
