50 lines
1.1 KiB
Plaintext
50 lines
1.1 KiB
Plaintext
|
|
// Basic weak reference test case
|
||
|
|
|
||
|
|
box Parent {
|
||
|
|
init { child }
|
||
|
|
|
||
|
|
pack() {
|
||
|
|
me.child = new Child()
|
||
|
|
me.child.setParent(me) // This should create a weak reference
|
||
|
|
}
|
||
|
|
|
||
|
|
getChild() {
|
||
|
|
return me.child
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
box Child {
|
||
|
|
init { weak parent } // weak modifier on parent field
|
||
|
|
|
||
|
|
setParent(p) {
|
||
|
|
me.parent = p
|
||
|
|
}
|
||
|
|
|
||
|
|
checkParent() {
|
||
|
|
return me.parent != null
|
||
|
|
}
|
||
|
|
|
||
|
|
getParentInfo() {
|
||
|
|
if me.parent != null {
|
||
|
|
return "Parent exists"
|
||
|
|
} else {
|
||
|
|
return "Parent is null (dropped)"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static box Main {
|
||
|
|
main() {
|
||
|
|
local p = new Parent()
|
||
|
|
local child = p.getChild()
|
||
|
|
|
||
|
|
print("Initial parent check: " + child.getParentInfo())
|
||
|
|
|
||
|
|
// When p goes out of scope, child.parent should automatically become null
|
||
|
|
p = 0 // Setting to 0 instead of null to avoid the undefined variable issue
|
||
|
|
|
||
|
|
print("After parent dropped: " + child.getParentInfo())
|
||
|
|
|
||
|
|
return "weak reference test completed"
|
||
|
|
}
|
||
|
|
}
|