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