summaryrefslogtreecommitdiff
path: root/source/slang/slang-lookup.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-lookup.cpp')
-rw-r--r--source/slang/slang-lookup.cpp27
1 files changed, 15 insertions, 12 deletions
diff --git a/source/slang/slang-lookup.cpp b/source/slang/slang-lookup.cpp
index 8c69e2013..85924ab30 100644
--- a/source/slang/slang-lookup.cpp
+++ b/source/slang/slang-lookup.cpp
@@ -607,19 +607,22 @@ static void _lookUpMembersInSuperTypeImpl(
{
// If the type was pointer-like, then dereference it
// automatically here.
- if (auto pointerLikeType = as<PointerLikeType>(superType))
+ if (((uint32_t)request.options & (uint32_t)LookupOptions::NoDeref) == 0)
{
- // Need to leave a breadcrumb to indicate that we
- // did an implicit dereference here
- BreadcrumbInfo derefBreacrumb;
- derefBreacrumb.kind = LookupResultItem::Breadcrumb::Kind::Deref;
- derefBreacrumb.prev = inBreadcrumbs;
-
- // Recursively perform lookup on the result of deref
- _lookUpMembersInType(
- astBuilder,
- name, pointerLikeType->elementType, request, ioResult, &derefBreacrumb);
- return;
+ if (auto pointerElementType = getPointedToTypeIfCanImplicitDeref(superType))
+ {
+ // Need to leave a breadcrumb to indicate that we
+ // did an implicit dereference here
+ BreadcrumbInfo derefBreacrumb;
+ derefBreacrumb.kind = LookupResultItem::Breadcrumb::Kind::Deref;
+ derefBreacrumb.prev = inBreadcrumbs;
+
+ // Recursively perform lookup on the result of deref
+ _lookUpMembersInType(
+ astBuilder,
+ name, pointerElementType, request, ioResult, &derefBreacrumb);
+ return;
+ }
}
// Default case: no dereference needed