Without this, T can sneak through to the backend
with its width unknown.
Fixes #20174
Change-Id: I9b21e0e2641f75e360cc5e45dcb4eefe8255b675
Reviewed-on: https://go-review.googlesource.com/42175
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
ok |= Etype
n.Op = OTYPE
n.Type = types.NewPtr(l.Type)
+ checkwidth(l.Type) // ensure this gets dowidth'd for the backend
n.Left = nil
break OpSwitch
}
--- /dev/null
+// compile -c=2
+
+// Copyright 2017 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 20174: failure to typecheck contents of *T in the frontend.
+
+package p
+
+func f() {
+ _ = (*interface{})(nil) // interface{} here used to not have its width calculated going into backend
+ select {
+ case _ = <-make(chan interface {
+ M()
+ }, 1):
+ }
+}