summaryrefslogtreecommitdiff
path: root/source/slang/slang-lookup.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-08-10 01:58:41 -0700
committerGitHub <noreply@github.com>2022-08-10 01:58:41 -0700
commit89083c4b50af8e48e70b25b63cc62aca21ab706c (patch)
tree38e9544cd218dbeea0a2f26f267ac16f275c0291 /source/slang/slang-lookup.cpp
parent9df7fcb023bd5a22f35ecd609b7a50cc6634976c (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.cpp41
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;