diff options
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-lookup.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/source/slang/slang-lookup.cpp b/source/slang/slang-lookup.cpp index 604cee2b7..a9b472776 100644 --- a/source/slang/slang-lookup.cpp +++ b/source/slang/slang-lookup.cpp @@ -959,7 +959,23 @@ static void _lookUpInScopes( } } - _lookUpMembersInType(astBuilder, name, type, request, result, breadcrumbPtr); + // When looking up in an extension declaration, we should not automatically + // dereference pointer types, as the 'This' type should refer to the + // extension target type itself, not the pointed-to type. + LookupRequest modifiedRequest = request; + if (aggTypeDeclBaseRef.as<ExtensionDecl>()) + { + modifiedRequest.options = (LookupOptions)((uint32_t)modifiedRequest.options | + (uint32_t)LookupOptions::NoDeref); + } + + _lookUpMembersInType( + astBuilder, + name, + type, + modifiedRequest, + result, + breadcrumbPtr); } else { |
