From 5058546a065aac81835d429609e485f177795c8a Mon Sep 17 00:00:00 2001 From: dkf Date: Mon, 20 May 2024 13:38:38 +0000 Subject: Test case to demonstrate [7842f33a5c] --- tests/oo.test | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/tests/oo.test b/tests/oo.test index 8e2cb5f..ecd39fd 100644 --- a/tests/oo.test +++ b/tests/oo.test @@ -4274,8 +4274,6 @@ test oo-35.5 {Bug 1a56550e96: introspectors must traverse mixin links correctly} } -cleanup { base destroy } -result {{c d e} {c d e}} - - test oo-35.6 { Bug : teardown of an object that is a class that is an instance of itself } -setup { @@ -4297,7 +4295,37 @@ test oo-35.6 { } -cleanup { rename obj {} } -result done - +test oo-35.7 {Bug 7842f33a5c: destructor cascading} -setup { + oo::class create base + oo::class create RpcClient { + superclass base + method write name { + lappend ::result "RpcClient -> $name" + } + method create_bug {} { + MkObjectRpc create cfg [self] 111 + } + } + oo::class create MkObjectRpc { + superclass base + variable hdl + constructor {rpcHdl mqHdl} { + set hdl $mqHdl + oo::objdefine [self] forward rpc $rpcHdl + } + destructor { + my rpc write otto-$hdl + } + } + set ::result {} +} -body { + set FH [RpcClient new] + $FH create_bug + $FH destroy + join $result \n +} -cleanup { + base destroy +} -result {} cleanupTests -- cgit v0.12