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