Home | History | Annotate | Download | only in fixedbugs
      1 // run
      2 
      3 // Copyright 2014 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 // Some uses of zeroed constants in non-assignment
      8 // expressions broke with our more aggressive zeroing
      9 // of assignments (internal compiler errors).
     10 
     11 package main
     12 
     13 func f1() {
     14 	type T [2]int
     15 	p := T{0, 1}
     16 	switch p {
     17 	case T{0, 0}:
     18 		panic("wrong1")
     19 	case T{0, 1}:
     20 		// ok
     21 	default:
     22 		panic("wrong2")
     23 	}
     24 
     25 	if p == (T{0, 0}) {
     26 		panic("wrong3")
     27 	} else if p == (T{0, 1}) {
     28 		// ok
     29 	} else {
     30 		panic("wrong4")
     31 	}
     32 }
     33 
     34 type T struct {
     35 	V int
     36 }
     37 
     38 var X = T{}.V
     39 
     40 func f2() {
     41 	var x = T{}.V
     42 	if x != 0 {
     43 		panic("wrongx")
     44 	}
     45 	if X != 0 {
     46 		panic("wrongX")
     47 	}
     48 }
     49 
     50 func main() {
     51 	f1()
     52 	f2()
     53 }
     54