2016-01-19 14:14:03 -07:00
|
|
|
// errorcheck
|
|
|
|
|
2016-04-10 15:32:26 -06:00
|
|
|
// Copyright 2016 The Go Authors. All rights reserved.
|
2016-01-19 14:14:03 -07:00
|
|
|
// Use of this source code is governed by a BSD-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
// Literals that happen to resolve to named constants
|
|
|
|
// may be used as label names (see issue 13684). Make
|
|
|
|
// sure that other literals don't crash the compiler.
|
|
|
|
|
|
|
|
package main
|
|
|
|
|
|
|
|
const labelname = 1
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
goto labelname
|
|
|
|
labelname:
|
|
|
|
}
|
|
|
|
|
|
|
|
func f() {
|
|
|
|
var x int
|
|
|
|
switch x {
|
|
|
|
case 1:
|
|
|
|
2: // ERROR "unexpected :"
|
|
|
|
case 2:
|
|
|
|
}
|
|
|
|
|
|
|
|
switch x {
|
|
|
|
case 1:
|
|
|
|
2: ; // ERROR "unexpected :"
|
|
|
|
case 2:
|
|
|
|
}
|
|
|
|
|
|
|
|
var y string
|
|
|
|
switch y {
|
|
|
|
case "foo":
|
|
|
|
"bar": // ERROR "unexpected :"
|
|
|
|
case "bar":
|
|
|
|
}
|
|
|
|
|
|
|
|
switch y {
|
|
|
|
case "foo":
|
|
|
|
"bar": ; // ERROR "unexpected :"
|
|
|
|
case "bar":
|
|
|
|
}
|
|
|
|
|
|
|
|
var z bool
|
|
|
|
switch {
|
|
|
|
case z:
|
|
|
|
labelname: // ERROR "missing statement after label"
|
|
|
|
case false:
|
|
|
|
}
|
2017-10-10 17:56:56 -06:00
|
|
|
}
|
2016-01-19 14:14:03 -07:00
|
|
|
|
2017-10-10 17:56:56 -06:00
|
|
|
func g() {
|
|
|
|
var z bool
|
2016-01-19 14:14:03 -07:00
|
|
|
switch {
|
|
|
|
case z:
|
2017-04-07 16:41:45 -06:00
|
|
|
labelname: // ERROR "label labelname defined and not used"
|
2016-01-19 14:14:03 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
switch {
|
|
|
|
case z:
|
2017-04-07 16:41:45 -06:00
|
|
|
labelname: ; // ERROR "label labelname already defined at LINE-5"
|
2016-01-19 14:14:03 -07:00
|
|
|
case false:
|
|
|
|
}
|
|
|
|
}
|