Complete weak reference auto-nil system implementation

Co-authored-by: moe-charm <217100418+moe-charm@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-08-12 22:23:38 +00:00
parent 5fe4891f19
commit c6a135193d
5 changed files with 79 additions and 18 deletions

54
test_weak_simple.nyash Normal file
View File

@ -0,0 +1,54 @@
// Simple direct test of weak reference auto-nil behavior
box Parent {
init { name }
pack(parentName) {
me.name = parentName
}
}
box Child {
init { weak parent } // weak modifier on parent field
setParent(p) {
me.parent = p
}
// Direct access to weak field
getParent() {
return me.parent
}
// Check if parent is null directly
isParentNull() {
local parentRef = me.parent
print("Direct parent access returned: " + parentRef.toString())
return parentRef
}
}
static box Main {
main() {
print("=== Simple Weak Reference Test ===")
local parent = new Parent("TestParent")
local child = new Child()
print("Step 1: Set parent")
child.setParent(parent)
print("Parent before drop: " + child.getParent().toString())
print("Step 2: Drop parent")
parent = 0 // This should trigger weak reference invalidation
print("Step 3: Check parent after drop")
local parentAfterDrop = child.getParent()
print("Parent after drop: " + parentAfterDrop.toString())
print("Step 4: Direct null check")
child.isParentNull()
return "Simple test completed"
}
}