| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | // $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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var	a,b,c,d,e,f,g,h,i int; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | printit() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 	print(a,b,c,d,e,f,g,h,i,"\n"); | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | testit() bool | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if a+b+c+d+e+f+g+h+i != 45 { | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 		print("sum does not add to 45\n"); | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 		printit(); | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 		panic(); | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 	} | 
					
						
							|  |  |  | 	return	a == 1 && | 
					
						
							|  |  |  | 		b == 2 && | 
					
						
							|  |  |  | 		c == 3 && | 
					
						
							|  |  |  | 		d == 4 && | 
					
						
							|  |  |  | 		e == 5 && | 
					
						
							|  |  |  | 		f == 6 && | 
					
						
							|  |  |  | 		g == 7 && | 
					
						
							|  |  |  | 		h == 8 && | 
					
						
							|  |  |  | 		i == 9; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-03 16:48:59 -07:00
										 |  |  | func | 
					
						
							|  |  |  | swap(x, y int) (u, v int) { | 
					
						
							|  |  |  | 	return y, x | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | main() | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | { | 
					
						
							|  |  |  | 	a = 1; | 
					
						
							|  |  |  | 	b = 2; | 
					
						
							|  |  |  | 	c = 3; | 
					
						
							|  |  |  | 	d = 4; | 
					
						
							|  |  |  | 	e = 5; | 
					
						
							|  |  |  | 	f = 6; | 
					
						
							|  |  |  | 	g = 7; | 
					
						
							|  |  |  | 	h = 8; | 
					
						
							|  |  |  | 	i = 9; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 	if !testit() { panic("init val\n"); } | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	for z:=0; z<100; z++ { | 
					
						
							|  |  |  | 		a,b,c,d, e,f,g,h,i = b,c,d,a, i,e,f,g,h; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		if testit() { | 
					
						
							|  |  |  | 			if z == 19 { | 
					
						
							|  |  |  | 				break; | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 			print("on ", z, "th iteration\n"); | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 			printit(); | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 			panic(); | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if !testit() { | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 		print("final val\n"); | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 		printit(); | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 		panic(); | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-07-03 16:48:59 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	a, b = swap(1, 2); | 
					
						
							|  |  |  | 	if a != 2 || b != 1 { | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 		panic("bad swap"); | 
					
						
							| 
									
										
										
										
											2008-07-03 16:48:59 -07:00
										 |  |  | 	} | 
					
						
							|  |  |  | //BUG	a, b = swap(swap(a, b)); | 
					
						
							|  |  |  | //	if a != 2 || b != 1 { | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | //		panic("bad swap"); | 
					
						
							| 
									
										
										
										
											2008-07-03 16:48:59 -07:00
										 |  |  | //	} | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | } |