Stmt.finderA visitor with a shortcut. Finder is a specialization of a visitor, that uses return as its folding argument. At any time you can stop the traversing by calling return function of the provided argument (which is by itself is a record with one field - a function accepting argument of type 'a option).
For example, the following function will check whether x variable is assigned (i.e., occurs on the left of the assignment operator) in the provided scope.
let is_assigned x = find (object(self)
inherit [unit] finder
method! enter_move y _rhs cc =
if Var.(x = y) then cc.return (Some ()); cc
end)There're three find functions in the library, that accepts an object of type finder:
Bil.finder searches in the stmt list aka bilStmt.finder searches in stmtExp.finder searches in exp.In addition, you can use this object directly, using one of the two provided entry points.
inherit 'a option Core_kernel.return visitormethod find : t list -> 'a option