[Diag] Refactor diagnosticStringFor
to return StringRef
#33502
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
To make #33422 easier to review, I decided to open this PR.
When I was testing #33422 and returning diagnostic messages from the hash table, there was a mismatch in some diagnostic messages because there was an extra
0x01
byte at the end of every diagnostic message.Currently,
diagnosticStringFor
returns aconst char *
obtained by callingdata()
on aStringRef
coming fromLocalizationProducer::getMessageOr
. Since,StringRef
isn't null-terminated, when converting it to a pointer and then back to aStringRef
later - inDiagnosticInfo
- causes the length to be wrong.When changing
diagnosticStringFor
to return anllvm::StringRef
instead and removing the calls todata()
, the tests in #33422 will pass.cc @xedin, @owenv