| 530 | } |
| 531 | |
| 532 | bool isUTF8(llvm::StringRef S, size_t *ErrOffset) { |
| 533 | // Fast-path for ASCII, which is valid UTF-8. |
| 534 | if (LLVM_LIKELY(isASCII(S))) |
| 535 | return true; |
| 536 | |
| 537 | const UTF8 *Data = reinterpret_cast<const UTF8 *>(S.data()), *Rest = Data; |
| 538 | if (LLVM_LIKELY(isLegalUTF8String(&Rest, Data + S.size()))) |
| 539 | return true; |
| 540 | |
| 541 | if (ErrOffset) |
| 542 | *ErrOffset = Rest - Data; |
| 543 | return false; |
| 544 | } |
| 545 | |
| 546 | std::string fixUTF8(llvm::StringRef S) { |
| 547 | // This isn't particularly efficient, but is only for error-recovery. |
no test coverage detected