[t/spec] Add tricky tests (which pass after latest Rakudo patch), unfudge old simple...
[pugs.git] / t / unspecced / caller.t
blob96c2f4871c94638921cedbf3b0935737d793e05a
1 use v6;
3 use Test;
5 # L<S06/Macros>
7 =begin pod
9 Unspecced: do macros introduce a new CALLER frame?  It seems like the
10 right answer is that closure macros should, but AST macros should not.
12 =end pod
14 plan 4;
16 sub current_line {
17     return $?CALLER::LINE;
20 macro ast_compiling_current_line () {
21     return quasi :COMPILING { current_line() };
24 macro ast_current_line () {
25     return quasi { current_line() };
28 my $closure_line;
30 macro closure_current_line () {
31     $closure_line = $?LINE; return { current_line() };
35 is current_line(), $?LINE,
36     'sanity check, caller can get $?LINE';
38 is ast_compiling_current_line, $?LINE,
39     'macros with COMPILING AST do not introduce new CALLER frame';
41 is ast_current_line, $?LINE,
42     'macros with AST do not introduce new CALLER frame';
44 is closure_current_line, $closure_line,
45     'macros with closures *do* introduce a new CALLER frame';