http://doc.perl6.org/routine/warn
"To simply print to $*ERR, please use note instead. warn should be
reserved for use in threatening situations when you don't quite want to
throw an exception."
And for testing, maybe something like this:
use Test;
my $warning;
{
warn 'some warning';
CONTROL {
when CX::Warn {
$warning = .message;
}
}
}
is $warning, 'some warning';
On 2016-04-30 09:07:24 IRDT, rnhainsworth wrote:
> Hi. Sorry to ask again, but there are two independent questions here. 1) What
> is the purpose or best use of 'warn'. 2) How to test code that contains a
> 'warn' used as it should be.
> 1) I thought that a 'warn' would be used where sometimes the user would want
> a fail but not always. I have a module that in normal use I want to continue
> even if there is a bad condition which has a default action, but that I can
> get to fail if I set an external flag. Maybe I'm wrong. But this is not the
> question I originally asked.
> 2) whatever may be the purpose of a warn, and I assume there is a good one
> since its in core perl6, surely the code that contains it should be tested,
> which means triggering the condition and picking up the warning. I can't work
> out how to do this. Can't get Test::Output to pick up the message sent to
> stderr from warn.
> Regards
>
>
> -------- Original message --------From: Larry Wall <[email protected]> Date:
> 30/04/2016 06:45 (GMT+08:00) To: Brandon Allbery <[email protected]> Cc:
> Timo Paulssen <[email protected]>, perl6-users <[email protected]> Subject:
> Re: testing with a "warn"
> On Fri, Apr 29, 2016 at 03:50:21PM -0400, Brandon Allbery wrote:
> : On Fri, Apr 29, 2016 at 3:47 PM, Brandon Allbery <[email protected]>
> : wrote:
> : > Oh, they are resumable exceptions? Useful but rather high cost I'd think.
> : > (Granting that perl6 isn't one of those languages that think exceptions
> : > should be normal control flow. But anyone who decides it should be is
> : > probably in for a very slow slog.)
>
> Warnings are implemented like return or next; control exceptions are
> more efficient than error exceptions. (This is one of the reasons you
> have to catch them with a CONTROL block rather than a CATCH block.)
>
> : ...also I now know that I should not use warn in many cases where I would
> : have otherwise.
>
> If you need to produce actual warnings in hot code, something's wrong
> with your design. (If you just want to print to STDERR, you can use
> 'note' instead.)
>
> Larry