func()

in src/scip-lib/scanner/scan.go [303:336]


func (is *IndexScannerImpl) parseDocumentPath(docData []byte) (string, error) {
	r := bytes.NewReader(docData)
	for {
		fieldNumber, fieldType, err := is.consumeBytesFieldMeta(r)
		if err == io.EOF {
			return "", nil
		}
		if err != nil {
			return "", errors.Join(fmt.Errorf("failed to consume field"), err)
		}

		if fieldNumber != documentRelativePathFieldNumber {
			err := is.skipField(r)
			if err != nil {
				return "", errors.Join(fmt.Errorf("failed to skip %q", documentFieldName(fieldNumber)), err)
			}
			continue
		}

		dataLen, err := is.consumeLen(r, fieldType)
		if err != nil {
			return "", errors.Join(fmt.Errorf("failed to consume length"), err)
		}
		dataBuf := is.Pool.Get(dataLen)
		defer is.Pool.Put(dataBuf)
		err = is.consumeFieldData(r, dataLen, dataBuf)
		if err != nil {
			return "", errors.Join(fmt.Errorf("failed to consume %q data", documentFieldName(fieldNumber)), err)
		}
		// Return immediately after reading the document path
		dataStr := string(dataBuf)
		return dataStr, nil
	}
}