bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: feature request: new builtin `defer`, scope delayed eval


From: Koichi Murase
Subject: Re: feature request: new builtin `defer`, scope delayed eval
Date: Sat, 8 Oct 2022 17:11:29 +0900

Let me update the example implementation of ``defer''. I think this is
more readable:

function defer {
  local trap
  eval "trap=($(trap -p RETURN))"
  trap -- "
    if [[ \$FUNCNAME != defer ]]; then
      trap - RETURN
      $1
      ${trap[2]-}
    fi" RETURN
}
declare -ft defer

I also tested it with an example to demonstrate the behavior:

function f1 {
  echo allocA
  defer 'echo freeA'
  echo allocB
  defer 'echo freeB'
  f2
  f2
}
function f2 {
  echo f2
  echo allocC
  defer 'echo freeC'
  echo allocD
  defer 'echo freeD'
}
f1
---------- result ----------
allocA
allocB
f2
allocC
allocD
freeD
freeC
f2
allocC
allocD
freeD
freeC
freeB
freeA

--
Koichi



reply via email to

[Prev in Thread] Current Thread [Next in Thread]