aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/go/scanner/scanner.go22
-rw-r--r--src/go/scanner/scanner_test.go26
2 files changed, 37 insertions, 11 deletions
diff --git a/src/go/scanner/scanner.go b/src/go/scanner/scanner.go
index 07d987c88f..f8610640c0 100644
--- a/src/go/scanner/scanner.go
+++ b/src/go/scanner/scanner.go
@@ -144,18 +144,18 @@ func (s *Scanner) Init(file *token.File, src []byte, err ErrorHandler, mode Mode
if file.Size() != len(src) {
panic(fmt.Sprintf("file size (%d) does not match src len (%d)", file.Size(), len(src)))
}
- s.file = file
- s.dir, _ = filepath.Split(file.Name())
- s.src = src
- s.err = err
- s.mode = mode
- s.ch = ' '
- s.offset = 0
- s.rdOffset = 0
- s.lineOffset = 0
- s.insertSemi = false
- s.ErrorCount = 0
+ dir, _ := filepath.Split(file.Name())
+
+ *s = Scanner{
+ file: file,
+ dir: dir,
+ src: src,
+ err: err,
+ mode: mode,
+
+ ch: ' ',
+ }
s.next()
if s.ch == bom {
diff --git a/src/go/scanner/scanner_test.go b/src/go/scanner/scanner_test.go
index 98036bea4e..ae2cc63392 100644
--- a/src/go/scanner/scanner_test.go
+++ b/src/go/scanner/scanner_test.go
@@ -1153,3 +1153,29 @@ func TestNumbers(t *testing.T) {
}
}
}
+
+func TestScanReuseSemiInNewlineComment(t *testing.T) {
+ fset := token.NewFileSet()
+
+ const src = "identifier /*a\nb*/ + other"
+ var s Scanner
+ s.Init(fset.AddFile("test.go", -1, len(src)), []byte(src), func(pos token.Position, msg string) {
+ t.Fatal(msg)
+ }, ScanComments)
+
+ s.Scan() // IDENT(identifier)
+
+ _, tok, _ := s.Scan() // COMMENT(/*a\nb*/)
+ if tok != token.COMMENT {
+ t.Fatalf("tok = %v; want = token.SEMICOLON", tok)
+ }
+
+ s.Init(fset.AddFile("test.go", -1, len(src)), []byte(src), func(pos token.Position, msg string) {
+ t.Fatal(msg)
+ }, ScanComments)
+
+ _, tok, _ = s.Scan()
+ if tok != token.IDENT {
+ t.Fatalf("tok = %v; want = token.IDENT", tok)
+ }
+}