diff options
| author | ArielG-NV <159081215+ArielG-NV@users.noreply.github.com> | 2024-04-23 12:53:32 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-23 09:53:32 -0700 |
| commit | 9f892c96c9cc093988a7d1527fdf1b0005031ded (patch) | |
| tree | 01310801ea42c5071dbe4cd42ffe310f09c9311c /source | |
| parent | 484c1e618dddf586360c03f90e6c27ece1065acd (diff) | |
use memberExpr instead of varExpr (#4008)
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-check-decl.cpp | 18 |
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) |
