$prefix = Caster::PREFIX_VIRTUAL;
if ($c->
getThis()) { $a[$prefix.'this'
] =
new CutStub($c->
getThis());
} $function =
$c->
getFunction();
$frame =
[ 'class' =>
$function->class ?? null,
'type' =>
isset($function->class
) ?
($function->
isStatic() ? '::' : '->'
) : null,
'function' =>
$function->name,
'file' =>
$c->
getExecutingFile(),
'line' =>
$c->
getExecutingLine(),
];
if ($trace =
$c->
getTrace(\DEBUG_BACKTRACE_IGNORE_ARGS
)) { $function =
new \
ReflectionGenerator($c->
getExecutingGenerator());
array_unshift($trace,
[ 'function' => 'yield',
'file' =>
$function->
getExecutingFile(),
'line' =>
$function->
getExecutingLine(),
]);
$trace[] =
$frame;
$a[$prefix.'trace'
] =
new TraceStub($trace, false, 0, -1, -1
);
}