diff --git a/CgOp.pm b/CgOp.pm index 59b66d35..934ecb8f 100644 --- a/CgOp.pm +++ b/CgOp.pm @@ -589,8 +589,11 @@ use warnings; sub die { my ($msg) = @_; - $msg = fetch(string_var($msg)) unless blessed($msg); - rawccall(rawnew('Niecza.FatalException', $msg), 'SearchForHandler'); + if (blessed($msg)) { + rawccall(rawnew('Niecza.FatalException', $msg), 'SearchForHandler'); + } else { + rawsccall('Kernel.Die', clr_string($msg)); + } } sub letn { diff --git a/CodeGen.pm b/CodeGen.pm index 93c28f46..07515a91 100644 --- a/CodeGen.pm +++ b/CodeGen.pm @@ -70,6 +70,7 @@ use 5.010; 'System.IO.File.ReadAllText' => [m => 'System.String'], 'Lexer.RunProtoregex' => [m => 'IP6[]'], + 'Kernel.Die' => [c => 'Void'], 'Kernel.CoTake' => [c => 'Variable'], 'Kernel.Take' => [c => 'Variable'], 'Kernel.GatherHelper' => [c => 'Frame'], diff --git a/Sig.pm b/Sig.pm index b8b879ba..82f78838 100644 --- a/Sig.pm +++ b/Sig.pm @@ -62,7 +62,7 @@ use 5.010; } else { return CgOp::prog( CgOp::die("No value in " . $body->name . - "available for parameter " . $self->name), + " available for parameter " . $self->name), CgOp::null('Variable')); } }