================ @@ -7867,15 +7865,16 @@ void Sema::checkUnusedDeclAttributes(Declarator &D) { void Sema::DiagnoseUnknownAttribute(const ParsedAttr &AL) { std::string NormalizedFullName = '\'' + AL.getNormalizedFullName() + '\''; + SourceRange NR = AL.getNormalizedRange(); ---------------- a-tarasyuk wrote:
> AND having it set the Attribute as invalid would be valuable. > Could we change this to take AttributeCommonInfo instead? Or is there > something that we need the full ParsedAttr for? @erichkeane Thanks for the feedback. In general, it’s possible to use `AttributeCommonInfo`, but I used `ParsedAttr` because all existing cases that handle unknown attributes rely on `ParsedAttr`. If we switch to `AttributeCommonInfo`, we lose the ability to mark the attribute as invalid, since `setIsInvalid` is only available on `ParsedAttr`. --- @erichkeane we've a discussion about this case with @AaronBallman. Unless we plan a broader refactoring to properly support attribute groups, would it make sense to provide `fixit` only when there is no scope? ```cpp [deprecatd] // fix-it ``` To handle cases involving `using` correctly, it's necessary to at least preserve whether the scope was part of an `attribute-using-prefix`. WDYT? https://github.com/llvm/llvm-project/pull/141305 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits