Merge pull request #246 from octo/zero-length-heredoc-anchor

scanner: Fix detection of zero-length heredoc anchor.
This commit is contained in:
Mitchell Hashimoto 2018-04-04 08:50:57 -07:00 committed by GitHub
commit 653ccfb956
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 5 additions and 1 deletions

View File

@ -155,6 +155,7 @@ func TestFormatValidOutput(t *testing.T) {
"#\ue123t",
"Y=<<4\n4/\n\n\n/4/@=4/\n\n\n/4000000004\r\r\n00004\n",
"x=<<_\n_\r\r\n_\n",
"X=<<-\n\r\r\n",
}
for _, c := range cases {

View File

@ -433,7 +433,7 @@ func (s *Scanner) scanHeredoc() {
// Read the identifier
identBytes := s.src[offs : s.srcPos.Offset-s.lastCharLen]
if len(identBytes) == 0 {
if len(identBytes) == 0 || (len(identBytes) == 1 && identBytes[0] == '-') {
s.err("zero-length heredoc anchor")
return
}

View File

@ -531,6 +531,9 @@ func TestError(t *testing.T) {
testError(t, `"${abc`+"\n", "2:1", "literal not terminated", token.STRING)
testError(t, `/*/`, "1:4", "comment not terminated", token.COMMENT)
testError(t, `/foo`, "1:1", "expected '/' for comment", token.COMMENT)
testError(t, "<<\nfoo\n\n", "1:3", "zero-length heredoc anchor", token.HEREDOC)
testError(t, "<<-\nfoo\n\n", "1:4", "zero-length heredoc anchor", token.HEREDOC)
}
func testError(t *testing.T, src, pos, msg string, tok token.Type) {