// $G $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; true {
		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");
}
