diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index bf8ad49..4e39598 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -10,7 +10,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - channel: ['1.6', '1.7', '1.8', '1.9', '1.10', '1.11'] + channel: ['1.6', '1.7', '1.8', '1.9', '1.10', '1.11', '1.12'] os: [ubuntu-latest] steps: - uses: actions/checkout@v4 diff --git a/src/Infiltrator.jl b/src/Infiltrator.jl index 91cfee3..f9aec04 100644 --- a/src/Infiltrator.jl +++ b/src/Infiltrator.jl @@ -739,7 +739,7 @@ function debugprompt(mod, locals, trace, terminal, repl, ex, bt; nostack = false end end if !ok || !REPL.ends_with_semicolon(line) - REPL.print_response(repl, (result, !ok), true, true) + print_response(repl, (result, !ok), true, true) end else try @@ -749,7 +749,7 @@ function debugprompt(mod, locals, trace, terminal, repl, ex, bt; nostack = false result = (err, nostack ? Any[] : crop_backtrace(catch_backtrace())) end if !ok || !REPL.ends_with_semicolon(line) - REPL.print_response(repl, ok ? result : result[1], ok ? nothing : result[2], true, true) + print_response(repl, ok ? result : result[1], ok ? nothing : result[2], true, true) end end println(io) @@ -828,6 +828,31 @@ function print_verbose_stackframe(io, sf::StackTraces.StackFrame, padding = 2, t printstyled(io, normpath(file), ":", line, '\n', color=:light_black) end +# with https://github.com/JuliaLang/julia/pull/57773, print_response will +# evaluate `display` on the REPL backend. We are however running all of Infiltrator +# on the REPL backend already, so that would cause a deadlock. Luckily we can pass +# nothing instead of the actual REPL backend to work around that. +@static if hasmethod(REPL.print_response, (IO, Any, Nothing, Bool, Bool, Union{AbstractDisplay,Nothing})) && + isdefined(REPL, :eval_with_backend) && + hasmethod(REPL.eval_with_backend, (Any, Nothing)) + + function print_response(repl, response, show_value, have_color) + repl.waserror = response[2] + REPL.with_repl_linfo(repl) do io + io = IOContext(io, :module => Base.active_module(repl)::Module) + + REPL.print_response(io, response, nothing, show_value, have_color, REPL.specialdisplay(repl)) + end + + return nothing + end + +else + + print_response(args...) = REPL.print_response(args...) + +end + # https://github.com/JuliaLang/julia/blob/1fb28ad8768cfdc077e968df7adf5716ae8eb9ab/base/methodshow.jl#L134-L148 function fixup_stdlib_path(path::String) BUILD_STDLIB_PATH = isdefined(Sys, :BUILD_STDLIB_PATH) ? @@ -914,7 +939,7 @@ function find_first_topelevel_scope(bt::Vector{<:Union{Base.InterpreterIP,Ptr{Cv st = Base.StackTraces.lookup(ip) ind = findfirst(st) do frame linfo = frame.linfo - if linfo isa Core.CodeInfo + if linfo isa Core.CodeInfo && VERSION < v"1.12-" @static if VERSION >= v"1.2" && hasfield(Core.CodeInfo, :debuginfo) linfo.debuginfo.def === StackTraces.top_level_scope_sym && return true else diff --git a/test/generate.jl b/test/generate.jl index 8bd9aad..38d08ac 100644 --- a/test/generate.jl +++ b/test/generate.jl @@ -1,4 +1,5 @@ -for version in ["1.1", "1.6", "1.7", "1.8", "1.9", "1.10", "1.11"] +for version in ["1.1", "1.6", "1.7", "1.8", "1.9", "1.10", "1.11", "1.12"] println("Generating outputs with Julia v$version") - run(addenv(`julia +$version --project=$(dirname(@__DIR__)) -e 'using Pkg; Pkg.test()'`, "INFILTRATOR_CREATE_TEST" => 1)) + rm(joinpath(@__DIR__, "..", "Manifest.toml")) + run(addenv(`julia +$version --project=$(dirname(@__DIR__)) -e 'using Pkg; Pkg.instantiate(); Pkg.test()'`, "INFILTRATOR_CREATE_TEST" => 1)) end diff --git a/test/outputs/Julia_anon_1.12.multiout b/test/outputs/Julia_anon_1.12.multiout new file mode 100644 index 0000000..c71ef16 --- /dev/null +++ b/test/outputs/Julia_anon_1.12.multiout @@ -0,0 +1,42 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> aasdf +|3 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCC +|C +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> aasdf +|3 +| +|infil> @exfiltrate aasdf +|Exfiltrating 1 local variable into the safehouse. +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCC +|C +| +|BBBBBBBCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_compiler_1.12.multiout b/test/outputs/Julia_compiler_1.12.multiout new file mode 100644 index 0000000..0caa2d7 --- /dev/null +++ b/test/outputs/Julia_compiler_1.12.multiout @@ -0,0 +1,42 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> x +|2 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|C +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> x +|2 +| +|infil> @exfiltrate +|Exfiltrating 1 local variable into the safehouse. +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|C +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_completions_1.12.multiout b/test/outputs/Julia_completions_1.12.multiout new file mode 100644 index 0000000..7ea0335 --- /dev/null +++ b/test/outputs/Julia_completions_1.12.multiout @@ -0,0 +1,458 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> struct Foo +| xxx +| yyy +| end +| +|infil> +| +| +| +| +| +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCCC +|AAAAAAACCC +|AAAAAAACCC +|AAAAAAACCC +| +|BBBBBBB +| +| +| +| +| +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> struct Foo +| xxx +| yyy +| end +| +|infil> foo = Foo(1, 2) +|Main.anonymous.Foo(1, 2) +| +|infil> +| +| +| +| +| +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCCC +|AAAAAAACCC +|AAAAAAACCC +|AAAAAAACCC +| +|BBBBBBBCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +| +| +| +| +| +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> struct Foo +| xxx +| yyy +| end +| +|infil> foo = Foo(1, 2) +|Main.anonymous.Foo(1, 2) +| +|infil> fo +|foldl foldr +|foo for +|foreach fourthroot +|infil> fo^C +| +|infil> +| +| +| +| +| +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCCC +|AAAAAAACCC +|AAAAAAACCC +|AAAAAAACCC +| +|BBBBBBBCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCC +|CCCCCAAAAAAACCCCC +|CCCAAAAAAAAACCC +|CCCCCCCAAAAACCCCCCCCCC +|BBBBBBBCCCC +| +|BBBBBBB +| +| +| +| +| +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> struct Foo +| xxx +| yyy +| end +| +|infil> foo = Foo(1, 2) +|Main.anonymous.Foo(1, 2) +| +|infil> fo +|foldl foldr +|foo for +|foreach fourthroot +|infil> fo^C +| +|infil> foo.xxx +|1 +| +|infil> +| +| +| +| +| +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCCC +|AAAAAAACCC +|AAAAAAACCC +|AAAAAAACCC +| +|BBBBBBBCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCC +|CCCCCAAAAAAACCCCC +|CCCAAAAAAAAACCC +|CCCCCCCAAAAACCCCCCCCCC +|BBBBBBBCCCC +| +|BBBBBBBCCCCCCC +|C +| +|BBBBBBB +| +| +| +| +| +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> struct Foo +| xxx +| yyy +| end +| +|infil> foo = Foo(1, 2) +|Main.anonymous.Foo(1, 2) +| +|infil> fo +|foldl foldr +|foo for +|foreach fourthroot +|infil> fo^C +| +|infil> foo.xxx +|1 +| +|infil> zzzzz^C +| +|infil> +| +| +| +| +| +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCCC +|AAAAAAACCC +|AAAAAAACCC +|AAAAAAACCC +| +|BBBBBBBCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCC +|CCCCCAAAAAAACCCCC +|CCCAAAAAAAAACCC +|CCCCCCCAAAAACCCCCCCCCC +|BBBBBBBCCCC +| +|BBBBBBBCCCCCCC +|C +| +|BBBBBBBCCCCCCC +| +|BBBBBBB +| +| +| +| +| +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> struct Foo +| xxx +| yyy +| end +| +|infil> foo = Foo(1, 2) +|Main.anonymous.Foo(1, 2) +| +|infil> fo +|foldl foldr +|foo for +|foreach fourthroot +|infil> fo^C +| +|infil> foo.xxx +|1 +| +|infil> zzzzz^C +| +|infil> aa +|aa +|aaaa +|infil> aa^C +| +|infil> +| +| +| +| +| +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCCC +|AAAAAAACCC +|AAAAAAACCC +|AAAAAAACCC +| +|BBBBBBBCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCC +|CCCCCAAAAAAACCCCC +|CCCAAAAAAAAACCC +|CCCCCCCAAAAACCCCCCCCCC +|BBBBBBBCCCC +| +|BBBBBBBCCCCCCC +|C +| +|BBBBBBBCCCCCCC +| +|BBBBBBBCC +|CC +|CCCC +|BBBBBBBCCCC +| +|BBBBBBB +| +| +| +| +| +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> struct Foo +| xxx +| yyy +| end +| +|infil> foo = Foo(1, 2) +|Main.anonymous.Foo(1, 2) +| +|infil> fo +|foldl foldr +|foo for +|foreach fourthroot +|infil> fo^C +| +|infil> foo.xxx +|1 +| +|infil> zzzzz^C +| +|infil> aa +|aa +|aaaa +|infil> aa^C +| +|infil> aaaa.xxx +|333 +| +|infil> +| +| +| +| +| +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCCC +|AAAAAAACCC +|AAAAAAACCC +|AAAAAAACCC +| +|BBBBBBBCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCC +|CCCCCAAAAAAACCCCC +|CCCAAAAAAAAACCC +|CCCCCCCAAAAACCCCCCCCCC +|BBBBBBBCCCC +| +|BBBBBBBCCCCCCC +|C +| +|BBBBBBBCCCCCCC +| +|BBBBBBBCC +|CC +|CCCC +|BBBBBBBCCCC +| +|BBBBBBBCCCCCCCC +|CCC +| +|BBBBBBB +| +| +| +| +| +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> struct Foo +| xxx +| yyy +| end +| +|infil> foo = Foo(1, 2) +|Main.anonymous.Foo(1, 2) +| +|infil> fo +|foldl foldr +|foo for +|foreach fourthroot +|infil> fo^C +| +|infil> foo.xxx +|1 +| +|infil> zzzzz^C +| +|infil> aa +|aa +|aaaa +|infil> aa^C +| +|infil> aaaa.xxx +|333 +| +|infil> @exfiltrate foo nope +|Exfiltrating 2 local variables into the safehouse. +| +|Warning: Binding `nope` not defined in this context. Refusing to exfiltrate. +|infil> +| +| +| +| +| +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCCC +|AAAAAAACCC +|AAAAAAACCC +|AAAAAAACCC +| +|BBBBBBBCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCC +|CCCCCAAAAAAACCCCC +|CCCAAAAAAAAACCC +|CCCCCCCAAAAACCCCCCCCCC +|BBBBBBBCCCC +| +|BBBBBBBCCCCCCC +|C +| +|BBBBBBBCCCCCCC +| +|BBBBBBBCC +|CC +|CCCC +|BBBBBBBCCCC +| +|BBBBBBBCCCCCCCC +|CCC +| +|BBBBBBBCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|DDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|BBBBBBB +| +| +| +| +| +| \ No newline at end of file diff --git a/test/outputs/Julia_cond_1.12.multiout b/test/outputs/Julia_cond_1.12.multiout new file mode 100644 index 0000000..b506613 --- /dev/null +++ b/test/outputs/Julia_cond_1.12.multiout @@ -0,0 +1,206 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|1 +|Infiltrating +| +|infil> +-------------------------------------------------- +|A +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|1 +|Infiltrating +| +|infil> @continue +| +|2 +|Infiltrating +| +|infil> +-------------------------------------------------- +|A +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCC +| +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|1 +|Infiltrating +| +|infil> @continue +| +|2 +|Infiltrating +| +|infil> @continue +| +|3 +|Infiltrating +| +|infil> +-------------------------------------------------- +|A +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCC +| +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|1 +|Infiltrating +| +|infil> @continue +| +|2 +|Infiltrating +| +|infil> @continue +| +|3 +|Infiltrating +| +|infil> @cond i > 6 +|Conditionally enabled infiltration at this infiltration point. +| +|infil> +-------------------------------------------------- +|A +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCC +| +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|1 +|Infiltrating +| +|infil> @continue +| +|2 +|Infiltrating +| +|infil> @continue +| +|3 +|Infiltrating +| +|infil> @cond i > 6 +|Conditionally enabled infiltration at this infiltration point. +| +|infil> @continue +| +|4 +|5 +|6 +|7 +|Infiltrating +| +|infil> +-------------------------------------------------- +|A +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCC +| +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|C +|C +|C +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|1 +|Infiltrating +| +|infil> @continue +| +|2 +|Infiltrating +| +|infil> @continue +| +|3 +|Infiltrating +| +|infil> @cond i > 6 +|Conditionally enabled infiltration at this infiltration point. +| +|infil> @continue +| +|4 +|5 +|6 +|7 +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> +-------------------------------------------------- +|A +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCC +| +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|C +|C +|C +|C +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_exfil_1.12.multiout b/test/outputs/Julia_exfil_1.12.multiout new file mode 100644 index 0000000..2c5aba0 --- /dev/null +++ b/test/outputs/Julia_exfil_1.12.multiout @@ -0,0 +1,232 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- x::Int64 = 24 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- x::Int64 = 24 +| +|infil> xxxxx = 12 +|12 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- x::Int64 = 24 +| +|infil> xxxxx = 12 +|12 +| +|infil> aa, bb = ('a', 'b') +|('a', 'b') +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CC +| +|BBBBBBBCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- x::Int64 = 24 +| +|infil> xxxxx = 12 +|12 +| +|infil> aa, bb = ('a', 'b') +|('a', 'b') +| +|infil> foo(x) = x +|foo (generic function with 1 method) +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CC +| +|BBBBBBBCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- x::Int64 = 24 +| +|infil> xxxxx = 12 +|12 +| +|infil> aa, bb = ('a', 'b') +|('a', 'b') +| +|infil> foo(x) = x +|foo (generic function with 1 method) +| +|infil> function bar(x); 2x; end +|bar (generic function with 1 method) +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CC +| +|BBBBBBBCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- x::Int64 = 24 +| +|infil> xxxxx = 12 +|12 +| +|infil> aa, bb = ('a', 'b') +|('a', 'b') +| +|infil> foo(x) = x +|foo (generic function with 1 method) +| +|infil> function bar(x); 2x; end +|bar (generic function with 1 method) +| +|infil> x = 2 +|2 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CC +| +|BBBBBBBCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCC +|C +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- x::Int64 = 24 +| +|infil> xxxxx = 12 +|12 +| +|infil> aa, bb = ('a', 'b') +|('a', 'b') +| +|infil> foo(x) = x +|foo (generic function with 1 method) +| +|infil> function bar(x); 2x; end +|bar (generic function with 1 method) +| +|infil> x = 2 +|2 +| +|infil> @exfiltrate xxxxx aa bb foo bar +|Exfiltrating 5 local variables into the safehouse. +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CC +| +|BBBBBBBCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCC +| +|BBBBBBBCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCC +|C +| +|BBBBBBBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_f2_1.12.multiout b/test/outputs/Julia_f2_1.12.multiout new file mode 100644 index 0000000..116d128 --- /dev/null +++ b/test/outputs/Julia_f2_1.12.multiout @@ -0,0 +1,24 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_f2_filter_1.12.multiout b/test/outputs/Julia_f2_filter_1.12.multiout new file mode 100644 index 0000000..76e3812 --- /dev/null +++ b/test/outputs/Julia_f2_filter_1.12.multiout @@ -0,0 +1,22 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals x +|- x::Int64 = 2 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_f_1.12.multiout b/test/outputs/Julia_f_1.12.multiout new file mode 100644 index 0000000..14e98b0 --- /dev/null +++ b/test/outputs/Julia_f_1.12.multiout @@ -0,0 +1,1456 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> x.*y +|3-element Vector{Int64}: +| 2 +| 4 +| 6 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> x.*y +|3-element Vector{Int64}: +| 2 +| 4 +| 6 +| +|infil> 3+ +| 4 +|7 +| +|infil> +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBCC +|AAAAAAAC +|C +| +|BBBBBBB +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> x.*y +|3-element Vector{Int64}: +| 2 +| 4 +| 6 +| +|infil> 3+ +| 4 +|7 +| +|infil> ans +|7 +| +|infil> +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBCC +|AAAAAAAC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBB +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> x.*y +|3-element Vector{Int64}: +| 2 +| 4 +| 6 +| +|infil> 3+ +| 4 +|7 +| +|infil> ans +|7 +| +|infil> baz +|3 +| +|infil> +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBCC +|AAAAAAAC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBB +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> x.*y +|3-element Vector{Int64}: +| 2 +| 4 +| 6 +| +|infil> 3+ +| 4 +|7 +| +|infil> ans +|7 +| +|infil> baz +|3 +| +|infil> 0//0 +|ERROR: ArgumentError: invalid rational: zero(Int64)//zero(Int64) +|Stacktrace: +| [1] __throw_rational_argerror_zero(T::Type) +| @ Base ./rational.jl:30 +| [2] Rational +| @ ./rational.jl:32 [inlined] +| [3] Rational +| @ ./rational.jl:48 [inlined] +| [4] //(n::Int64, d::Int64) +| @ Base ./rational.jl:91 +| [5] top-level scope +| @ none:1 +| +|infil> +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBCC +|AAAAAAAC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCC +| +|BBBBBBB +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> x.*y +|3-element Vector{Int64}: +| 2 +| 4 +| 6 +| +|infil> 3+ +| 4 +|7 +| +|infil> ans +|7 +| +|infil> baz +|3 +| +|infil> 0//0 +|ERROR: ArgumentError: invalid rational: zero(Int64)//zero(Int64) +|Stacktrace: +| [1] __throw_rational_argerror_zero(T::Type) +| @ Base ./rational.jl:30 +| [2] Rational +| @ ./rational.jl:32 [inlined] +| [3] Rational +| @ ./rational.jl:48 [inlined] +| [4] //(n::Int64, d::Int64) +| @ Base ./rational.jl:91 +| [5] top-level scope +| @ none:1 +| +|infil> @toggle +|Disabled infiltration at this infiltration point. +| +|infil> +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBCC +|AAAAAAAC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> x.*y +|3-element Vector{Int64}: +| 2 +| 4 +| 6 +| +|infil> 3+ +| 4 +|7 +| +|infil> ans +|7 +| +|infil> baz +|3 +| +|infil> 0//0 +|ERROR: ArgumentError: invalid rational: zero(Int64)//zero(Int64) +|Stacktrace: +| [1] __throw_rational_argerror_zero(T::Type) +| @ Base ./rational.jl:30 +| [2] Rational +| @ ./rational.jl:32 [inlined] +| [3] Rational +| @ ./rational.jl:48 [inlined] +| [4] //(n::Int64, d::Int64) +| @ Base ./rational.jl:91 +| [5] top-level scope +| @ none:1 +| +|infil> @toggle +|Disabled infiltration at this infiltration point. +| +|infil> @toggle +|Enabled infiltration at this infiltration point. +| +|infil> +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBCC +|AAAAAAAC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +| +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @trace_all +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> x.*y +|3-element Vector{Int64}: +| 2 +| 4 +| 6 +| +|infil> 3+ +| 4 +|7 +| +|infil> ans +|7 +| +|infil> baz +|3 +| +|infil> 0//0 +|ERROR: ArgumentError: invalid rational: zero(Int64)//zero(Int64) +|Stacktrace: +| [1] __throw_rational_argerror_zero(T::Type) +| @ Base ./rational.jl:30 +| [2] Rational +| @ ./rational.jl:32 [inlined] +| [3] Rational +| @ ./rational.jl:48 [inlined] +| [4] //(n::Int64, d::Int64) +| @ Base ./rational.jl:91 +| [5] top-level scope +| @ none:1 +| +|infil> @toggle +|Disabled infiltration at this infiltration point. +| +|infil> @toggle +|Enabled infiltration at this infiltration point. +| +|infil> @toggle +|Disabled infiltration at this infiltration point. +| +|infil> +| +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBCC +|AAAAAAAC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +| \ No newline at end of file diff --git a/test/outputs/Julia_function_inf_1.12.multiout b/test/outputs/Julia_function_inf_1.12.multiout new file mode 100644 index 0000000..a70ac5b --- /dev/null +++ b/test/outputs/Julia_function_inf_1.12.multiout @@ -0,0 +1,22 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> x +|2 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|C +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_g_1.12.multiout b/test/outputs/Julia_g_1.12.multiout new file mode 100644 index 0000000..656705f --- /dev/null +++ b/test/outputs/Julia_g_1.12.multiout @@ -0,0 +1,342 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @locals +|- x::Int64 = 24 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> ? +| Code entered here is evaluated in the current function's scope. Changes to +| local variables are not possible; global variables can only be changed with +| eval/@eval. +| +| All assignments will end up in the safehouse. +| +| The following commands are special cased: +| +| • ?: Print this help text. +| • @trace: Print the current stack trace with reduced type +| information. For full types, see @trace_all. +| • @trace_all: Print the current stack trace with full type +| information. +| • @locals: Print local variables. @locals x y only prints x and y. +| • @exception: Print the exception that triggered the current +| @infiltry session, if any. +| • @exfiltrate: Save all local variables into the store. @exfiltrate +| x y saves x and y; this variant can also exfiltrate variables +| defined in the infil> REPL. +| • @toggle: Toggle infiltrating at this @infiltrate spot (clear all +| with Infiltrator.clear_disabled!()). +| • @cond expr: Infiltrate at this @infiltrate spot only if expr +| evaluates to true (clear all with +| Infiltrator.clear_conditions!()). Only local variables can be +| accessed here. +| • @continue: Continue to the next infiltration point or exit +| (shortcut: Ctrl-D). +| • @doc symbol: Get help for symbol (same as in the normal Julia +| REPL). +| • @exit: Stop infiltrating for the remainder of this session and +| exit (on Julia versions prior to 1.5 this needs to be manually +| cleared with Infiltrator.end_session!()). +| +|infil> @trace +| +|infil> @locals +|- x::Int64 = 24 +| +|infil> x +|24 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCDDDDCDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDC +| +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|CCCCEECDCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCDCCCCCDC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDD +|CCCCCCCDDDCCCCCCCDCCCCCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCDDDDDDCCCCCC +|CCCCEECDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCC +|CCCCEECDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDCCCCCCCCCCCCCCDDDD +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCEECDDDDDDDDDDDCCCCCCCCCCCCCCCDDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCC +|CCCCEECDDDDDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDCC +| +|BBBBBBBCCCCCC +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCC +| +|BBBBBBBC +|CC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_globalref_1.12.multiout b/test/outputs/Julia_globalref_1.12.multiout new file mode 100644 index 0000000..0cd4073 --- /dev/null +++ b/test/outputs/Julia_globalref_1.12.multiout @@ -0,0 +1,22 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> gr +|:(Main.undefvar) +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCC +|CCCCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_h_1.12.multiout b/test/outputs/Julia_h_1.12.multiout new file mode 100644 index 0000000..351c092 --- /dev/null +++ b/test/outputs/Julia_h_1.12.multiout @@ -0,0 +1,48 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +| +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|DDDDDDD +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +| +|Infiltrating +| +|infil> @locals +|- y::Vector{Int64} = [1, 2, 3] +|- x::Int64 = 2 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|DDDDDDDCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCC +| +|DDDDDDD \ No newline at end of file diff --git a/test/outputs/Julia_hist_1.12.multiout b/test/outputs/Julia_hist_1.12.multiout new file mode 100644 index 0000000..da59ae7 --- /dev/null +++ b/test/outputs/Julia_hist_1.12.multiout @@ -0,0 +1,152 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> y +|3-element Vector{Int64}: +| 1 +| 2 +| 3 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> y +|3-element Vector{Int64}: +| 1 +| 2 +| 3 +| +|infil> y +|3-element Vector{Int64}: +| 1 +| 2 +| 3 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> y +|3-element Vector{Int64}: +| 1 +| 2 +| 3 +| +|infil> y +|3-element Vector{Int64}: +| 1 +| 2 +| 3 +| +|infil> +| +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBB +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> y +|3-element Vector{Int64}: +| 1 +| 2 +| 3 +| +|infil> y +|3-element Vector{Int64}: +| 1 +| 2 +| 3 +| +|infil> +| +|Infiltrating +| +|infil> y +|3-element Vector{Int64}: +| 1 +| 2 +| 3 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBB +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCC +|CC +|CC +|CC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_i_1.12.multiout b/test/outputs/Julia_i_1.12.multiout new file mode 100644 index 0000000..7c25aed --- /dev/null +++ b/test/outputs/Julia_i_1.12.multiout @@ -0,0 +1,44 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> 2+2 +|4 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCC +|C +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> 2+2 +|4 +| +|infil> @locals +|- y::Vector{Float64} = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, … +|- x::Int64 = 1000 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCC +|C +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_imported_globals_1.12.multiout b/test/outputs/Julia_imported_globals_1.12.multiout new file mode 100644 index 0000000..4a65e8e --- /dev/null +++ b/test/outputs/Julia_imported_globals_1.12.multiout @@ -0,0 +1,42 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> x +|2 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|C +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> x +|2 +| +|infil> randstring +|randstring (generic function with 8 methods) +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|C +| +|BBBBBBBCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_infiltry_1.12.multiout b/test/outputs/Julia_infiltry_1.12.multiout new file mode 100644 index 0000000..51b0f22 --- /dev/null +++ b/test/outputs/Julia_infiltry_1.12.multiout @@ -0,0 +1,54 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|EXCEPTION while infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBB +| +|CCCCCCC +++++++++++++++++++++++++++++++++++++++++++++++++++ +|EXCEPTION while infiltrating +| +|infil> @exception +|ERROR: ArgumentError: invalid rational: zero(Int64)//zero(Int64) +|Stacktrace: +| [1] __throw_rational_argerror_zero(T::Type) +| @ Base ./rational.jl:30 +| +|infil> +-------------------------------------------------- +|AAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBB +| +|CCCCCCCDDDDDDDDDD +|EEEEEEEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|DDDDDDDDDDD +|DDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGDDDDDDF +|GGGGDGGGGDGGHHHHHHHHHHHHHH +| +|CCCCCCC +++++++++++++++++++++++++++++++++++++++++++++++++++ +|EXCEPTION while infiltrating +| +|infil> @exception +|ERROR: ArgumentError: invalid rational: zero(Int64)//zero(Int64) +|Stacktrace: +| [1] __throw_rational_argerror_zero(T::Type) +| @ Base ./rational.jl:30 +| +|infil> @locals +|- x::Int64 = 0 +| +|infil> +-------------------------------------------------- +|AAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBB +| +|CCCCCCCDDDDDDDDDD +|EEEEEEEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +|DDDDDDDDDDD +|DDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFGDDDDDDF +|GGGGDGGGGDGGHHHHHHHHHHHHHH +| +|CCCCCCCDDDDDDD +|DDDDDDDDDDDDDD +| +|CCCCCCC \ No newline at end of file diff --git a/test/outputs/Julia_multi_exfiltrate_1.12.multiout b/test/outputs/Julia_multi_exfiltrate_1.12.multiout new file mode 100644 index 0000000..f253b8c --- /dev/null +++ b/test/outputs/Julia_multi_exfiltrate_1.12.multiout @@ -0,0 +1,312 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @continue +| +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @continue +| +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @continue +| +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @exfiltrate +|Exfiltrating 1 local variable into the safehouse. +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @continue +| +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @exfiltrate +|Exfiltrating 1 local variable into the safehouse. +| +|infil> @continue +| +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @continue +| +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @exfiltrate +|Exfiltrating 1 local variable into the safehouse. +| +|infil> @continue +| +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @continue +| +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @exfiltrate +|Exfiltrating 1 local variable into the safehouse. +| +|infil> @continue +| +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> safehouse.i +|2 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|C +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @continue +| +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> @exfiltrate +|Exfiltrating 1 local variable into the safehouse. +| +|infil> @continue +| +|Infiltrating +| +|infil> i +|i (generic function with 1 method) +| +|infil> safehouse.i +|2 +| +|infil> @continue +| +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|C +| +|BBBBBBBCCCCCCCCC +| +|CCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_scoping_1.12.multiout b/test/outputs/Julia_scoping_1.12.multiout new file mode 100644 index 0000000..6648211 --- /dev/null +++ b/test/outputs/Julia_scoping_1.12.multiout @@ -0,0 +1,46 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- x::Int64 = 2 +|- xxxxx::Int64 = 4 +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCC +| +|BBBBBBB +++++++++++++++++++++++++++++++++++++++++++++++++++ +|Infiltrating +| +|infil> @locals +|- x::Int64 = 2 +|- xxxxx::Int64 = 4 +| +|infil> @exfiltrate +|Exfiltrating 2 local variables into the safehouse. +| +|infil> +-------------------------------------------------- +|AAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBBCCCCCCC +|CCCCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCC +| +|BBBBBBBCCCCCCCCCCC +|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +| +|BBBBBBB \ No newline at end of file diff --git a/test/outputs/Julia_toplevel_1.12.multiout b/test/outputs/Julia_toplevel_1.12.multiout new file mode 100644 index 0000000..f7042e1 --- /dev/null +++ b/test/outputs/Julia_toplevel_1.12.multiout @@ -0,0 +1,10 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++ +|4 +|Infiltrating top-level frame +| +|infil> +-------------------------------------------------- +|A +|AAAAAAAAAAAAAAAAAAAAAAAAAAAA +| +|BBBBBBB \ No newline at end of file