Commit 8e2423a6 authored by Dmitry Vyukov's avatar Dmitry Vyukov

cmd/gc: typecheck type switch variables

Type switch variables was not typechecked.
Previously it lead only to a minor consequence:

switch unsafe.Sizeof = x.(type) {

generated an inconsistent error message.
But capturing by value functionality now requries typechecking of all ONAMEs.

Fixes #9731

Change-Id: If037883cba53d85028fb97b1328696091b3b7ddd
Reviewed-on: https://go-review.googlesource.com/3600Reviewed-by: default avatarRuss Cox <rsc@golang.org>
parent c9321f3f
......@@ -939,6 +939,8 @@ typecheckswitch(Node *n)
// multiple entry type switch or default
nvar->ntype = typenod(n->type);
}
typecheck(&nvar, Erv | Easgn);
ncase->nname = nvar;
}
}
typechecklist(ncase->nbody, Etop);
......
// compile
// 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.
package p
func f(x interface{}) {
switch x := x.(type) {
case int:
func() {
_ = x
}()
case map[int]int:
func() {
for range x {
}
}()
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment