mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
The parser CheckBranches mode checked correct use of break, continue, and labels, but not of fallthrough statements. This CL adds checking of fallthrough statements as well. For #51456. Change-Id: I5000388011973724f80c59a6aaf015e3bb70faea Reviewed-on: https://go-review.googlesource.com/c/go/+/414134 Reviewed-by: Robert Griesemer <gri@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com>
55 lines
946 B
Go
55 lines
946 B
Go
// Copyright 2022 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 fallthroughs
|
|
|
|
func _() {
|
|
var x int
|
|
switch x {
|
|
case 0:
|
|
fallthrough
|
|
|
|
case 1:
|
|
fallthrough // ERROR fallthrough statement out of place
|
|
{
|
|
}
|
|
|
|
case 2:
|
|
{
|
|
fallthrough // ERROR fallthrough statement out of place
|
|
}
|
|
|
|
case 3:
|
|
for {
|
|
fallthrough // ERROR fallthrough statement out of place
|
|
}
|
|
|
|
case 4:
|
|
fallthrough // trailing empty statements are ok
|
|
;
|
|
;
|
|
|
|
case 5:
|
|
fallthrough
|
|
|
|
default:
|
|
fallthrough // ERROR cannot fallthrough final case in switch
|
|
}
|
|
|
|
fallthrough // ERROR fallthrough statement out of place
|
|
|
|
if true {
|
|
fallthrough // ERROR fallthrough statement out of place
|
|
}
|
|
|
|
for {
|
|
fallthrough // ERROR fallthrough statement out of place
|
|
}
|
|
|
|
var t any
|
|
switch t.(type) {
|
|
case int:
|
|
fallthrough // ERROR cannot fallthrough in type switch
|
|
}
|
|
}
|