@@ -567,34 +567,35 @@ will end up skipping a subset of such statements, perhaps while repeating others
567567
568568See also [`lines_required!`](@ref) and [`selective_eval!`](@ref).
569569"""
570- function lines_required (obj:: Union{Symbol,GlobalRef} , src:: CodeInfo , edges:: CodeEdges , args ... )
570+ function lines_required (obj:: Union{Symbol,GlobalRef} , src:: CodeInfo , edges:: CodeEdges ; kwargs ... )
571571 isrequired = falses (length (edges. preds))
572572 objs = Set {Union{Symbol,GlobalRef}} ([obj])
573- return lines_required! (isrequired, objs, src, edges, args ... )
573+ return lines_required! (isrequired, objs, src, edges; kwargs ... )
574574end
575575
576- function lines_required (idx:: Int , src:: CodeInfo , edges:: CodeEdges , args ... )
576+ function lines_required (idx:: Int , src:: CodeInfo , edges:: CodeEdges ; kwargs ... )
577577 isrequired = falses (length (edges. preds))
578578 isrequired[idx] = true
579579 objs = Set {Union{Symbol,GlobalRef}} ()
580- return lines_required! (isrequired, objs, src, edges, args ... )
580+ return lines_required! (isrequired, objs, src, edges; kwargs ... )
581581end
582582
583583"""
584- lines_required!(isrequired::AbstractVector{Bool}, src::CodeInfo, edges::CodeEdges, norequire = ())
584+ lines_required!(isrequired::AbstractVector{Bool}, src::CodeInfo, edges::CodeEdges;
585+ norequire = ())
585586
586587Like `lines_required`, but where `isrequired[idx]` has already been set to `true` for all statements
587588that you know you need to evaluate. All other statements should be marked `false` at entry.
588589On return, the complete set of required statements will be marked `true`.
589590
590- `norequire` specifies statements (represented as iterator of `Int`s) that should _not_ be
591- marked as a requirement.
591+ `norequire` keyword argument specifies statements (represented as iterator of `Int`s) that
592+ should _not_ be marked as a requirement.
592593For example, use `norequire = LoweredCodeUtils.exclude_named_typedefs(src, edges)` if you're
593594extracting method signatures and not evaluating new definitions.
594595"""
595- function lines_required! (isrequired:: AbstractVector{Bool} , src:: CodeInfo , edges:: CodeEdges , norequire = () )
596+ function lines_required! (isrequired:: AbstractVector{Bool} , src:: CodeInfo , edges:: CodeEdges ; kwargs ... )
596597 objs = Set {Union{Symbol,GlobalRef}} ()
597- return lines_required! (isrequired, objs, src, edges, norequire )
598+ return lines_required! (isrequired, objs, src, edges; kwargs ... )
598599end
599600
600601function exclude_named_typedefs (src:: CodeInfo , edges:: CodeEdges )
@@ -614,7 +615,7 @@ function exclude_named_typedefs(src::CodeInfo, edges::CodeEdges)
614615 return norequire
615616end
616617
617- function lines_required! (isrequired:: AbstractVector{Bool} , objs, src:: CodeInfo , edges:: CodeEdges , norequire = ())
618+ function lines_required! (isrequired:: AbstractVector{Bool} , objs, src:: CodeInfo , edges:: CodeEdges ; norequire = ())
618619 # Do a traveral of "numbered" predecessors
619620 # We'll mostly use generic graph traversal to discover all the lines we need,
620621 # but structs are in a bit of a different category (especially on Julia 1.5+).
0 commit comments