@@ -4146,7 +4146,7 @@ def genAsyncDtor(self, md):
41464146 actorvar = actor .var ()
41474147 method = MethodDefn (self .makeDtorMethodDecl (md ))
41484148
4149- method .addstmts (self .dtorPrologue (actorvar ))
4149+ method .addstmt (self .dtorPrologue (actorvar ))
41504150
41514151 msgvar , stmts = self .makeMessage (md , errfnSendDtor , actorvar )
41524152 sendok , sendstmts = self .sendAsync (md , msgvar , actorvar )
@@ -4172,7 +4172,7 @@ def genBlockingDtorMethod(self, md):
41724172 actorvar = actor .var ()
41734173 method = MethodDefn (self .makeDtorMethodDecl (md ))
41744174
4175- method .addstmts (self .dtorPrologue (actorvar ))
4175+ method .addstmt (self .dtorPrologue (actorvar ))
41764176
41774177 msgvar , stmts = self .makeMessage (md , errfnSendDtor , actorvar )
41784178
@@ -4220,7 +4220,14 @@ def destroyActor(self, md, actorexpr, why=_DestroyReason.Deletion):
42204220 protoId = _protocolId (destroyedType ))]
42214221
42224222 def dtorPrologue (self , actorexpr ):
4223- return [self .failIfNullActor (actorexpr ), Whitespace .NL ]
4223+ return StmtCode (
4224+ '''
4225+ if (!${actor} || !${actor}->CanSend()) {
4226+ NS_WARNING("Attempt to __delete__ missing or closed actor");
4227+ return false;
4228+ }
4229+ ''' ,
4230+ actor = actorexpr )
42244231
42254232 def dtorEpilogue (self , md , actorexpr ):
42264233 return self .destroyActor (md , actorexpr )
@@ -4408,13 +4415,6 @@ def genRecvCase(self, md):
44084415
44094416 # helper methods
44104417
4411- def failIfNullActor (self , actorExpr , retOnNull = ExprLiteral .FALSE , msg = None ):
4412- failif = StmtIf (ExprNot (actorExpr ))
4413- if msg :
4414- failif .addifstmt (_printWarningMessage (msg ))
4415- failif .addifstmt (StmtReturn (retOnNull ))
4416- return failif
4417-
44184418 def makeMessage (self , md , errfn , fromActor = None ):
44194419 msgvar = self .msgvar
44204420 routingId = self .protocol .routingId (fromActor )
0 commit comments