| File | File | |
| | @@ -31,11 +31,13 @@ import (
|
| 31 | 31 | //
|
| 32 | 32 | // This line must appear before the first non-comment, non-blank
|
| 33 | 33 | // text in the file.
|
| 34 | 34 | func Parse(src io.Reader) (hasGeneratedComment bool, err error) {
|
| 35 | 35 | br := bufio.NewReader(src)
|
| 36 | | var inBlock bool // Whether we're inside a multi-line /* */ comment block.
|
| 36 | // Use inBlock to track whether we're inside a multi-line
|
| 37 | // /* */ comment block across calls to containsNonComment.
|
| 38 | var inBlock bool
|
| 37 | 39 | for {
|
| 38 | 40 | s, err := br.ReadBytes('\n')
|
| 39 | 41 | if err == io.EOF {
|
| 40 | 42 | return containsGenComment(s), nil
|
| 41 | 43 | } else if err != nil {
|
| | @@ -54,12 +56,10 @@ func Parse(src io.Reader) (hasGeneratedComment bool, err error) {
|
| 54 | 56 | }
|
| 55 | 57 | }
|
| 56 | 58 |
|
| 57 | 59 | // containsNonComment reports whether a line of source code s (without newline)
|
| 58 | 60 | // contains something other than a line comment, block comment, or white space.
|
| 59 | | // *inBlock, given at the start of the line and updated at the end of the line,
|
| 60 | | // represents whether we're inside a multi-line /* */ comment block.
|
| 61 | 61 | func containsNonComment(s []byte, inBlock *bool) bool {
|
| 62 | 62 | type state int
|
| 63 | 63 | const (
|
| 64 | 64 | normal state = iota
|
| 65 | 65 | normalSlash
|