go/src/cmd/compile/internal/syntax/testdata/fallthrough.go
Robert Griesemer 6b309be7ab cmd/compile/internal/syntax: check fallthrough in CheckBranches mode
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>
2022-06-26 00:21:29 +00:00

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
}
}