diff options
| author | Yong He <yonghe@outlook.com> | 2022-08-10 01:58:41 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-08-10 01:58:41 -0700 |
| commit | 89083c4b50af8e48e70b25b63cc62aca21ab706c (patch) | |
| tree | 38e9544cd218dbeea0a2f26f267ac16f275c0291 /source/slang/slang-language-server-completion.cpp | |
| parent | 9df7fcb023bd5a22f35ecd609b7a50cc6634976c (diff) | |
Language server pointer type support + add `DLLImport` test (#2350)
* Language server pointer type support.
+ Natvis for AST.
* Add completion suggestion for GUID.
* Make executable test able to use slang-rt.
* Fix gcc argument for rpath.
* Fix DLLImport on linux.
* Fix windows.
* 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.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/source/slang/slang-language-server-completion.cpp b/source/slang/slang-language-server-completion.cpp index 93b10b816..21586089a 100644 --- a/source/slang/slang-language-server-completion.cpp +++ b/source/slang/slang-language-server-completion.cpp @@ -644,6 +644,37 @@ List<LanguageServerProtocol::CompletionItem> CompletionContext::createSwizzleCan return result; } +LanguageServerProtocol::CompletionItem CompletionContext::generateGUIDCompletionItem() +{ + StringBuilder sb; + sb << "COM(\""; + auto docHash = doc->getURI().getHashCode() ^ doc->getText().getHashCode(); + int sectionLengths[] = { 8,4,4,4,12 }; + srand((unsigned int)std::chrono::high_resolution_clock::now().time_since_epoch().count()); + auto hashStr = String(docHash, 16); + sectionLengths[0] -= (int)hashStr.getLength(); + sb << hashStr; + for (int j = 0; j < SLANG_COUNT_OF(sectionLengths); j++) + { + auto len = sectionLengths[j]; + if (j != 0) + sb << "-"; + for (int i = 0; i < len; i++) + { + auto digit = rand() % 16; + if (digit < 10) + sb << digit; + else + sb.appendChar((char)('A' + digit - 10)); + } + } + sb << "\")"; + LanguageServerProtocol::CompletionItem resultItem; + resultItem.kind = LanguageServerProtocol::kCompletionItemKindKeyword; + resultItem.label = sb.ProduceString(); + return resultItem; +} + List<LanguageServerProtocol::CompletionItem> CompletionContext::collectAttributes() { List<LanguageServerProtocol::CompletionItem> result; @@ -672,6 +703,10 @@ List<LanguageServerProtocol::CompletionItem> CompletionContext::collectAttribute } } } + + // Add a suggestion for `[COM]` attribute with generated GUID. + auto guidItem = generateGUIDCompletionItem(); + result.add(guidItem); return result; } |
