Commit 907e998c authored by Robert Griesemer's avatar Robert Griesemer

go/scanner: added another test case, clarified some code

R=rsc
CC=golang-dev
https://golang.org/cl/2741042
parent 11684680
...@@ -197,11 +197,11 @@ func (S *Scanner) scanComment(pos token.Position) { ...@@ -197,11 +197,11 @@ func (S *Scanner) scanComment(pos token.Position) {
func (S *Scanner) findLineEnd(pos token.Position) bool { func (S *Scanner) findLineEnd(pos token.Position) bool {
// first '/' already consumed; assume S.ch == '/' || S.ch == '*' // initial '/' already consumed; pos is position of '/'
// read ahead until a newline, EOF, or non-comment token is found // read ahead until a newline, EOF, or non-comment token is found
lineend := false lineend := false
for pos1 := pos; S.ch >= 0; { for pos1 := pos; S.ch == '/' || S.ch == '*'; {
if S.ch == '/' { if S.ch == '/' {
//-style comment always contains a newline //-style comment always contains a newline
lineend = true lineend = true
...@@ -224,17 +224,13 @@ func (S *Scanner) findLineEnd(pos token.Position) bool { ...@@ -224,17 +224,13 @@ func (S *Scanner) findLineEnd(pos token.Position) bool {
break break
} }
pos1 = S.pos pos1 = S.pos
S.next() S.next() // consume '/'
if S.ch != '/' && S.ch != '*' {
// non-comment token
break
}
} }
// reset position to where it was upon calling findLineEnd // reset position to where it was upon calling findLineEnd
S.pos = pos S.pos = pos
S.offset = pos.Offset + 1 S.offset = pos.Offset + 1
S.next() S.next() // consume initial '/' again
return lineend return lineend
} }
......
...@@ -407,8 +407,11 @@ var lines = []string{ ...@@ -407,8 +407,11 @@ var lines = []string{
"foo $/*comment*/ \n", "foo $/*comment*/ \n",
"foo $/*0*/ /*1*/ /*2*/ \n", "foo $/*0*/ /*1*/ /*2*/ \n",
"foo $/**/ /*-------------*/ /*----\n*/bar $/* \n*/baa$\n", "foo $/**/ /*-------------*/ /*----\n*/bar $/* \n*/baa$\n",
"foo $/* an EOF terminates a line */",
"foo $/* an EOF terminates a line *//*",
"package main$\n\nfunc main() {\n\tif {\n\t\treturn /* */ }$\n}$\n", "package main$\n\nfunc main() {\n\tif {\n\t\treturn /* */ }$\n}$\n",
"package main$",
} }
......
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