Deprecated lifecycle

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)

Arguments

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.

Life cycle

These functions are deprecated and replaced by trace_back().

Examples

# Intervening frames appear on the evaluation stack:
identity(identity(ctxt_stack()))
#> [[1]]
#> <frame 37> (35)
#> expr: identity(ctxt_stack())
#> env:  [local 0x560ead62ca08]
#> 
#> [[2]]
#> <frame 36> (35)
#> expr: identity(identity(ctxt_stack()))
#> env:  [local 0x560ead62c8f0]
#> 
#> [[3]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560ead6d9988]
#> 
#> [[4]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560ead62c730]
#> 
#> [[5]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560ead62c458]
#> 
#> [[6]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560ead62bdc8]
#> 
#> [[7]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560ead62b7a8]
#> 
#> [[8]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560ead62b460]
#> 
#> [[9]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560ead634a08]
#> 
#> [[10]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560ead634340]
#> 
#> [[11]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560ead634110]
#> 
#> [[12]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560ead633f88]
#> 
#> [[13]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560ead633ea8]
#> 
#> [[14]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560ead664520]
#> 
#> [[15]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eadd22bf0]
#> 
#> [[16]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eadd23fe8]
#> 
#> [[17]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eadd440b0]
#> 
#> [[18]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eaddce268]
#> 
#> [[19]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eae656780]
#> 
#> [[20]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eae655fd8]
#> 
#> [[21]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eae67d018]
#> 
#> [[22]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[23]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[24]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[25]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[26]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[27]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[28]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[29]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[30]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[31]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[32]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[33]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[34]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[35]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[36]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[37]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[38]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"     

