================
@@ -10728,6 +10728,41 @@ void SemaCodeCompletion::GatherGlobalCodeCompletions(
Builder.data() + Builder.size());
}
+void SemaCodeCompletion::CodeCompleteHLSLAttributes(
+ llvm::ArrayRef<AttributeCommonInfo::Syntax> Syntaxes,
+ std::optional<ParsedAttr::Kind> RestrictToKind, bool RequireStmt,
+ std::optional<ParsedAttr::Kind> ExcludeKind) {
+ ResultBuilder Results(SemaRef, CodeCompleter->getAllocator(),
+ CodeCompleter->getCodeCompletionTUInfo(),
+ CodeCompletionContext::CCC_Attribute);
+
+ for (const auto *A : ParsedAttrInfo::getAllBuiltin()) {
+ if (!A->acceptsLangOpts(getLangOpts()))
+ continue;
+ if (RestrictToKind && A->AttrKind != *RestrictToKind)
+ continue;
+ if (ExcludeKind && A->AttrKind == *ExcludeKind)
+ continue;
+ if (A->IsStmt != RequireStmt)
----------------
V-FEXrt wrote:
This will reject the case where `A->IsStmt == true` and `RequireStmt == false`
is that intentional or should this be something like
```suggestion
if (RequireStmt && !A->IsStmt)
```
https://github.com/llvm/llvm-project/pull/215353
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits