github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug446.go (about)

     1  // run
     2  
     3  // Copyright 2012 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  // Issue 3824.
     8  // Method calls are ignored when deciding initialization
     9  // order.
    10  
    11  package main
    12  
    13  type T int
    14  
    15  func (r T) Method1() int { return a }
    16  func (r T) Method2() int { return b }
    17  
    18  // dummy1 and dummy2 must be initialized after a and b.
    19  var dummy1 = T(0).Method1()
    20  var dummy2 = T.Method2(0)
    21  
    22  // Use a function call to force generating code.
    23  var a = identity(1)
    24  var b = identity(2)
    25  
    26  func identity(a int) int { return a }
    27  
    28  func main() {
    29  	if dummy1 != 1 {
    30  		panic("dummy1 != 1")
    31  	}
    32  	if dummy2 != 2 {
    33  		panic("dummy2 != 2")
    34  	}
    35  }
    36