summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorArielG-NV <159081215+ArielG-NV@users.noreply.github.com>2024-04-23 12:53:32 -0400
committerGitHub <noreply@github.com>2024-04-23 09:53:32 -0700
commit9f892c96c9cc093988a7d1527fdf1b0005031ded (patch)
tree01310801ea42c5071dbe4cd42ffe310f09c9311c /source
parent484c1e618dddf586360c03f90e6c27ece1065acd (diff)
use memberExpr instead of varExpr (#4008)
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-check-decl.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp
index e8cc01ef2..17551912d 100644
--- a/source/slang/slang-check-decl.cpp
+++ b/source/slang/slang-check-decl.cpp
@@ -7464,6 +7464,10 @@ namespace Slang
for (auto ctor : structDeclInfo.ctorList)
{
+ ThisExpr* thisExpr = m_astBuilder->create<ThisExpr>();
+ thisExpr->scope = ctor->ownedScope;
+ thisExpr->type = ctor->returnType.type;
+
auto seqStmt = _ensureCtorBodyIsSeqStmt(m_astBuilder, ctor);
auto seqStmtChild = m_astBuilder->create<SeqStmt>();
seqStmtChild->stmts.reserve(structDecl->members.getCount());
@@ -7474,12 +7478,16 @@ namespace Slang
|| !varDeclBase->initExpr)
continue;
- VarExpr* memberVarExpr = m_astBuilder->create<VarExpr>();
- memberVarExpr->scope = ctor->ownedScope;
- memberVarExpr->name = m->getName();
+ MemberExpr* memberExpr = m_astBuilder->create<MemberExpr>();
+ memberExpr->baseExpression = thisExpr;
+ memberExpr->declRef = m->getDefaultDeclRef();
+ memberExpr->scope = ctor->ownedScope;
+ memberExpr->loc = m->loc;
+ memberExpr->name = m->getName();
+ memberExpr->type = DeclRefType::create(getASTBuilder(), m->getDefaultDeclRef());
auto assign = m_astBuilder->create<AssignExpr>();
- assign->left = memberVarExpr;
+ assign->left = memberExpr;
assign->right = varDeclBase->initExpr;
assign->loc = m->loc;
@@ -7492,7 +7500,7 @@ namespace Slang
checkedMemberVarExpr = cachedDeclToCheckedVar[m];
else
{
- checkedMemberVarExpr = CheckTerm(memberVarExpr);
+ checkedMemberVarExpr = CheckTerm(memberExpr);
cachedDeclToCheckedVar.add({ m, checkedMemberVarExpr });
}
if (!checkedMemberVarExpr->type.isLeftValue)