Rules / Types, classes & roles / basic

Routine::WrapHandle Reference

Holds all information needed to unwrap a wrapped routine.

What it is #

class WrapHandle { ... }

Routines #

Signatures are reproduced from the documentation, including their declared return types. A routine listed here is part of the type's published interface; whether Raku++ implements it is a separate question, answered by the examples below.

method restore #

method restore(--> Bool:D)

Returns Bool:D.

Unwraps a wrapped routine and returns Bool::True on success.

Examples, run three ways #

Every example below comes from the official documentation, together with the output that documentation asserts. Each was then executed by Rakudo and by Raku++ when this page was built. Where the three agree, one result is shown; where they do not, all three are — because which of them is wrong is exactly the information worth having.

1 ok

sub f() { say 'f was called' }
my $wrap-handle = &f.wrap({ say 'before'; callsame; say 'after' });
f;                    # OUTPUT: «before␤f was called␤after␤»
$wrap-handle.restore;
f;                    # OUTPUT: «f was called␤»
Output
before
f was called
after
f was called

Documentation, Rakudo and Raku++ all agree.