.DEFINITE should be considered a macro (just like .WHAT , .HOW , etc.). It is directly processed in Actions and converted to nqp::p6definite() op.
.defined is a method that lives in Mu and that can be overridden by your class. It is actually overridden for Failure , so the Failure instance can act as an undefined value, for example. a if (and "handle" failure).
my $a = Failure.new("foo"); say "bar" if $a;
So, to answer your question:
my $a = Failure.new("foo"); say $a.DEFINITE;
Elizabeth Mattijsen
source share