// errorcheck // Copyright 2016 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. // 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: } } func g() { var z bool switch { case z: labelname: // ERROR "label labelname defined and not used" } switch { case z: labelname: ; // ERROR "label labelname already defined at LINE-5" case false: } }