| // run | |
| // Copyright 2012 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. | |
| // The no-op conversion here used to confuse the compiler | |
| // into doing a load-effective-address of nil. | |
| // See issue 3670. | |
| package main | |
| import "reflect" | |
| type T interface {} | |
| var x bool | |
| func main() { | |
| reflect.TypeOf(nil) | |
| reflect.TypeOf(T(nil)) // used to miscompile | |
| shouldPanic() | |
| } | |
| func f() byte { | |
| return []byte(nil)[0] // used to miscompile | |
| } | |
| func shouldPanic() { | |
| defer func() { | |
| if recover() == nil { | |
| panic("not panicking") | |
| } | |
| }() | |
| f() | |
| } |