I also added some debugging code that's turned
on with -xx.
Fixes #3392.
R=rsc, lvd
CC=golang-dev
https://golang.org/cl/
5909058
if(c != 0) {
curio.peekc = curio.peekc1;
curio.peekc1 = 0;
- if(c == '\n' && pushedio.bin == nil)
- lexlineno++;
- return c;
+ goto check;
}
if(curio.bin == nil) {
} else
c = Bgetc(curio.bin);
+check:
switch(c) {
case 0:
if(curio.bin != nil) {
if(debug['x'])
print("yyerror: yystate=%d yychar=%d\n", yystate, yychar);
+ // An unexpected EOF caused a syntax error. Use the previous
+ // line number since getc generated a fake newline character.
+ if(curio.eofnl)
+ lexlineno = prevlineno;
+
// only one syntax error per line
if(lastsyntax == lexlineno)
return;
--- /dev/null
+// errorcheck
+
+// Copyright 2012 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.
+
+// Test that a syntax error caused by an unexpected EOF
+// gives an error message with the correct line number.
+//
+// https://code.google.com/p/go/issues/detail?id=3392
+
+package main
+
+func foo() {
+ bar(1, // ERROR "unexpected"