| 
									
										
										
										
											2012-02-16 23:51:04 -05:00
										 |  |  | // run | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | // 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-02-24 11:48:19 +11:00
										 |  |  | // Test simultaneous assignment. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | var a, b, c, d, e, f, g, h, i int | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | func printit() { | 
					
						
							|  |  |  | 	println(a, b, c, d, e, f, g, h, i) | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | func testit(permuteok bool) bool { | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 	if a+b+c+d+e+f+g+h+i != 45 { | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 		print("sum does not add to 45\n") | 
					
						
							|  |  |  | 		printit() | 
					
						
							|  |  |  | 		return false | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 	return permuteok || | 
					
						
							| 
									
										
										
										
											2009-08-07 16:47:54 -07:00
										 |  |  | 		a == 1 && | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 			b == 2 && | 
					
						
							|  |  |  | 			c == 3 && | 
					
						
							|  |  |  | 			d == 4 && | 
					
						
							|  |  |  | 			e == 5 && | 
					
						
							|  |  |  | 			f == 6 && | 
					
						
							|  |  |  | 			g == 7 && | 
					
						
							|  |  |  | 			h == 8 && | 
					
						
							|  |  |  | 			i == 9 | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | func swap(x, y int) (u, v int) { | 
					
						
							| 
									
										
										
										
											2008-07-03 16:48:59 -07:00
										 |  |  | 	return y, x | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | func main() { | 
					
						
							|  |  |  | 	a = 1 | 
					
						
							|  |  |  | 	b = 2 | 
					
						
							|  |  |  | 	c = 3 | 
					
						
							|  |  |  | 	d = 4 | 
					
						
							|  |  |  | 	e = 5 | 
					
						
							|  |  |  | 	f = 6 | 
					
						
							|  |  |  | 	g = 7 | 
					
						
							|  |  |  | 	h = 8 | 
					
						
							|  |  |  | 	i = 9 | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 	if !testit(false) { | 
					
						
							|  |  |  | 		panic("init val\n") | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -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 | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-07 16:47:54 -07:00
										 |  |  | 		if !testit(z%20 != 19) { | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 			print("on ", z, "th iteration\n") | 
					
						
							|  |  |  | 			printit() | 
					
						
							|  |  |  | 			panic("fail") | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-07 16:47:54 -07:00
										 |  |  | 	if !testit(false) { | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 		print("final val\n") | 
					
						
							|  |  |  | 		printit() | 
					
						
							|  |  |  | 		panic("fail") | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-07-03 16:48:59 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 	a, b = swap(1, 2) | 
					
						
							| 
									
										
										
										
											2008-07-03 16:48:59 -07:00
										 |  |  | 	if a != 2 || b != 1 { | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 		panic("bad swap") | 
					
						
							| 
									
										
										
										
											2008-07-03 16:48:59 -07:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2009-08-07 16:47:54 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 	a, b = swap(swap(a, b)) | 
					
						
							| 
									
										
										
										
											2009-08-07 16:47:54 -07:00
										 |  |  | 	if a != 2 || b != 1 { | 
					
						
							| 
									
										
										
										
											2010-03-30 10:34:57 -07:00
										 |  |  | 		panic("bad swap") | 
					
						
							| 
									
										
										
										
											2009-08-07 16:47:54 -07:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2008-06-26 16:21:51 -07:00
										 |  |  | } |