|  | // run | 
|  |  | 
|  | // Copyright 2012 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. | 
|  |  | 
|  | // Issue 3824. | 
|  | // Method calls are ignored when deciding initialization | 
|  | // order. | 
|  |  | 
|  | package main | 
|  |  | 
|  | type T int | 
|  |  | 
|  | func (r T) Method1() int { return a } | 
|  | func (r T) Method2() int { return b } | 
|  |  | 
|  | // dummy1 and dummy2 must be initialized after a and b. | 
|  | var dummy1 = T(0).Method1() | 
|  | var dummy2 = T.Method2(0) | 
|  |  | 
|  | // Use a function call to force generating code. | 
|  | var a = identity(1) | 
|  | var b = identity(2) | 
|  |  | 
|  | func identity(a int) int { return a } | 
|  |  | 
|  | func main() { | 
|  | if dummy1 != 1 { | 
|  | panic("dummy1 != 1") | 
|  | } | 
|  | if dummy2 != 2 { | 
|  | panic("dummy2 != 2") | 
|  | } | 
|  | } | 
|  |  |