(goctl:) fix circle import in case new parser (#3750)

Co-authored-by: Kevin Wan <wanjunfeng@gmail.com>
This commit is contained in:
kesonan
2023-11-29 19:13:39 +08:00
committed by GitHub
parent c46bcf7e1b
commit 5e63002cf8
4 changed files with 72 additions and 24 deletions

View File

@@ -26,7 +26,6 @@ const (
stringOpen
stringClose
// string mode end
)
var missingInput = errors.New("missing input")
@@ -268,6 +267,7 @@ func (s *Scanner) scanNanosecond(bgPos int) token.Token {
return s.illegalToken()
}
s.readRune()
return token.Token{
Type: token.DURATION,
Text: string(s.data[bgPos:s.position]),
@@ -485,6 +485,7 @@ func (s *Scanner) scanLineComment() token.Token {
for s.ch != '\n' && s.ch != 0 {
s.readRune()
}
return token.Token{
Type: token.COMMENT,
Text: string(s.data[position:s.position]),
@@ -546,6 +547,7 @@ func (s *Scanner) assertExpected(actual token.Type, expected ...token.Type) erro
strings.Join(expects, " | "),
actual.String(),
))
return errors.New(text)
}
@@ -560,6 +562,7 @@ func (s *Scanner) assertExpectedString(actual string, expected ...string) error
strings.Join(expects, " | "),
actual,
))
return errors.New(text)
}
@@ -647,21 +650,22 @@ func NewScanner(filename string, src interface{}) (*Scanner, error) {
}
func readData(filename string, src interface{}) ([]byte, error) {
data, err := os.ReadFile(filename)
if err == nil {
if strings.HasSuffix(filename, ".api") {
data, err := os.ReadFile(filename)
if err != nil {
return nil, err
}
return data, nil
}
switch v := src.(type) {
case []byte:
data = append(data, v...)
return v, nil
case *bytes.Buffer:
data = v.Bytes()
return v.Bytes(), nil
case string:
data = []byte(v)
return []byte(v), nil
default:
return nil, fmt.Errorf("unsupported type: %T", src)
}
return data, nil
}