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

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;	
	}
	assertequal(count, 0, "if false one");

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

	count = 0;
	if one := 1; {
		count = count + one;	
	}
	assertequal(count, 1, "if empty 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 := 7;	
	} else
		count = count - t;
	assertequal(count, -1, "if else false var");

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