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