diff options
author | Russ Cox <rsc@golang.org> | 2011-03-15 14:05:37 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2011-03-15 14:05:37 -0400 |
commit | 66f09fd459cc7477c1c2f0de5a296ab84920f473 (patch) | |
tree | d00ea388e88f60ef85c489b8071a71f2f8f45486 /test/label1.go | |
parent | e72156b316f158c3357856a94b5fc60564f78b50 (diff) | |
download | go-git-66f09fd459cc7477c1c2f0de5a296ab84920f473.tar.gz |
gc: diagnose unused labels
R=ken2
CC=golang-dev
https://golang.org/cl/4287047
Diffstat (limited to 'test/label1.go')
-rw-r--r-- | test/label1.go | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/test/label1.go b/test/label1.go new file mode 100644 index 0000000000..bba63f23d2 --- /dev/null +++ b/test/label1.go @@ -0,0 +1,85 @@ +// errchk $G -e $D/$F.go + +// Copyright 2011 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. + +// Pass 2 label errors. + +package main + +var x int + +func f() { +L1: + for { + if x == 0 { + break L1 + } + if x == 1 { + continue L1 + } + goto L1 + } + +L2: + select { + default: + if x == 0 { + break L2 + } + if x == 1 { + continue L2 // ERROR "invalid continue label L2" + } + goto L2 + } + +L3: + switch { + case x > 10: + if x == 11 { + break L3 + } + if x == 12 { + continue L3 // ERROR "invalid continue label L3" + } + goto L3 + } + +L4: + if true { + if x == 13 { + break L4 // ERROR "invalid break label L4" + } + if x == 14 { + continue L4 // ERROR "invalid continue label L4" + } + if x == 15 { + goto L4 + } + } + +L5: + f() + if x == 16 { + break L5 // ERROR "invalid break label L5" + } + if x == 17 { + continue L5 // ERROR "invalid continue label L5" + } + if x == 18 { + goto L5 + } + + for { + if x == 19 { + break L1 // ERROR "invalid break label L1" + } + if x == 20 { + continue L1 // ERROR "invalid continue label L1" + } + if x == 21 { + goto L1 + } + } +} |