aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2010-09-28 10:35:02 -0400
committerRuss Cox <rsc@golang.org>2010-09-28 10:35:02 -0400
commitec13ed1fce4164477dece0c3486bebf93c0ad1e6 (patch)
tree00a5aadd78b641cdd9ae730056c42a513ea83608
parentb233ac8f18a668a2d91299ebc2996e7e2b623b29 (diff)
downloadgo-ec13ed1fce4164477dece0c3486bebf93c0ad1e6.tar.gz
go-ec13ed1fce4164477dece0c3486bebf93c0ad1e6.zip
gc: insert semicolon at EOF if needed
R=ken2, gri CC=golang-dev https://golang.org/cl/2208053
-rw-r--r--src/cmd/gc/lex.c9
-rw-r--r--test/eof.go9
2 files changed, 11 insertions, 7 deletions
diff --git a/src/cmd/gc/lex.c b/src/cmd/gc/lex.c
index b46aa2ae08..8289648ba9 100644
--- a/src/cmd/gc/lex.c
+++ b/src/cmd/gc/lex.c
@@ -1247,13 +1247,8 @@ yylex(void)
lx = _yylex();
if(curio.nlsemi && lx == EOF) {
- // if the nlsemi bit is set, we'd be willing to
- // insert a ; if we saw a \n, but we didn't.
- // that means the final \n is missing.
- // complain here, because we can give a
- // good message. the syntax error we'd get
- // otherwise is inscrutable.
- yyerror("missing newline at end of file");
+ // Treat EOF as "end of line" for the purposes
+ // of inserting a semicolon.
lx = ';';
}
diff --git a/test/eof.go b/test/eof.go
new file mode 100644
index 0000000000..81f9fd028f
--- /dev/null
+++ b/test/eof.go
@@ -0,0 +1,9 @@
+// $G $D/$F.go
+
+// Copyright 2010 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.
+
+// No newline at the end of this file.
+
+package main \ No newline at end of file