# stack_trim() will trim the first n layers of calls:
stack_trim(identity(identity(ctxt_stack())))
#> [[1]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560ead6d9988]
#> 
#> [[2]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eacbad4d8]
#> 
#> [[3]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eacbad2a8]
#> 
#> [[4]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eacbaccf8]
#> 
#> [[5]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eacbb22d8]
#> 
#> [[6]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eacbb1f58]
#> 
#> [[7]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eacbb1c10]
#> 
#> [[8]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eacbb14a0]
#> 
#> [[9]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eacbb1270]
#> 
#> [[10]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eacbb10e8]
#> 
#> [[11]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eacbb1008]
#> 
#> [[12]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eacbc73f8]
#> 
#> [[13]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eadd22bf0]
#> 
#> [[14]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eadd23fe8]
#> 
#> [[15]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eadd440b0]
#> 
#> [[16]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eaddce268]
#> 
#> [[17]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eae656780]
#> 
#> [[18]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eae655fd8]
#> 
#> [[19]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eae67d018]
#> 
#> [[20]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[21]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[22]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[23]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[24]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[25]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[26]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[27]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[28]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[29]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[30]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[31]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[32]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[33]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[34]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[35]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[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 0x560ead6d9988]
#> 
#> [[2]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eabcd9378]
#> 
#> [[3]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eabcd9110]
#> 
#> [[4]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eabcd89d8]
#> 
#> [[5]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eabcdcad0]
#> 
#> [[6]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eabcdc788]
#> 
#> [[7]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eabcdc440]
#> 
#> [[8]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eabcdbd78]
#> 
#> [[9]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eabcdbb48]
#> 
#> [[10]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eabcdb9c0]
#> 
#> [[11]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eabcdb8e0]
#> 
#> [[12]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eabcf5f88]
#> 
#> [[13]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eadd22bf0]
#> 
#> [[14]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eadd23fe8]
#> 
#> [[15]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eadd440b0]
#> 
#> [[16]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eaddce268]
#> 
#> [[17]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eae656780]
#> 
#> [[18]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eae655fd8]
#> 
#> [[19]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eae67d018]
#> 
#> [[20]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[21]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[22]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[23]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[24]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[25]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[26]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[27]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[28]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[29]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[30]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[31]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[32]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[33]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[34]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[35]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[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 0x560eb17dee08]
#> 
#> [[2]]
#> <frame 36> (35)
#> expr: identity(user_fn())
#> env:  [local 0x560eb17ded98]
#> 
#> [[3]]
#> <frame 35> (34)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560ead6d9988]
#> 
#> [[4]]
#> <frame 34> (24)
#> expr: eval(expr, envir, enclos)
#> env:  [local 0x560eb17debd8]
#> 
#> [[5]]
#> <frame 33> (24)
#> expr: withVisible(eval(expr, envir, enclos))
#> env:  [local 0x560eb17e27a0]
#> 
#> [[6]]
#> <frame 32> (24)
#> expr: withCallingHandlers(withVisible(eval(expr, envir, enclos)), warning = wHandler,  <...>
#> env:  [local 0x560eb17e21f0]
#> 
#> [[7]]
#> <frame 31> (30)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [local 0x560eb17e1bd0]
#> 
#> [[8]]
#> <frame 30> (29)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [local 0x560eb17e1888]
#> 
#> [[9]]
#> <frame 29> (28)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [local 0x560eb17e14d0]
#> 
#> [[10]]
#> <frame 28> (27)
#> expr: tryCatch(expr, error = function(e) { <...>
#> env:  [local 0x560eb17e0e08]
#> 
#> [[11]]
#> <frame 27> (26)
#> expr: try(f, silent = TRUE)
#> env:  [local 0x560eb17e0bd8]
#> 
#> [[12]]
#> <frame 26> (24)
#> expr: handle(ev <- withCallingHandlers(withVisible(eval(expr, envir,  <...>
#> env:  [local 0x560eb17e4810]
#> 
#> [[13]]
#> <frame 25> (24)
#> expr: timing_fn(handle(ev <- withCallingHandlers(withVisible(eval(expr,  <...>
#> env:  [local 0x560eb17e46f8]
#> 
#> [[14]]
#> <frame 24> (23)
#> expr: evaluate_call(expr, parsed$src[[i]], envir = envir, enclos = enclos,  <...>
#> env:  [frame 0x560eb222fad8]
#> 
#> [[15]]
#> <frame 23> (22)
#> expr: evaluate::evaluate(code, child_env(env), new_device = TRUE, output_handler = output_handler)
#> env:  [frame 0x560eadd22bf0]
#> 
#> [[16]]
#> <frame 22> (21)
#> expr: downlit::evaluate_and_highlight(code, fig_save = fig_save_topic,  <...>
#> env:  [frame 0x560eadd23fe8]
#> 
#> [[17]]
#> <frame 21> (20)
#> expr: highlight_examples(code, topic, env = env)
#> env:  [frame 0x560eadd440b0]
#> 
#> [[18]]
#> <frame 20> (19)
#> expr: run_examples(tags$tag_examples[[1]], env = new.env(parent = globalenv()),  <...>
#> env:  [frame 0x560eaddce268]
#> 
#> [[19]]
#> <frame 19> (17)
#> expr: data_reference_topic(topic, pkg, examples = examples, run_dont_run = run_dont_run)
#> env:  [frame 0x560eae656780]
#> 
#> [[20]]
#> <frame 18> (17)
#> expr: withCallingHandlers(data_reference_topic(topic, pkg, examples = examples,  <...>
#> env:  [frame 0x560eae655fd8]
#> 
#> [[21]]
#> <frame 17> (16)
#> expr: .f(.x[[i]], ...)
#> env:  [frame 0x560eae67d018]
#> 
#> [[22]]
#> <frame 16> (15)
#> expr: purrr::map(topics, build_reference_topic, pkg = pkg, lazy = lazy,  <...>
#> env:  [frame 0x560eade2f628]
#> 
#> [[23]]
#> <frame 15> (14)
#> expr: build_reference(pkg, lazy = lazy, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eab934750]
#> 
#> [[24]]
#> <frame 14> (13)
#> expr: build_site_local(pkg = pkg, examples = examples, run_dont_run = run_dont_run,  <...>
#> env:  [frame 0x560eaacff240]
#> 
#> [[25]]
#> <frame 13> (12)
#> expr: pkgdown::build_site(...)
#> env:  [frame 0x560eaac4a318]
#> 
#> [[26]]
#> <frame 12> (0)
#> expr: (function (..., crayon_enabled, crayon_colors, pkgdown_internet)  <...>
#> env:  [frame 0x560eab586628]
#> 
#> [[27]]
#> <frame 11> (0)
#> expr: (function (what, args, quote = FALSE, envir = parent.frame())  <...>
#> env:  [frame 0x560eab580200]
#> 
#> [[28]]
#> <frame 10> (0)
#> expr: do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab35d48]
#> 
#> [[29]]
#> <frame 9> (0)
#> expr: saveRDS(do.call(do.call, c(readRDS("/tmp/RtmpVTMEEO/callr-fun-e127c12e3e3"),  <...>
#> env:  [frame 0x560eaab36138]
#> 
#> [[30]]
#> <frame 8> (0)
#> expr: withCallingHandlers({ <...>
#> env:  [frame 0x560eaab36988]
#> 
#> [[31]]
#> <frame 7> (6)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab331e8]
#> 
#> [[32]]
#> <frame 6> (5)
#> expr: tryCatchOne(expr, names, parentenv, handlers[[1L]])
#> env:  [frame 0x560eaab33530]
#> 
#> [[33]]
#> <frame 5> (2)
#> expr: tryCatchList(expr, names[-nh], parentenv, handlers[-nh])
#> env:  [frame 0x560eaab338e8]
#> 
#> [[34]]
#> <frame 4> (3)
#> expr: doTryCatch(return(expr), name, parentenv, handler)
#> env:  [frame 0x560eaab33e98]
#> 
#> [[35]]
#> <frame 3> (2)
#> expr: tryCatchOne(tryCatchList(expr, names[-nh], parentenv, handlers[-nh]),  <...>
#> env:  [frame 0x560eaab341e0]
#> 
#> [[36]]
#> <frame 2> (1)
#> expr: tryCatchList(expr, classes, parentenv, handlers)
#> env:  [frame 0x560eaab34528]
#> 
#> [[37]]
#> <frame 1> (0)
#> expr: tryCatch(withCallingHandlers({ <...>
#> env:  [frame 0x560eaab34c60]
#> 
#> [[38]]
#> <frame 0> [global]
#> expr: NULL
#> env:  [global]
#> 
#> attr(,"class")
#> [1] "ctxt_stack" "stack"