| 
									
										
										
										
											2012-02-16 23:51:04 -05:00
										 |  |  | // run | 
					
						
							| 
									
										
										
										
											2011-09-05 15:31:22 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-10 14:32:26 -07:00
										 |  |  | // Copyright 2011 The Go Authors. All rights reserved. | 
					
						
							| 
									
										
										
										
											2011-09-05 15:31:22 -04:00
										 |  |  | // 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 zero length structs. | 
					
						
							|  |  |  | // Used to not be evaluated. | 
					
						
							|  |  |  | // Issue 2232. | 
					
						
							| 
									
										
										
										
											2011-09-05 15:31:22 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | package main | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func recv(c chan interface{}) struct{} { | 
					
						
							|  |  |  | 	return (<-c).(struct{}) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var m = make(map[interface{}]int) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func recv1(c chan interface{}) { | 
					
						
							|  |  |  | 	defer rec() | 
					
						
							|  |  |  | 	m[(<-c).(struct{})] = 0 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func rec() { | 
					
						
							|  |  |  | 	recover() | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func main() { | 
					
						
							|  |  |  | 	c := make(chan interface{}) | 
					
						
							|  |  |  | 	go recv(c) | 
					
						
							|  |  |  | 	c <- struct{}{} | 
					
						
							|  |  |  | 	go recv1(c) | 
					
						
							|  |  |  | 	c <- struct{}{} | 
					
						
							|  |  |  | } |