================
@@ -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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits