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.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp
index adfc36641..fbe38bac7 100644
--- a/source/slang/slang-check-expr.cpp
+++ b/source/slang/slang-check-expr.cpp
@@ -359,6 +359,7 @@ namespace Slang
}
RefPtr<Expr> SemanticsVisitor::createLookupResultExpr(
+ Name* name,
LookupResult const& lookupResult,
RefPtr<Expr> baseExpr,
SourceLoc loc)
@@ -366,6 +367,7 @@ namespace Slang
if (lookupResult.isOverloaded())
{
auto overloadedExpr = new OverloadedExpr();
+ overloadedExpr->name = name;
overloadedExpr->loc = loc;
overloadedExpr->type = QualType(
getSession()->getOverloadedType());
@@ -960,10 +962,11 @@ namespace Slang
// declarations on the type and try to call one of them.
{
+ Name* name = getName("operator[]");
LookupResult lookupResult = lookUpMember(
getSession(),
this,
- getName("operator[]"),
+ name,
baseType);
if (!lookupResult.isValid())
{
@@ -977,7 +980,7 @@ namespace Slang
// case the attempt to call it will trigger overload
// resolution.
RefPtr<Expr> subscriptFuncExpr = createLookupResultExpr(
- lookupResult, subscriptExpr->BaseExpression, subscriptExpr->loc);
+ name, lookupResult, subscriptExpr->BaseExpression, subscriptExpr->loc);
RefPtr<InvokeExpr> subscriptCallExpr = new InvokeExpr();
subscriptCallExpr->loc = subscriptExpr->loc;
@@ -1181,6 +1184,7 @@ namespace Slang
if (lookupResult.isValid())
{
return createLookupResultExpr(
+ expr->name,
lookupResult,
nullptr,
expr->loc);
@@ -1531,6 +1535,7 @@ namespace Slang
}
return createLookupResultExpr(
+ expr->name,
lookupResult,
baseExpression,
expr->loc);
@@ -1638,6 +1643,7 @@ namespace Slang
// to in this context...
return createLookupResultExpr(
+ expr->name,
lookupResult,
expr->BaseExpression,
expr->loc);