Commit 42aa9aba authored by Anthony Martin's avatar Anthony Martin

gc: use correct line number for EOF syntax error

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
parent 4d3db77c
......@@ -1531,9 +1531,7 @@ getc(void)
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) {
......@@ -1543,6 +1541,7 @@ getc(void)
} else
c = Bgetc(curio.bin);
check:
switch(c) {
case 0:
if(curio.bin != nil) {
......
......@@ -142,6 +142,11 @@ yyerror(char *fmt, ...)
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;
......
// 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"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment