mirror of
https://github.com/golang/go
synced 2024-11-19 02:14:43 -07:00
go/scanner: added another test case, clarified some code
R=rsc CC=golang-dev https://golang.org/cl/2741042
This commit is contained in:
parent
11684680fa
commit
907e998cba
@ -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 {
|
|||||||
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{
|
|||||||
"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$",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user