mirror of
https://github.com/golang/go
synced 2024-11-23 20:40:07 -07:00
b60c8203ea
Small fix: looks like a short variable declaration with a type switch checks to make sure the variable used had valid shape (ONAME, OTYPE, or ONONAME) and rejects everything else. Then a new variable is declared. If the symbol contained in the declaration was a named OLITERAL (still a valid identifier obviously) it would be rejected, even though a new variable would have been declared. Fix adds this case to the check. Added a test case from issue12413. Fixes #12413 Change-Id: I150dadafa8ee5612c867d58031027f2dca8c6ebc Reviewed-on: https://go-review.googlesource.com/15760 Reviewed-by: Minux Ma <minux@golang.org> Run-TryBot: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
20 lines
460 B
Go
20 lines
460 B
Go
// compile
|
|
|
|
// Copyright 2015 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 12413: invalid variable name x in type switch: code would fail
|
|
// to compile if the variable used in the short variable declaration was
|
|
// previously declared as a constant.
|
|
|
|
package main
|
|
|
|
func main() {
|
|
const x = 42
|
|
switch x := interface{}(nil).(type) {
|
|
default:
|
|
_ = x
|
|
}
|
|
}
|