diff options
author | Robert Griesemer <gri@golang.org> | 2016-11-30 23:28:40 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2016-12-09 00:43:04 +0000 |
commit | 32bf2829a17a90bdbd472335707639ba35776da6 (patch) | |
tree | d40b974e80f953388fee9320a53fcde833e6e2fb /src/cmd/compile/internal/syntax/scanner_test.go | |
parent | 8d20b25779d4ce32e8eaeb52374fba1e74f7df57 (diff) | |
download | go-32bf2829a17a90bdbd472335707639ba35776da6.tar.gz go-32bf2829a17a90bdbd472335707639ba35776da6.zip |
[dev.inline] cmd/compile/internal/syntax: process //line pragmas in scanner
Reviewed in and cherry-picked from https://go-review.googlesource.com/#/c/33764/.
Minor adjustment in noder.go to make merge compile again.
Change-Id: Ib5029b52b59944f207b0f2438c8a5aa576eb25b8
Reviewed-on: https://go-review.googlesource.com/34233
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/syntax/scanner_test.go')
-rw-r--r-- | src/cmd/compile/internal/syntax/scanner_test.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/cmd/compile/internal/syntax/scanner_test.go b/src/cmd/compile/internal/syntax/scanner_test.go index 4c00ddc5d6..b319e2c354 100644 --- a/src/cmd/compile/internal/syntax/scanner_test.go +++ b/src/cmd/compile/internal/syntax/scanner_test.go @@ -22,7 +22,7 @@ func TestScanner(t *testing.T) { defer src.Close() var s scanner - s.init(src, nil, nil) + s.init("parser.go", src, nil, nil) for { s.next() if s.tok == _EOF { @@ -51,7 +51,7 @@ func TestTokens(t *testing.T) { // scan source var got scanner - got.init(&bytesReader{buf}, nil, nil) + got.init("", &bytesReader{buf}, nil, nil) got.next() for i, want := range sampleTokens { nlsemi := false @@ -317,12 +317,20 @@ func TestScanErrors(t *testing.T) { {`var s string = "\x"`, "non-hex character in escape sequence: \"", 1, 19}, {`return "\Uffffffff"`, "escape sequence is invalid Unicode code point", 1, 19}, + {`//line :`, "invalid line number: ", 1, 9}, + {`//line :x`, "invalid line number: x", 1, 9}, + {`//line foo :`, "invalid line number: ", 1, 13}, + {`//line foo:123abc`, "invalid line number: 123abc", 1, 12}, + {`/**///line foo:x`, "invalid line number: x", 1, 16}, + {`//line foo:0`, "invalid line number: 0", 1, 12}, + {fmt.Sprintf(`//line foo:%d`, lineM+1), fmt.Sprintf("invalid line number: %d", lineM+1), 1, 12}, + // former problem cases {"package p\n\n\xef", "invalid UTF-8 encoding", 3, 1}, } { var s scanner nerrors := 0 - s.init(&bytesReader{[]byte(test.src)}, func(err error) { + s.init("", &bytesReader{[]byte(test.src)}, func(err error) { nerrors++ // only check the first error e := err.(Error) // we know it's an Error |