github.com/varialus/godfly@v0.0.0-20130904042352-1934f9f095ab/test/sinit.go (about)

     1  // $G -S $D/$F.go | egrep initdone >/dev/null && echo BUG sinit || true
     2  
     3  // NOTE: This test is not run by 'run.go' and so not run by all.bash.
     4  // To run this test you must use the ./run shell script.
     5  
     6  // Copyright 2010 The Go Authors.  All rights reserved.
     7  // Use of this source code is governed by a BSD-style
     8  // license that can be found in the LICENSE file.
     9  
    10  // Test that many initializations can be done at link time and
    11  // generate no executable init functions.
    12  
    13  package p
    14  
    15  // Should be no init func in the assembly.
    16  // All these initializations should be done at link time.
    17  
    18  type S struct{ a, b, c int }
    19  type SS struct{ aa, bb, cc S }
    20  type SA struct{ a, b, c [3]int }
    21  type SC struct{ a, b, c []int }
    22  
    23  var (
    24  	zero                      = 2
    25  	one                       = 1
    26  	pi                        = 3.14
    27  	slice                     = []byte{1, 2, 3}
    28  	sliceInt                  = []int{1, 2, 3}
    29  	hello                     = "hello, world"
    30  	bytes                     = []byte("hello, world")
    31  	four, five                = 4, 5
    32  	x, y                      = 0.1, "hello"
    33  	nilslice   []byte         = nil
    34  	nilmap     map[string]int = nil
    35  	nilfunc    func()         = nil
    36  	nilchan    chan int       = nil
    37  	nilptr     *byte          = nil
    38  )
    39  
    40  var a = [3]int{1001, 1002, 1003}
    41  var s = S{1101, 1102, 1103}
    42  var c = []int{1201, 1202, 1203}
    43  
    44  var aa = [3][3]int{[3]int{2001, 2002, 2003}, [3]int{2004, 2005, 2006}, [3]int{2007, 2008, 2009}}
    45  var as = [3]S{S{2101, 2102, 2103}, S{2104, 2105, 2106}, S{2107, 2108, 2109}}
    46  var ac = [3][]int{[]int{2201, 2202, 2203}, []int{2204, 2205, 2206}, []int{2207, 2208, 2209}}
    47  
    48  var sa = SA{[3]int{3001, 3002, 3003}, [3]int{3004, 3005, 3006}, [3]int{3007, 3008, 3009}}
    49  var ss = SS{S{3101, 3102, 3103}, S{3104, 3105, 3106}, S{3107, 3108, 3109}}
    50  var sc = SC{[]int{3201, 3202, 3203}, []int{3204, 3205, 3206}, []int{3207, 3208, 3209}}
    51  
    52  var ca = [][3]int{[3]int{4001, 4002, 4003}, [3]int{4004, 4005, 4006}, [3]int{4007, 4008, 4009}}
    53  var cs = []S{S{4101, 4102, 4103}, S{4104, 4105, 4106}, S{4107, 4108, 4109}}
    54  var cc = [][]int{[]int{4201, 4202, 4203}, []int{4204, 4205, 4206}, []int{4207, 4208, 4209}}
    55  
    56  var answers = [...]int{
    57  	// s
    58  	1101, 1102, 1103,
    59  
    60  	// ss
    61  	3101, 3102, 3103,
    62  	3104, 3105, 3106,
    63  	3107, 3108, 3109,
    64  
    65  	// [0]
    66  	1001, 1201, 1301,
    67  	2101, 2102, 2103,
    68  	4101, 4102, 4103,
    69  	5101, 5102, 5103,
    70  	3001, 3004, 3007,
    71  	3201, 3204, 3207,
    72  	3301, 3304, 3307,
    73  
    74  	// [0][j]
    75  	2001, 2201, 2301, 4001, 4201, 4301, 5001, 5201, 5301,
    76  	2002, 2202, 2302, 4002, 4202, 4302, 5002, 5202, 5302,
    77  	2003, 2203, 2303, 4003, 4203, 4303, 5003, 5203, 5303,
    78  
    79  	// [1]
    80  	1002, 1202, 1302,
    81  	2104, 2105, 2106,
    82  	4104, 4105, 4106,
    83  	5104, 5105, 5106,
    84  	3002, 3005, 3008,
    85  	3202, 3205, 3208,
    86  	3302, 3305, 3308,
    87  
    88  	// [1][j]
    89  	2004, 2204, 2304, 4004, 4204, 4304, 5004, 5204, 5304,
    90  	2005, 2205, 2305, 4005, 4205, 4305, 5005, 5205, 5305,
    91  	2006, 2206, 2306, 4006, 4206, 4306, 5006, 5206, 5306,
    92  
    93  	// [2]
    94  	1003, 1203, 1303,
    95  	2107, 2108, 2109,
    96  	4107, 4108, 4109,
    97  	5107, 5108, 5109,
    98  	3003, 3006, 3009,
    99  	3203, 3206, 3209,
   100  	3303, 3306, 3309,
   101  
   102  	// [2][j]
   103  	2007, 2207, 2307, 4007, 4207, 4307, 5007, 5207, 5307,
   104  	2008, 2208, 2308, 4008, 4208, 4308, 5008, 5208, 5308,
   105  	2009, 2209, 2309, 4009, 4209, 4309, 5009, 5209, 5309,
   106  }
   107  
   108  var (
   109  	copy_zero = zero
   110  	copy_one = one
   111  	copy_pi = pi
   112  	copy_slice = slice
   113  	copy_sliceInt = sliceInt
   114  	copy_hello = hello
   115  	copy_bytes = bytes
   116  	copy_four, copy_five = four, five
   117  	copy_x, copy_y = x, y
   118  	copy_nilslice = nilslice
   119  	copy_nilmap = nilmap
   120  	copy_nilfunc = nilfunc
   121  	copy_nilchan = nilchan
   122  	copy_nilptr = nilptr
   123  )
   124  
   125  var copy_a = a
   126  var copy_s = s
   127  var copy_c = c
   128  
   129  var copy_aa = aa
   130  var copy_as = as
   131  var copy_ac = ac
   132  
   133  var copy_sa = sa
   134  var copy_ss = ss
   135  var copy_sc = sc
   136  
   137  var copy_ca = ca
   138  var copy_cs = cs
   139  var copy_cc = cc
   140  
   141  var copy_answers = answers
   142  
   143  var bx bool
   144  var b0 = false
   145  var b1 = true
   146  
   147  var fx float32
   148  var f0 = float32(0)
   149  var f1 = float32(1)
   150  
   151  var gx float64
   152  var g0 = float64(0)
   153  var g1 = float64(1)
   154  
   155  var ix int
   156  var i0 = 0
   157  var i1 = 1
   158  
   159  var jx uint
   160  var j0 = uint(0)
   161  var j1 = uint(1)
   162  
   163  var cx complex64
   164  var c0 = complex64(0)
   165  var c1 = complex64(1)
   166  
   167  var dx complex128
   168  var d0 = complex128(0)
   169  var d1 = complex128(1)
   170  
   171  var sx []int
   172  var s0 = []int{0, 0, 0}
   173  var s1 = []int{1, 2, 3}
   174  
   175  func fi() int
   176  
   177  var ax [10]int
   178  var a0 = [10]int{0, 0, 0}
   179  var a1 = [10]int{1, 2, 3, 4}
   180  
   181  type T struct{ X, Y int }
   182  
   183  var tx T
   184  var t0 = T{}
   185  var t0a = T{0, 0}
   186  var t0b = T{X: 0}
   187  var t1 = T{X: 1, Y: 2}
   188  var t1a = T{3, 4}
   189  
   190  var psx *[]int
   191  var ps0 = &[]int{0, 0, 0}
   192  var ps1 = &[]int{1, 2, 3}
   193  
   194  var pax *[10]int
   195  var pa0 = &[10]int{0, 0, 0}
   196  var pa1 = &[10]int{1, 2, 3}
   197  
   198  var ptx *T
   199  var pt0 = &T{}
   200  var pt0a = &T{0, 0}
   201  var pt0b = &T{X: 0}
   202  var pt1 = &T{X: 1, Y: 2}
   203  var pt1a = &T{3, 4}
   204  
   205  var copy_bx = bx
   206  var copy_b0 = b0
   207  var copy_b1 = b1
   208  
   209  var copy_fx = fx
   210  var copy_f0 = f0
   211  var copy_f1 = f1
   212  
   213  var copy_gx = gx
   214  var copy_g0 = g0
   215  var copy_g1 = g1
   216  
   217  var copy_ix = ix
   218  var copy_i0 = i0
   219  var copy_i1 = i1
   220  
   221  var copy_jx = jx
   222  var copy_j0 = j0
   223  var copy_j1 = j1
   224  
   225  var copy_cx = cx
   226  var copy_c0 = c0
   227  var copy_c1 = c1
   228  
   229  var copy_dx = dx
   230  var copy_d0 = d0
   231  var copy_d1 = d1
   232  
   233  var copy_sx = sx
   234  var copy_s0 = s0
   235  var copy_s1 = s1
   236  
   237  var copy_ax = ax
   238  var copy_a0 = a0
   239  var copy_a1 = a1
   240  
   241  var copy_tx = tx
   242  var copy_t0 = t0
   243  var copy_t0a = t0a
   244  var copy_t0b = t0b
   245  var copy_t1 = t1
   246  var copy_t1a = t1a
   247  
   248  var copy_psx = psx
   249  var copy_ps0 = ps0
   250  var copy_ps1 = ps1
   251  
   252  var copy_pax = pax
   253  var copy_pa0 = pa0
   254  var copy_pa1 = pa1
   255  
   256  var copy_ptx = ptx
   257  var copy_pt0 = pt0
   258  var copy_pt0a = pt0a
   259  var copy_pt0b = pt0b
   260  var copy_pt1 = pt1
   261  var copy_pt1a = pt1a
   262  
   263  var _ interface{} = 1
   264  
   265  type T1 int
   266  
   267  func (t *T1) M() {}
   268  
   269  type Mer interface { M() }
   270  
   271  var _ Mer = (*T1)(nil)