par_frame: Get Parent Frame of S4 Call Stack

Description Usage Details Value

View source: R/misc.R


Implementation of the function(x=parent.frame()) ... pattern for the diff* methods since the normal pattern does not work with S4 methods. Works by looking through the call stack and identifying what call likely initiated the S4 dispatch.




The function is not exported and intended only for use as the default value for the frame argument for the diff* methods.

Matching is done purely by looking for the last repeated call followed by .local(target, current, ...) that is not a call to eval. This pattern seems to match the correct call most of the time. Since methods can be renamed by the user we make no attempt to verify method names. This method could potentially be tricked if you implement custom diff* methods that somehow issue two identical sequential calls before calling callNextMethod. Failure in this case means the wrong frame will be returned.


an environment

diffobj documentation built on Oct. 5, 2021, 9:07 a.m.