// 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() | |
} |