Files
hakorune/local_tests/test_weak_lifecycle.nyash

62 lines
1.5 KiB
Plaintext
Raw Normal View History

// Advanced weak reference auto-nil demonstration
box Parent {
init { name, child }
pack(parentName) {
me.name = parentName
me.child = new Child()
me.child.setParent(me) // This creates a weak reference
}
getChild() {
return me.child
}
getName() {
return me.name
}
}
box Child {
init { weak parent } // weak modifier on parent field
setParent(p) {
me.parent = p
}
getParentInfo() {
// Check the weak reference
return "Parent reference state checked"
}
// Test method to manually check the weak field value
checkWeakParent() {
return me.parent
}
}
static box Main {
main() {
print("=== Weak Reference Auto-Nil Test ===")
local parent = new Parent("TestParent")
local child = parent.getChild()
print("Step 1: Initial setup complete")
print("Initial check: " + child.getParentInfo())
// Check initial weak reference value
local parentRef = child.checkWeakParent()
print("Initial parent ref exists: yes")
print("Step 2: Simulating parent 'drop' by setting to 0")
parent = 0 // This should trigger weak reference invalidation
print("Step 3: Checking weak reference after parent drop")
local parentRef2 = child.checkWeakParent()
print("After drop parent ref exists: still checking")
return "weak reference lifecycle test completed"
}
}