@@ -567,34 +567,35 @@ will end up skipping a subset of such statements, perhaps while repeating others
567
567
568
568
See also [`lines_required!`](@ref) and [`selective_eval!`](@ref).
569
569
"""
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 ... )
571
571
isrequired = falses (length (edges. preds))
572
572
objs = Set {Union{Symbol,GlobalRef}} ([obj])
573
- return lines_required! (isrequired, objs, src, edges, args ... )
573
+ return lines_required! (isrequired, objs, src, edges; kwargs ... )
574
574
end
575
575
576
- function lines_required (idx:: Int , src:: CodeInfo , edges:: CodeEdges , args ... )
576
+ function lines_required (idx:: Int , src:: CodeInfo , edges:: CodeEdges ; kwargs ... )
577
577
isrequired = falses (length (edges. preds))
578
578
isrequired[idx] = true
579
579
objs = Set {Union{Symbol,GlobalRef}} ()
580
- return lines_required! (isrequired, objs, src, edges, args ... )
580
+ return lines_required! (isrequired, objs, src, edges; kwargs ... )
581
581
end
582
582
583
583
"""
584
- lines_required!(isrequired::AbstractVector{Bool}, src::CodeInfo, edges::CodeEdges, norequire = ())
584
+ lines_required!(isrequired::AbstractVector{Bool}, src::CodeInfo, edges::CodeEdges;
585
+ norequire = ())
585
586
586
587
Like `lines_required`, but where `isrequired[idx]` has already been set to `true` for all statements
587
588
that you know you need to evaluate. All other statements should be marked `false` at entry.
588
589
On return, the complete set of required statements will be marked `true`.
589
590
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.
592
593
For example, use `norequire = LoweredCodeUtils.exclude_named_typedefs(src, edges)` if you're
593
594
extracting method signatures and not evaluating new definitions.
594
595
"""
595
- function lines_required! (isrequired:: AbstractVector{Bool} , src:: CodeInfo , edges:: CodeEdges , norequire = () )
596
+ function lines_required! (isrequired:: AbstractVector{Bool} , src:: CodeInfo , edges:: CodeEdges ; kwargs ... )
596
597
objs = Set {Union{Symbol,GlobalRef}} ()
597
- return lines_required! (isrequired, objs, src, edges, norequire )
598
+ return lines_required! (isrequired, objs, src, edges; kwargs ... )
598
599
end
599
600
600
601
function exclude_named_typedefs (src:: CodeInfo , edges:: CodeEdges )
@@ -614,7 +615,7 @@ function exclude_named_typedefs(src::CodeInfo, edges::CodeEdges)
614
615
return norequire
615
616
end
616
617
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 = ())
618
619
# Do a traveral of "numbered" predecessors
619
620
# We'll mostly use generic graph traversal to discover all the lines we need,
620
621
# but structs are in a bit of a different category (especially on Julia 1.5+).
0 commit comments