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-lookup.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-lookup.cpp')
| -rw-r--r-- | source/slang/slang-lookup.cpp | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/source/slang/slang-lookup.cpp b/source/slang/slang-lookup.cpp index 85924ab30..48f7ea099 100644 --- a/source/slang/slang-lookup.cpp +++ b/source/slang/slang-lookup.cpp @@ -267,6 +267,26 @@ static void _lookUpDirectAndTransparentMembers( } } +LookupRequest initLookupRequest( + SemanticsVisitor* semantics, + Name* name, + LookupMask mask, + LookupOptions options, + Scope* scope) +{ + LookupRequest request; + request.semantics = semantics; + request.mask = mask; + request.options = options; + request.scope = scope; + + if (semantics && semantics->getSession() && + name == semantics->getSession()->getCompletionRequestTokenName()) + request.options = (LookupOptions)((int)request.options | (int)LookupOptions::Completion); + + return request; +} + /// Perform "direct" lookup in a container declaration LookupResult lookUpDirectAndTransparentMembers( ASTBuilder* astBuilder, @@ -275,9 +295,7 @@ LookupResult lookUpDirectAndTransparentMembers( DeclRef<ContainerDecl> containerDeclRef, LookupMask mask) { - LookupRequest request; - request.semantics = semantics; - request.mask = mask; + LookupRequest request = initLookupRequest(semantics, name, mask, LookupOptions::None, nullptr); LookupResult result; _lookUpDirectAndTransparentMembers( astBuilder, @@ -984,13 +1002,7 @@ LookupResult lookUp( Scope* scope, LookupMask mask) { - LookupRequest request; - request.semantics = semantics; - request.scope = scope; - request.mask = mask; - if (semantics && semantics->getSession() && - name == semantics->getSession()->getCompletionRequestTokenName()) - request.options = (LookupOptions)((int)request.options | (int)LookupOptions::Completion); + LookupRequest request = initLookupRequest(semantics, name, mask, LookupOptions::None, scope); LookupResult result; _lookUpInScopes(astBuilder, name, request, result); return result; @@ -1004,14 +1016,7 @@ LookupResult lookUpMember( LookupMask mask, LookupOptions options) { - LookupRequest request; - request.semantics = semantics; - request.mask = mask; - request.options = options; - if (semantics && semantics->getSession() && - name == semantics->getSession()->getCompletionRequestTokenName()) - request.options = (LookupOptions)((int)request.options | (int)LookupOptions::Completion); - + LookupRequest request = initLookupRequest(semantics, name, mask, options, nullptr); LookupResult result; _lookUpMembersInType(astBuilder, name, type, request, result, nullptr); return result; |
