diff options
| author | kaizhangNV <149626564+kaizhangNV@users.noreply.github.com> | 2025-06-12 14:59:27 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-06-12 12:59:27 -0700 |
| commit | 60b66c309075e91824aef69a153e304561ca6041 (patch) | |
| tree | 982f92232cf35a6d282e6dad76a4ff321582c4bc /source | |
| parent | 3ffeaf4c7f22bfe95702da76d710362b277e15ac (diff) | |
Fix issue of missing scope for 'Differential' type (#7433)
* Fix issue of missing scope for 'Differential' type
When we synthesize the struct decl for Differential type, we should
add the ownedScope for this decl, because the scope is used in lots
of locations in the following synthesized processes, e.g. constructor
synthesize. And that could cause surprising behavior, e.g. the 'this'
expression could access the members of parent struct decl.
Fix the issue by adding the scope. The containerDecl will be the
Differential struct decl itself, parent scope will be the parent struct.
* Add a unit-test
Diffstat (limited to 'source')
| -rw-r--r-- | source/slang/slang-check-expr.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp index a530eb8f0..43987132e 100644 --- a/source/slang/slang-check-expr.cpp +++ b/source/slang/slang-check-expr.cpp @@ -674,6 +674,9 @@ Expr* SemanticsVisitor::maybeUseSynthesizedDeclForLookupResult( conformanceDecl->base.type = m_astBuilder->getDiffInterfaceType(); structDecl->addMember(conformanceDecl); structDecl->parentDecl = parent; + structDecl->ownedScope = m_astBuilder->create<Scope>(); + structDecl->ownedScope->containerDecl = structDecl; + structDecl->ownedScope->parent = getScope(parent); synthesizedDecl = structDecl; auto typeDef = m_astBuilder->create<TypeAliasDecl>(); |
