| 
									
										
										
										
											2008-06-06 14:27:34 -07:00
										 |  |  | // $G $D/$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 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type	x2	struct { a,b,c int; d int; }; | 
					
						
							|  |  |  | var	g1	x2; | 
					
						
							|  |  |  | var	g2	struct { a,b,c int; d x2; }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func | 
					
						
							|  |  |  | main() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	var x int; | 
					
						
							|  |  |  | 	var s1 *x2; | 
					
						
							|  |  |  | 	var s2 *struct { a,b,c int; d x2; }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	s1 = &g1; | 
					
						
							|  |  |  | 	s2 = &g2; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	s1.a = 1; | 
					
						
							|  |  |  | 	s1.b = 2; | 
					
						
							|  |  |  | 	s1.c = 3; | 
					
						
							|  |  |  | 	s1.d = 5; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	s2.a = 7; | 
					
						
							|  |  |  | 	s2.b = 11; | 
					
						
							|  |  |  | 	s2.c = 13; | 
					
						
							|  |  |  | 	s2.d.a = 17; | 
					
						
							|  |  |  | 	s2.d.b = 19; | 
					
						
							|  |  |  | 	s2.d.c = 23; | 
					
						
							|  |  |  | 	s2.d.d = 20; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 	if(s2.d.c != 23) { panic(1); } | 
					
						
							|  |  |  | 	if(g2.d.c != 23) { panic(2); } | 
					
						
							| 
									
										
										
										
											2008-06-06 14:27:34 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	x =	s1.a + | 
					
						
							|  |  |  | 		s1.b + | 
					
						
							|  |  |  | 		s1.c + | 
					
						
							|  |  |  | 		s1.d + | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		s2.a + | 
					
						
							|  |  |  | 		s2.b + | 
					
						
							|  |  |  | 		s2.c + | 
					
						
							|  |  |  | 		s2.d.a + | 
					
						
							|  |  |  | 		s2.d.b + | 
					
						
							|  |  |  | 		s2.d.c + | 
					
						
							|  |  |  | 		s2.d.d; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-11 22:07:49 -07:00
										 |  |  | 	if(x != 121) { panic(x); } | 
					
						
							| 
									
										
										
										
											2008-06-06 14:27:34 -07:00
										 |  |  | } |