From: Ian Lance Taylor Date: Thu, 11 Nov 2021 04:28:45 +0000 (-0800) Subject: go/build: skip rune literals when looking for go:embed X-Git-Tag: go1.18beta1~370 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=c622d1d3f68369ec5f8ce9694fa27e7acb025004;p=gostls13.git go/build: skip rune literals when looking for go:embed Fixes #49514 Change-Id: Id687eead731ba49974f11d2e5b489f11eff7d07b Reviewed-on: https://go-review.googlesource.com/c/go/+/363275 Trust: Ian Lance Taylor Run-TryBot: Ian Lance Taylor TryBot-Result: Go Bot Reviewed-by: Bryan C. Mills --- diff --git a/src/embed/internal/embedtest/embed_test.go b/src/embed/internal/embedtest/embed_test.go index bfd94af69d..1337e421bd 100644 --- a/src/embed/internal/embedtest/embed_test.go +++ b/src/embed/internal/embedtest/embed_test.go @@ -60,6 +60,11 @@ func testDir(t *testing.T, f embed.FS, name string, expect ...string) { } } +// Tests for issue 49514. +var _ = '"' +var _ = '\'' +var _ = '🦆' + func TestGlobal(t *testing.T) { testFiles(t, global, "concurrency.txt", "Concurrency is not parallelism.\n") testFiles(t, global, "testdata/hello.txt", "hello, world\n") diff --git a/src/go/build/read.go b/src/go/build/read.go index 6115ef810c..de5c33a4f8 100644 --- a/src/go/build/read.go +++ b/src/go/build/read.go @@ -240,6 +240,27 @@ func (r *importReader) findEmbed(first bool) bool { } } + case '\'': + startLine = false + for r.err == nil { + if r.eof { + r.syntaxError() + } + c = r.readByteNoBuf() + if c == '\\' { + r.readByteNoBuf() + if r.err != nil { + r.syntaxError() + return false + } + continue + } + if c == '\'' { + c = r.readByteNoBuf() + goto Reswitch + } + } + case '/': c = r.readByteNoBuf() switch c {