// run // Copyright 2014 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. // Some uses of zeroed constants in non-assignment // expressions broke with our more aggressive zeroing // of assignments (internal compiler errors). package main func f1() { type T [2]int p := T{0, 1} switch p { case T{0, 0}: panic("wrong1") case T{0, 1}: // ok default: panic("wrong2") } if p == (T{0, 0}) { panic("wrong3") } else if p == (T{0, 1}) { // ok } else { panic("wrong4") } } type T struct { V int } var X = T{}.V func f2() { var x = T{}.V if x != 0 { panic("wrongx") } if X != 0 { panic("wrongX") } } func main() { f1() f2() }