cmd/compile/internal/gc: correctly use internal call to error reporting

Fixes #13266.

Change-Id: I31da922e0599989e52acf346374c2077b157ebb7
Reviewed-on: https://go-review.googlesource.com/16971
Reviewed-by: Chris Manghane <cmang@golang.org>
diff --git a/src/cmd/compile/internal/gc/parser.go b/src/cmd/compile/internal/gc/parser.go
index c8a6826..d2b382f 100644
--- a/src/cmd/compile/internal/gc/parser.go
+++ b/src/cmd/compile/internal/gc/parser.go
@@ -116,7 +116,7 @@
 		msg = ", " + msg
 	default:
 		// plain error - we don't care about current token
-		Yyerror("syntax error: " + msg)
+		Yyerror("syntax error: %s", msg)
 		return
 	}
 
@@ -138,7 +138,7 @@
 		tok = tokstring(p.tok)
 	}
 
-	Yyerror("syntax error: unexpected " + tok + msg)
+	Yyerror("syntax error: unexpected %s", tok + msg)
 }
 
 // Advance consumes tokens until it finds a token of the stoplist.
@@ -1669,7 +1669,7 @@
 		return nil
 
 	default:
-		p.syntax_error("")
+		p.syntax_error("expecting name")
 		p.advance()
 		return new(Sym)
 	}
diff --git a/test/fixedbugs/issue13266.go b/test/fixedbugs/issue13266.go
new file mode 100644
index 0000000..3c4f74b
--- /dev/null
+++ b/test/fixedbugs/issue13266.go
@@ -0,0 +1,10 @@
+// errorcheck
+
+// Copyright 2015 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.
+
+// Offending character % must not be interpreted as
+// start of format verb when emitting error message.
+
+package% // ERROR "unexpected %"