ctxt_stack() can be tricky to use in real code because all
intervening frames are returned with the stack, including those at
ctxt_stack() own call site. stack_trim() makes it easy to
remove layers of intervening calls.
stack_trim(stack, n = 1)
| stack | An evaluation stack. |
|---|---|
| n | The number of call frames (not eval frames) to trim off the top of the stack. In other words, the number of layers of intervening frames to trim. |
These functions are deprecated and replaced by trace_back().
#> [[1]] #> <frame 37> (35) #> expr: identity(ctxt_stack()) #> env: [local 0x5616e7b643b8] #> #> [[2]] #> <frame 36> (35) #> expr: identity(identity(ctxt_stack())) #> env: [local 0x5616e7b64230] #> #> [[3]] #> <frame 35> (34) #> expr: eval(expr, envir, enclos) #> env: [local 0x5616e7bb7cc8] #> #> [[4]] #> <frame 34> (24) #> expr: eval(expr, envir, enclos) #> env: [local 0x5616e7b64070] #> #> [[5]] #> <frame 33> (24) #> expr: withVisible(eval(expr, envir, enclos)) #> env: [local 0x5616e7b63e40] #> #> [[6]] #> <frame 32> (24) #> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, <...> #> env: [local 0x5616e7b63468] #> #> [[7]] #> <frame 31> (30) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [local 0x5616e7b66700] #> #> [[8]] #> <frame 30> (29) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [local 0x5616e7b66310] #> #> [[9]] #> <frame 29> (28) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [local 0x5616e7b65f58] #> #> [[10]] #> <frame 28> (27) #> expr: tryCatch(expr, error = function(e) { <...> #> env: [local 0x5616e7b65740] #> #> [[11]] #> <frame 27> (26) #> expr: try(f, silent = TRUE) #> env: [local 0x5616e7b65040] #> #> [[12]] #> <frame 26> (24) #> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, <...> #> env: [local 0x5616e7b64eb8] #> #> [[13]] #> <frame 25> (24) #> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr, <...> #> env: [local 0x5616e7b68c08] #> #> [[14]] #> <frame 24> (23) #> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, <...> #> env: [frame 0x5616e7b8d0c8] #> #> [[15]] #> <frame 23> (22) #> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE) #> env: [frame 0x5616ebf304b0] #> #> [[16]] #> <frame 22> (21) #> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic, <...> #> env: [frame 0x5616ebf34fa0] #> #> [[17]] #> <frame 21> (20) #> expr: highlight_examples(code, topic, env = env) #> env: [frame 0x5616ebf44910] #> #> [[18]] #> <frame 20> (19) #> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()), <...> #> env: [frame 0x5616ec085b98] #> #> [[19]] #> <frame 19> (17) #> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run) #> env: [frame 0x5616ec87c8f0] #> #> [[20]] #> <frame 18> (17) #> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples, <...> #> env: [frame 0x5616ec87d028] #> #> [[21]] #> <frame 17> (16) #> expr: .f(.x[[i]], ...) #> env: [frame 0x5616ea921ea0] #> #> [[22]] #> <frame 16> (15) #> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy, <...> #> env: [frame 0x5616e726b258] #> #> [[23]] #> <frame 15> (14) #> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x5616e6c5d868] #> #> [[24]] #> <frame 14> (13) #> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x5616e4de4458] #> #> [[25]] #> <frame 13> (12) #> expr: pkgdown::build_site(...) #> env: [frame 0x5616e4da9bc0] #> #> [[26]] #> <frame 12> (0) #> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet) <...> #> env: [frame 0x5616e426fef0] #> #> [[27]] #> <frame 11> (0) #> expr: (function (what, args, quote = FALSE, envir = parent.frame()) <...> #> env: [frame 0x5616e426ede0] #> #> [[28]] #> <frame 10> (0) #> expr: do.call(do.call, c(readRDS("/tmp/RtmpJYaP2e/callr-fun-7b2c52a64aa5"), <...> #> env: [frame 0x5616e49e25a8] #> #> [[29]] #> <frame 9> (0) #> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpJYaP2e/callr-fun-7b2c52a64aa5"), <...> #> env: [frame 0x5616e49e2928] #> #> [[30]] #> <frame 8> (0) #> expr: withCallingHandlers({ <...> #> env: [frame 0x5616e49df348] #> #> [[31]] #> <frame 7> (6) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x5616e49df9d8] #> #> [[32]] #> <frame 6> (5) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [frame 0x5616e49dfd20] #> #> [[33]] #> <frame 5> (2) #> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh]) #> env: [frame 0x5616e49e00d8] #> #> [[34]] #> <frame 4> (3) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x5616e49e0688] #> #> [[35]] #> <frame 3> (2) #> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), <...> #> env: [frame 0x5616e49e09d0] #> #> [[36]] #> <frame 2> (1) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [frame 0x5616e49e0d18] #> #> [[37]] #> <frame 1> (0) #> expr: tryCatch(withCallingHandlers({ <...> #> env: [frame 0x5616e49dd0e0] #> #> [[38]] #> <frame 0> [global] #> expr: NULL #> env: [global] #> #> attr(,"class") #> [1] "ctxt_stack" "stack"#> [[1]] #> <frame 35> (34) #> expr: eval(expr, envir, enclos) #> env: [local 0x5616e7bb7cc8] #> #> [[2]] #> <frame 34> (24) #> expr: eval(expr, envir, enclos) #> env: [local 0x5616e7505ac8] #> #> [[3]] #> <frame 33> (24) #> expr: withVisible(eval(expr, envir, enclos)) #> env: [local 0x5616e75057f0] #> #> [[4]] #> <frame 32> (24) #> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, <...> #> env: [local 0x5616e7504fa0] #> #> [[5]] #> <frame 31> (30) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [local 0x5616e7504718] #> #> [[6]] #> <frame 30> (29) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [local 0x5616e7504398] #> #> [[7]] #> <frame 29> (28) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [local 0x5616e7503fa8] #> #> [[8]] #> <frame 28> (27) #> expr: tryCatch(expr, error = function(e) { <...> #> env: [local 0x5616e7507588] #> #> [[9]] #> <frame 27> (26) #> expr: try(f, silent = TRUE) #> env: [local 0x5616e7507358] #> #> [[10]] #> <frame 26> (24) #> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, <...> #> env: [local 0x5616e75071d0] #> #> [[11]] #> <frame 25> (24) #> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr, <...> #> env: [local 0x5616e75070f0] #> #> [[12]] #> <frame 24> (23) #> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, <...> #> env: [frame 0x5616e751fd78] #> #> [[13]] #> <frame 23> (22) #> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE) #> env: [frame 0x5616ebf304b0] #> #> [[14]] #> <frame 22> (21) #> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic, <...> #> env: [frame 0x5616ebf34fa0] #> #> [[15]] #> <frame 21> (20) #> expr: highlight_examples(code, topic, env = env) #> env: [frame 0x5616ebf44910] #> #> [[16]] #> <frame 20> (19) #> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()), <...> #> env: [frame 0x5616ec085b98] #> #> [[17]] #> <frame 19> (17) #> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run) #> env: [frame 0x5616ec87c8f0] #> #> [[18]] #> <frame 18> (17) #> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples, <...> #> env: [frame 0x5616ec87d028] #> #> [[19]] #> <frame 17> (16) #> expr: .f(.x[[i]], ...) #> env: [frame 0x5616ea921ea0] #> #> [[20]] #> <frame 16> (15) #> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy, <...> #> env: [frame 0x5616e726b258] #> #> [[21]] #> <frame 15> (14) #> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x5616e6c5d868] #> #> [[22]] #> <frame 14> (13) #> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x5616e4de4458] #> #> [[23]] #> <frame 13> (12) #> expr: pkgdown::build_site(...) #> env: [frame 0x5616e4da9bc0] #> #> [[24]] #> <frame 12> (0) #> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet) <...> #> env: [frame 0x5616e426fef0] #> #> [[25]] #> <frame 11> (0) #> expr: (function (what, args, quote = FALSE, envir = parent.frame()) <...> #> env: [frame 0x5616e426ede0] #> #> [[26]] #> <frame 10> (0) #> expr: do.call(do.call, c(readRDS("/tmp/RtmpJYaP2e/callr-fun-7b2c52a64aa5"), <...> #> env: [frame 0x5616e49e25a8] #> #> [[27]] #> <frame 9> (0) #> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpJYaP2e/callr-fun-7b2c52a64aa5"), <...> #> env: [frame 0x5616e49e2928] #> #> [[28]] #> <frame 8> (0) #> expr: withCallingHandlers({ <...> #> env: [frame 0x5616e49df348] #> #> [[29]] #> <frame 7> (6) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x5616e49df9d8] #> #> [[30]] #> <frame 6> (5) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [frame 0x5616e49dfd20] #> #> [[31]] #> <frame 5> (2) #> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh]) #> env: [frame 0x5616e49e00d8] #> #> [[32]] #> <frame 4> (3) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x5616e49e0688] #> #> [[33]] #> <frame 3> (2) #> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), <...> #> env: [frame 0x5616e49e09d0] #> #> [[34]] #> <frame 2> (1) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [frame 0x5616e49e0d18] #> #> [[35]] #> <frame 1> (0) #> expr: tryCatch(withCallingHandlers({ <...> #> env: [frame 0x5616e49dd0e0] #> #> [[36]] #> <frame 0> [global] #> expr: NULL #> env: [global] #> #> attr(,"class") #> [1] "ctxt_stack" "stack"# Note that it also takes care of calls intervening at its own call # site: identity(identity( stack_trim(identity(identity(ctxt_stack()))) ))#> [[1]] #> <frame 35> (34) #> expr: eval(expr, envir, enclos) #> env: [local 0x5616e7bb7cc8] #> #> [[2]] #> <frame 34> (24) #> expr: eval(expr, envir, enclos) #> env: [local 0x5616e700b3f8] #> #> [[3]] #> <frame 33> (24) #> expr: withVisible(eval(expr, envir, enclos)) #> env: [local 0x5616e700b1c8] #> #> [[4]] #> <frame 32> (24) #> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, <...> #> env: [local 0x5616e700ab00] #> #> [[5]] #> <frame 31> (30) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [local 0x5616e700a518] #> #> [[6]] #> <frame 30> (29) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [local 0x5616e700a010] #> #> [[7]] #> <frame 29> (28) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [local 0x5616e7009cc8] #> #> [[8]] #> <frame 28> (27) #> expr: tryCatch(expr, error = function(e) { <...> #> env: [local 0x5616e7011078] #> #> [[9]] #> <frame 27> (26) #> expr: try(f, silent = TRUE) #> env: [local 0x5616e7010e48] #> #> [[10]] #> <frame 26> (24) #> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, <...> #> env: [local 0x5616e7010c50] #> #> [[11]] #> <frame 25> (24) #> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr, <...> #> env: [local 0x5616e7010b70] #> #> [[12]] #> <frame 24> (23) #> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, <...> #> env: [frame 0x5616e703fc58] #> #> [[13]] #> <frame 23> (22) #> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE) #> env: [frame 0x5616ebf304b0] #> #> [[14]] #> <frame 22> (21) #> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic, <...> #> env: [frame 0x5616ebf34fa0] #> #> [[15]] #> <frame 21> (20) #> expr: highlight_examples(code, topic, env = env) #> env: [frame 0x5616ebf44910] #> #> [[16]] #> <frame 20> (19) #> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()), <...> #> env: [frame 0x5616ec085b98] #> #> [[17]] #> <frame 19> (17) #> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run) #> env: [frame 0x5616ec87c8f0] #> #> [[18]] #> <frame 18> (17) #> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples, <...> #> env: [frame 0x5616ec87d028] #> #> [[19]] #> <frame 17> (16) #> expr: .f(.x[[i]], ...) #> env: [frame 0x5616ea921ea0] #> #> [[20]] #> <frame 16> (15) #> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy, <...> #> env: [frame 0x5616e726b258] #> #> [[21]] #> <frame 15> (14) #> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x5616e6c5d868] #> #> [[22]] #> <frame 14> (13) #> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x5616e4de4458] #> #> [[23]] #> <frame 13> (12) #> expr: pkgdown::build_site(...) #> env: [frame 0x5616e4da9bc0] #> #> [[24]] #> <frame 12> (0) #> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet) <...> #> env: [frame 0x5616e426fef0] #> #> [[25]] #> <frame 11> (0) #> expr: (function (what, args, quote = FALSE, envir = parent.frame()) <...> #> env: [frame 0x5616e426ede0] #> #> [[26]] #> <frame 10> (0) #> expr: do.call(do.call, c(readRDS("/tmp/RtmpJYaP2e/callr-fun-7b2c52a64aa5"), <...> #> env: [frame 0x5616e49e25a8] #> #> [[27]] #> <frame 9> (0) #> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpJYaP2e/callr-fun-7b2c52a64aa5"), <...> #> env: [frame 0x5616e49e2928] #> #> [[28]] #> <frame 8> (0) #> expr: withCallingHandlers({ <...> #> env: [frame 0x5616e49df348] #> #> [[29]] #> <frame 7> (6) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x5616e49df9d8] #> #> [[30]] #> <frame 6> (5) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [frame 0x5616e49dfd20] #> #> [[31]] #> <frame 5> (2) #> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh]) #> env: [frame 0x5616e49e00d8] #> #> [[32]] #> <frame 4> (3) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x5616e49e0688] #> #> [[33]] #> <frame 3> (2) #> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), <...> #> env: [frame 0x5616e49e09d0] #> #> [[34]] #> <frame 2> (1) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [frame 0x5616e49e0d18] #> #> [[35]] #> <frame 1> (0) #> expr: tryCatch(withCallingHandlers({ <...> #> env: [frame 0x5616e49dd0e0] #> #> [[36]] #> <frame 0> [global] #> expr: NULL #> env: [global] #> #> attr(,"class") #> [1] "ctxt_stack" "stack"# It is especially useful when used within a function that needs to # inspect the evaluation stack but should nonetheless be callable # within nested calls without side effects: stack_util <- function() { # n = 2 means that two layers of intervening calls should be # removed: The layer at ctxt_stack()'s call site (including the # stack_trim() call), and the layer at stack_util()'s call. stack <- stack_trim(ctxt_stack(), n = 2) stack } user_fn <- function() { # A user calls your stack utility with intervening frames: identity(identity(stack_util())) } # These intervening frames won't appear in the evaluation stack identity(user_fn())#> [[1]] #> <frame 37> (35) #> expr: user_fn() #> env: [local 0x5616e65e0ca0] #> #> [[2]] #> <frame 36> (35) #> expr: identity(user_fn()) #> env: [local 0x5616e65e0c30] #> #> [[3]] #> <frame 35> (34) #> expr: eval(expr, envir, enclos) #> env: [local 0x5616e7bb7cc8] #> #> [[4]] #> <frame 34> (24) #> expr: eval(expr, envir, enclos) #> env: [local 0x5616e65e09c8] #> #> [[5]] #> <frame 33> (24) #> expr: withVisible(eval(expr, envir, enclos)) #> env: [local 0x5616e65e0798] #> #> [[6]] #> <frame 32> (24) #> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler, <...> #> env: [local 0x5616e65dfea0] #> #> [[7]] #> <frame 31> (30) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [local 0x5616e65e3640] #> #> [[8]] #> <frame 30> (29) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [local 0x5616e65e3250] #> #> [[9]] #> <frame 29> (28) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [local 0x5616e65e2ed0] #> #> [[10]] #> <frame 28> (27) #> expr: tryCatch(expr, error = function(e) { <...> #> env: [local 0x5616e65e2530] #> #> [[11]] #> <frame 27> (26) #> expr: try(f, silent = TRUE) #> env: [local 0x5616e65e2178] #> #> [[12]] #> <frame 26> (24) #> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir, <...> #> env: [local 0x5616e65e1ff0] #> #> [[13]] #> <frame 25> (24) #> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr, <...> #> env: [local 0x5616e65e1df8] #> #> [[14]] #> <frame 24> (23) #> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos, <...> #> env: [frame 0x5616e660a530] #> #> [[15]] #> <frame 23> (22) #> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE) #> env: [frame 0x5616ebf304b0] #> #> [[16]] #> <frame 22> (21) #> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic, <...> #> env: [frame 0x5616ebf34fa0] #> #> [[17]] #> <frame 21> (20) #> expr: highlight_examples(code, topic, env = env) #> env: [frame 0x5616ebf44910] #> #> [[18]] #> <frame 20> (19) #> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()), <...> #> env: [frame 0x5616ec085b98] #> #> [[19]] #> <frame 19> (17) #> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run) #> env: [frame 0x5616ec87c8f0] #> #> [[20]] #> <frame 18> (17) #> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples, <...> #> env: [frame 0x5616ec87d028] #> #> [[21]] #> <frame 17> (16) #> expr: .f(.x[[i]], ...) #> env: [frame 0x5616ea921ea0] #> #> [[22]] #> <frame 16> (15) #> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy, <...> #> env: [frame 0x5616e726b258] #> #> [[23]] #> <frame 15> (14) #> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x5616e6c5d868] #> #> [[24]] #> <frame 14> (13) #> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run, <...> #> env: [frame 0x5616e4de4458] #> #> [[25]] #> <frame 13> (12) #> expr: pkgdown::build_site(...) #> env: [frame 0x5616e4da9bc0] #> #> [[26]] #> <frame 12> (0) #> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet) <...> #> env: [frame 0x5616e426fef0] #> #> [[27]] #> <frame 11> (0) #> expr: (function (what, args, quote = FALSE, envir = parent.frame()) <...> #> env: [frame 0x5616e426ede0] #> #> [[28]] #> <frame 10> (0) #> expr: do.call(do.call, c(readRDS("/tmp/RtmpJYaP2e/callr-fun-7b2c52a64aa5"), <...> #> env: [frame 0x5616e49e25a8] #> #> [[29]] #> <frame 9> (0) #> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpJYaP2e/callr-fun-7b2c52a64aa5"), <...> #> env: [frame 0x5616e49e2928] #> #> [[30]] #> <frame 8> (0) #> expr: withCallingHandlers({ <...> #> env: [frame 0x5616e49df348] #> #> [[31]] #> <frame 7> (6) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x5616e49df9d8] #> #> [[32]] #> <frame 6> (5) #> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]]) #> env: [frame 0x5616e49dfd20] #> #> [[33]] #> <frame 5> (2) #> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh]) #> env: [frame 0x5616e49e00d8] #> #> [[34]] #> <frame 4> (3) #> expr: doTryCatch(return(expr), name, parentenv, handler) #> env: [frame 0x5616e49e0688] #> #> [[35]] #> <frame 3> (2) #> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]), <...> #> env: [frame 0x5616e49e09d0] #> #> [[36]] #> <frame 2> (1) #> expr: tryCatchList(expr, classes, parentenv, handlers) #> env: [frame 0x5616e49e0d18] #> #> [[37]] #> <frame 1> (0) #> expr: tryCatch(withCallingHandlers({ <...> #> env: [frame 0x5616e49dd0e0] #> #> [[38]] #> <frame 0> [global] #> expr: NULL #> env: [global] #> #> attr(,"class") #> [1] "ctxt_stack" "stack"