[clang] Fix double-quotes in diagnostic when attempting to access a ext_vector of bools (PR #118186)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 16 06:27:40 PST 2024
================
@@ -434,8 +434,11 @@ CheckExtVectorComponent(Sema &S, QualType baseType, ExprValueKind &VK,
if (!HalvingSwizzle && *compStr) {
// We didn't get to the end of the string. This means the component names
// didn't come from the same set *or* we encountered an illegal name.
- S.Diag(OpLoc, diag::err_ext_vector_component_name_illegal)
- << StringRef(compStr, 1) << SourceRange(CompLoc);
+ size_t Offset = compStr - CompName->getNameStart() + 1;
+ char Fmt[3] = {'\'', *compStr, '\''};
+ S.Diag(OpLoc.getLocWithOffset(Offset),
+ diag::err_ext_vector_component_name_illegal)
+ << StringRef(Fmt, 3) << SourceRange(CompLoc);
----------------
erichkeane wrote:
A quick debug shows the below test changes are a little confusing, as the 'bool' vectors dont' actually allow anything, so this just ends up diagnosing elsewhere. So this change _IS_ just diagnosing a single letter.
For some reason that I don't quite understand, the access is allowed to be any combo of `x`,`y`, `z`, `w`, `r`, `g`,` b`, and `a`, with some attempt to be able to 'set' them. So it seems we're trying to diagnose the first one that isn't one of those above letters, so the single letter thing seems fine, just confusing for obvious reasons :)
https://github.com/llvm/llvm-project/pull/118186
More information about the cfe-commits
mailing list