Commit c8915a06 authored by Shengyu Zhang's avatar Shengyu Zhang Committed by Robert Griesemer

text/scanner: return RawString token rather than String for raw string literals

Fixes #23675

Change-Id: I78e13d1ca90400e4dd48674b93bb6e2e30718d97
GitHub-Last-Rev: f2b3a59d2bd92f28fc06360e7920c37b9da0af01
GitHub-Pull-Request: golang/go#25287
Reviewed-on: https://go-review.googlesource.com/112037Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 35ea6246
...@@ -621,7 +621,7 @@ redo: ...@@ -621,7 +621,7 @@ redo:
case '`': case '`':
if s.Mode&ScanRawStrings != 0 { if s.Mode&ScanRawStrings != 0 {
s.scanRawString() s.scanRawString()
tok = String tok = RawString
} }
ch = s.next() ch = s.next()
default: default:
......
...@@ -209,10 +209,10 @@ var tokenList = []token{ ...@@ -209,10 +209,10 @@ var tokenList = []token{
{String, `"` + f100 + `"`}, {String, `"` + f100 + `"`},
{Comment, "// raw strings"}, {Comment, "// raw strings"},
{String, "``"}, {RawString, "``"},
{String, "`\\`"}, {RawString, "`\\`"},
{String, "`" + "\n\n/* foobar */\n\n" + "`"}, {RawString, "`" + "\n\n/* foobar */\n\n" + "`"},
{String, "`" + f100 + "`"}, {RawString, "`" + f100 + "`"},
{Comment, "// individual characters"}, {Comment, "// individual characters"},
// NUL character is not allowed // NUL character is not allowed
...@@ -463,9 +463,9 @@ func TestError(t *testing.T) { ...@@ -463,9 +463,9 @@ func TestError(t *testing.T) {
testError(t, `"ab`+"\x80", "<input>:1:4", "illegal UTF-8 encoding", String) testError(t, `"ab`+"\x80", "<input>:1:4", "illegal UTF-8 encoding", String)
testError(t, `"abc`+"\xff", "<input>:1:5", "illegal UTF-8 encoding", String) testError(t, `"abc`+"\xff", "<input>:1:5", "illegal UTF-8 encoding", String)
testError(t, "`a"+"\x00", "<input>:1:3", "illegal character NUL", String) testError(t, "`a"+"\x00", "<input>:1:3", "illegal character NUL", RawString)
testError(t, "`ab"+"\x80", "<input>:1:4", "illegal UTF-8 encoding", String) testError(t, "`ab"+"\x80", "<input>:1:4", "illegal UTF-8 encoding", RawString)
testError(t, "`abc"+"\xff", "<input>:1:5", "illegal UTF-8 encoding", String) testError(t, "`abc"+"\xff", "<input>:1:5", "illegal UTF-8 encoding", RawString)
testError(t, `'\"'`, "<input>:1:3", "illegal char escape", Char) testError(t, `'\"'`, "<input>:1:3", "illegal char escape", Char)
testError(t, `"\'"`, "<input>:1:3", "illegal char escape", String) testError(t, `"\'"`, "<input>:1:3", "illegal char escape", String)
...@@ -480,7 +480,7 @@ func TestError(t *testing.T) { ...@@ -480,7 +480,7 @@ func TestError(t *testing.T) {
testError(t, `'`+"\n", "<input>:1:2", "literal not terminated", Char) testError(t, `'`+"\n", "<input>:1:2", "literal not terminated", Char)
testError(t, `"abc`, "<input>:1:5", "literal not terminated", String) testError(t, `"abc`, "<input>:1:5", "literal not terminated", String)
testError(t, `"abc`+"\n", "<input>:1:5", "literal not terminated", String) testError(t, `"abc`+"\n", "<input>:1:5", "literal not terminated", String)
testError(t, "`abc\n", "<input>:2:1", "literal not terminated", String) testError(t, "`abc\n", "<input>:2:1", "literal not terminated", RawString)
testError(t, `/*/`, "<input>:1:4", "comment not terminated", EOF) testError(t, `/*/`, "<input>:1:4", "comment not terminated", EOF)
} }
......
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