================
@@ -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

Reply via email to