summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-language-server-completion.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-02-02 22:28:02 -0800
committerGitHub <noreply@github.com>2024-02-02 22:28:02 -0800
commit14764896c34b230a5563f48d8b8e565de2f3aa10 (patch)
tree2f105d3f6222103f458054f1cd38e280b6fb52b4 /source/slang/slang-language-server-completion.cpp
parentc15e7ade4e27e1649d5b98f5854e9e52bb9e60ae (diff)
Capability type checking. (#3530)
* Capability type checking. * Fix. --------- Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-language-server-completion.cpp')
-rw-r--r--source/slang/slang-language-server-completion.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/source/slang/slang-language-server-completion.cpp b/source/slang/slang-language-server-completion.cpp
index 6038a432a..b723e14b8 100644
--- a/source/slang/slang-language-server-completion.cpp
+++ b/source/slang/slang-language-server-completion.cpp
@@ -443,6 +443,11 @@ List<LanguageServerProtocol::CompletionItem> CompletionContext::collectMembersAn
linkage->contentAssistInfo.completionSuggestions.swizzleBaseType,
linkage->contentAssistInfo.completionSuggestions.elementCount);
}
+ else if (linkage->contentAssistInfo.completionSuggestions.scopeKind ==
+ CompletionSuggestions::ScopeKind::Capabilities)
+ {
+ return createCapabilityCandidates();
+ }
List<LanguageServerProtocol::CompletionItem> result;
bool useCommitChars = true;
bool addKeywords = false;
@@ -595,6 +600,24 @@ List<LanguageServerProtocol::CompletionItem> CompletionContext::collectMembersAn
return result;
}
+List<LanguageServerProtocol::CompletionItem> CompletionContext::createCapabilityCandidates()
+{
+ List<LanguageServerProtocol::CompletionItem> result;
+ List<UnownedStringSlice> names;
+ getCapabilityNames(names);
+ for (auto name : names.getArrayView(1, names.getCount()-1))
+ {
+ if (name.startsWith("_"))
+ continue;
+ LanguageServerProtocol::CompletionItem item;
+ item.data = 0;
+ item.kind = LanguageServerProtocol::kCompletionItemKindEnumMember;
+ item.label = name;
+ result.add(item);
+ }
+ return result;
+}
+
List<LanguageServerProtocol::CompletionItem> CompletionContext::createSwizzleCandidates(
Type* type, IntegerLiteralValue elementCount[2])
{