in src/scip-lib/scanner/scan.go [340:369]
func (is *IndexScannerImpl) parseSymbolMoniker(symbolData []byte) ([]byte, error) {
r := bytes.NewReader(symbolData)
for {
fieldNumber, fieldType, err := is.consumeBytesFieldMeta(r)
if err == io.EOF {
return nil, nil
}
if err != nil {
return nil, errors.Join(fmt.Errorf("failed to consume field"), err)
}
if fieldNumber != symbolInformationSymbolField {
err := is.skipField(r)
if err != nil {
return nil, errors.Join(fmt.Errorf("failed to skip field %d in SymbolInfo", fieldNumber), err)
}
continue
}
dataLen, err := is.consumeLen(r, fieldType)
if err != nil {
return nil, errors.Join(fmt.Errorf("failed to consume length"), err)
}
dataBuf := is.Pool.Get(dataLen)
err = is.consumeFieldData(r, dataLen, dataBuf)
if err != nil {
return nil, errors.Join(fmt.Errorf("failed to consume field %d data in SymbolInfo", fieldNumber), err)
}
// Return immediately after reading the symbol string
return dataBuf, nil
}
}