RosettaCodeData/Task/Stack-traces/Lasso/stack-traces-1.lasso

25 lines
609 B
Plaintext

// Define our own trace method
define trace => {
local(gb) = givenblock
// Set a depth counter
var(::_tracedepth)->isnota(::integer) ? $_tracedepth = 0
handle => {$_tracedepth--}
// Only output when supplied a capture
#gb ? stdoutnl(
// Indent
('\t' * $_tracedepth++) +
// Type + Method
#gb->self->type + '.' + #gb->calledname +
// Call site file
': ' + #gb->home->callsite_file +
// Line number and column number
' (line '+#gb->home->callsite_line + ', col ' + #gb->home->callsite_col +')'
)
return #gb()
}