aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2011-02-22 18:23:29 -0500
committerRuss Cox <rsc@golang.org>2011-02-22 18:23:29 -0500
commit52943bfe4d1a85e64e35a5c1173ce04ae2b98bb6 (patch)
tree23eb603c179c831ce8fe135d8db4482442764c1c
parent814075dffba9c3f906d9ba641e787a35289a2f86 (diff)
downloadgo-52943bfe4d1a85e64e35a5c1173ce04ae2b98bb6.tar.gz
go-52943bfe4d1a85e64e35a5c1173ce04ae2b98bb6.zip
gc: require if condition
R=ken2, r2 CC=golang-dev https://golang.org/cl/4195045
-rw-r--r--src/cmd/gc/go.y9
-rw-r--r--test/syntax/if.go15
2 files changed, 22 insertions, 2 deletions
diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y
index 86e3cae33c..4b838a4911 100644
--- a/src/cmd/gc/go.y
+++ b/src/cmd/gc/go.y
@@ -640,10 +640,15 @@ if_stmt:
{
markdcl();
}
- if_header loop_body
+ if_header
+ {
+ if($3->ntest == N)
+ yyerror("missing condition in if statement");
+ }
+ loop_body
{
$$ = $3;
- $$->nbody = $4;
+ $$->nbody = $5;
// no popdcl; maybe there's an LELSE
}
diff --git a/test/syntax/if.go b/test/syntax/if.go
new file mode 100644
index 0000000000..913d418854
--- /dev/null
+++ b/test/syntax/if.go
@@ -0,0 +1,15 @@
+// errchk $G $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.
+
+package main
+
+func main() {
+ if { // ERROR "missing condition"
+ }
+
+ if x(); { // ERROR "missing condition"
+ }
+}