From c8915a0696ddb53399e9c7ebae1cd1158f271756 Mon Sep 17 00:00:00 2001 From: Shengyu Zhang Date: Tue, 8 May 2018 03:47:50 +0000 Subject: [PATCH] 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/112037 Reviewed-by: Robert Griesemer Run-TryBot: Robert Griesemer TryBot-Result: Gobot Gobot --- src/text/scanner/scanner.go | 2 +- src/text/scanner/scanner_test.go | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/text/scanner/scanner.go b/src/text/scanner/scanner.go index 6fb0422fe5..4e76664dc0 100644 --- a/src/text/scanner/scanner.go +++ b/src/text/scanner/scanner.go @@ -621,7 +621,7 @@ redo: case '`': if s.Mode&ScanRawStrings != 0 { s.scanRawString() - tok = String + tok = RawString } ch = s.next() default: diff --git a/src/text/scanner/scanner_test.go b/src/text/scanner/scanner_test.go index 3e92d659ca..9a6b72ef67 100644 --- a/src/text/scanner/scanner_test.go +++ b/src/text/scanner/scanner_test.go @@ -209,10 +209,10 @@ var tokenList = []token{ {String, `"` + f100 + `"`}, {Comment, "// raw strings"}, - {String, "``"}, - {String, "`\\`"}, - {String, "`" + "\n\n/* foobar */\n\n" + "`"}, - {String, "`" + f100 + "`"}, + {RawString, "``"}, + {RawString, "`\\`"}, + {RawString, "`" + "\n\n/* foobar */\n\n" + "`"}, + {RawString, "`" + f100 + "`"}, {Comment, "// individual characters"}, // NUL character is not allowed @@ -463,9 +463,9 @@ func TestError(t *testing.T) { testError(t, `"ab`+"\x80", ":1:4", "illegal UTF-8 encoding", String) testError(t, `"abc`+"\xff", ":1:5", "illegal UTF-8 encoding", String) - testError(t, "`a"+"\x00", ":1:3", "illegal character NUL", String) - testError(t, "`ab"+"\x80", ":1:4", "illegal UTF-8 encoding", String) - testError(t, "`abc"+"\xff", ":1:5", "illegal UTF-8 encoding", String) + testError(t, "`a"+"\x00", ":1:3", "illegal character NUL", RawString) + testError(t, "`ab"+"\x80", ":1:4", "illegal UTF-8 encoding", RawString) + testError(t, "`abc"+"\xff", ":1:5", "illegal UTF-8 encoding", RawString) testError(t, `'\"'`, ":1:3", "illegal char escape", Char) testError(t, `"\'"`, ":1:3", "illegal char escape", String) @@ -480,7 +480,7 @@ func TestError(t *testing.T) { testError(t, `'`+"\n", ":1:2", "literal not terminated", Char) testError(t, `"abc`, ":1:5", "literal not terminated", String) testError(t, `"abc`+"\n", ":1:5", "literal not terminated", String) - testError(t, "`abc\n", ":2:1", "literal not terminated", String) + testError(t, "`abc\n", ":2:1", "literal not terminated", RawString) testError(t, `/*/`, ":1:4", "comment not terminated", EOF) }