|  | // compile | 
|  |  | 
|  | // 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. | 
|  |  | 
|  | // Issue 4323: inlining of functions with local variables | 
|  | // forgets to typecheck the declarations in the inlined copy. | 
|  |  | 
|  | package main | 
|  |  | 
|  | type reader struct { | 
|  | C chan T | 
|  | } | 
|  |  | 
|  | type T struct{ C chan []byte } | 
|  |  | 
|  | var r = newReader() | 
|  |  | 
|  | func newReader() *reader { return new(reader) } | 
|  |  | 
|  | func (r *reader) Read(n int) ([]byte, error) { | 
|  | req := T{C: make(chan []byte)} | 
|  | r.C <- req | 
|  | return <-req.C, nil | 
|  | } | 
|  |  | 
|  | func main() { | 
|  | s, err := r.Read(1) | 
|  | _, _ = s, err | 
|  | } |