summaryrefslogtreecommitdiff
path: root/source/slang/slang-check-expr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/slang/slang-check-expr.cpp')
-rw-r--r--source/slang/slang-check-expr.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp
index addd3a5c4..b7f99c4e7 100644
--- a/source/slang/slang-check-expr.cpp
+++ b/source/slang/slang-check-expr.cpp
@@ -382,15 +382,15 @@ namespace Slang
Expr* base,
SourceLoc loc)
{
- auto ptrLikeType = as<PointerLikeType>(base->type);
- SLANG_ASSERT(ptrLikeType);
+ auto elementType = getPointedToTypeIfCanImplicitDeref(base->type);
+ SLANG_ASSERT(elementType);
auto derefExpr = m_astBuilder->create<DerefExpr>();
derefExpr->loc = loc;
derefExpr->base = base;
- derefExpr->type = QualType(ptrLikeType->elementType);
+ derefExpr->type = QualType(elementType);
- // TODO(tfoley): handle l-value status here
+ derefExpr->type.isLeftValue = base->type.isLeftValue;
return derefExpr;
}
@@ -1258,7 +1258,9 @@ namespace Slang
m_astBuilder,
this,
name,
- baseType);
+ baseType,
+ LookupMask::Default,
+ LookupOptions::NoDeref);
if (!lookupResult.isValid())
{
goto fail;