Giter Club home page Giter Club logo

traceur.jl's People

Contributors

aviatesk avatar dilumaluthge avatar ederag avatar jamii avatar jrevels avatar juliatagbot avatar maleadt avatar mikeinnes avatar pfitzseb avatar stords avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

traceur.jl's Issues

Internal error on nightly due to invalid IR

As seen on PkgEval

Internal error: encountered unexpected error in runtime:
AssertionError(msg="argextype only works on argument-position values")

ref JuliaLang/julia#47687

Since this seems like a package issue (Cassette generating invalid IR) I'm going to disable testing of Traceur on PkgEval for now, but it'd be good to fix this of course. Please ping me when that happens so that I can re-enable testing for this packages.

`Set{String}()` causes a regression in Traceur on Julia master

The below code works fine on Julia 1.5, but gives an error on the latest Julia master.

Code:

Click to expand
julia> import InteractiveUtils

julia> InteractiveUtils.versioninfo(; verbose = true)
Julia Version 1.6.0-DEV.646
Commit d47f7d0827 (2020-08-15 10:34 UTC)
Platform Info:
OS: macOS (x86_64-apple-darwin19.6.0)
uname: Darwin 19.6.0 Darwin Kernel Version 19.6.0: Thu Jun 18 20:49:00 PDT 2020; root:xnu-6153.141.1~1/RELEASE_X86_64 x86_64 i386
CPU: Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz:
            speed         user         nice          sys         idle          irq
     #1  2600 MHz      42521 s          0 s      16711 s     212873 s          0 s
     #2  2600 MHz      13730 s          0 s       5743 s     252625 s          0 s
     #3  2600 MHz      49955 s          0 s      13417 s     208726 s          0 s
     #4  2600 MHz      12401 s          0 s       5100 s     254597 s          0 s

Memory: 8.0 GB (1156.25 MB free)
Uptime: 30906.0 sec
Load Avg:  1.98486328125  2.29150390625  2.04931640625
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-9.0.1 (ORCJIT, haswell)
Environment:
TERM = xterm-256color
PATH = /Users/dilum/.cargo/bin:/Users/dilum/.cargo/bin:/Users/dilum/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/MacGPG2/bin:/Library/Apple/usr/bin
XPC_FLAGS = 0x0
HOME = /Users/dilum

julia> import GZip

julia> import Random

julia> import Traceur

julia> @inline function foo(output_filename::AbstractString)
         GZip.open(output_filename, "w") do output_io
             println(output_io, join(["X1", "X2"], "\t"))
             for i = 1:100_000
                 cols = [
                     Random.randstring(16),
                     Random.randstring(16),
                 ]
                 line = join(cols, "\t")
                 println(output_io, line)
             end
         end
         return output_filename
     end
foo (generic function with 1 method)

julia> @inline function bar()
         b = Set{String}()
         for i = 1:10_000
             push!(b, Random.randstring(16))
         end
         return b
     end
bar (generic function with 1 method)

julia> @inline function baz(input_filename::AbstractString,
                          b::AbstractSet{<:AbstractString};
                          preallocate::Integer = 1_000_000)
         temp = BitVector(undef, preallocate)
         input_line_counter = 0
         GZip.open(input_filename) do input_io
             for line in eachline(input_io)
                 input_line_counter += 1
                 cols = split(line, "\t")
                 snp_col = cols[2]
                 if input_line_counter != 1
                     temp[input_line_counter] = snp_col in b
                 else
                 end
             end
         end
         result = findall(temp[1:input_line_counter])::Vector{Int}
         return result
     end
baz (generic function with 1 method)

julia> foo("foo.gz")
"foo.gz"

julia> baz("foo.gz", bar())
Int64[]

julia> Traceur.@trace baz("foo.gz", bar())
Internal error: encountered unexpected error in runtime:
BoundsError(a=Array{Any, (0,)}[], i=(1,))
jl_bounds_error_ints at /Users/dilum/dev/repos/aluthge-forks/julia/src/rtutils.c:183
getindex at ./array.jl:809
jfptr_getindex_8179 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
ssa_substitute_op! at ./compiler/ssair/inlining.jl:1318
ssa_substitute_op! at ./compiler/ssair/inlining.jl:1351
ssa_substitute! at ./compiler/ssair/inlining.jl:1306 [inlined]
ir_inline_item! at ./compiler/ssair/inlining.jl:338
batch_inline! at ./compiler/ssair/inlining.jl:553
ssa_inlining_pass! at ./compiler/ssair/inlining.jl:77 [inlined]
run_passes at ./compiler/ssair/driver.jl:127
optimize at ./compiler/optimize.jl:172
typeinf at ./compiler/typeinfer.jl:35
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
jfptr_typeinf_edge_7514 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
invoke_tfunc at ./compiler/tfuncs.jl:1246
builtin_tfunction at ./compiler/tfuncs.jl:1436
abstract_call_builtin at ./compiler/abstractinterpretation.jl:794
unknown function (ip: 0x12349ad13)
abstract_call_known at ./compiler/abstractinterpretation.jl:924
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_apply at ./compiler/abstractinterpretation.jl:714
abstract_call_known at ./compiler/abstractinterpretation.jl:922
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_edge at ./compiler/typeinfer.jl:536
abstract_call_method at ./compiler/abstractinterpretation.jl:465
abstract_call_gf_by_type at ./compiler/abstractinterpretation.jl:129
abstract_call_known at ./compiler/abstractinterpretation.jl:1003
abstract_call at ./compiler/abstractinterpretation.jl:1026
abstract_call at ./compiler/abstractinterpretation.jl:1010
abstract_eval_statement at ./compiler/abstractinterpretation.jl:1132
typeinf_local at ./compiler/abstractinterpretation.jl:1388
typeinf_nocycle at ./compiler/abstractinterpretation.jl:1444
typeinf at ./compiler/typeinfer.jl:12
typeinf_ext at ./compiler/typeinfer.jl:623
typeinf_ext_toplevel at ./compiler/typeinfer.jl:656
typeinf_ext_toplevel at ./compiler/typeinfer.jl:652
jfptr_typeinf_ext_toplevel_12048 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
jl_apply at /Users/dilum/dev/repos/aluthge-forks/julia/src/./julia.h:1752 [inlined]
jl_type_infer at /Users/dilum/dev/repos/aluthge-forks/julia/src/gf.c:300
jl_generate_fptr at /Users/dilum/dev/repos/aluthge-forks/julia/src/jitlayers.cpp:301
jl_compile_method_internal at /Users/dilum/dev/repos/aluthge-forks/julia/src/gf.c:1890
_jl_invoke at /Users/dilum/dev/repos/aluthge-forks/julia/src/gf.c:2145 [inlined]
jl_apply_generic at /Users/dilum/dev/repos/aluthge-forks/julia/src/gf.c:2336
#trace#20 at /Users/dilum/.julia/packages/Traceur/ajxdS/src/trace.jl:51
trace at /Users/dilum/.julia/packages/Traceur/ajxdS/src/trace.jl:51 [inlined]
#warntrace#21 at /Users/dilum/.julia/packages/Traceur/ajxdS/src/trace.jl:54 [inlined]
warntrace at /Users/dilum/.julia/packages/Traceur/ajxdS/src/trace.jl:54
jl_apply at /Users/dilum/dev/repos/aluthge-forks/julia/src/./julia.h:1752 [inlined]
do_call at /Users/dilum/dev/repos/aluthge-forks/julia/src/interpreter.c:117
eval_body at /Users/dilum/dev/repos/aluthge-forks/julia/src/interpreter.c:0
jl_interpret_toplevel_thunk at /Users/dilum/dev/repos/aluthge-forks/julia/src/interpreter.c:659
top-level scope at /Users/dilum/.julia/packages/Traceur/ajxdS/src/trace.jl:88
jl_toplevel_eval_flex at /Users/dilum/dev/repos/aluthge-forks/julia/src/toplevel.c:838
jl_toplevel_eval_flex at /Users/dilum/dev/repos/aluthge-forks/julia/src/toplevel.c:788
jl_toplevel_eval at /Users/dilum/dev/repos/aluthge-forks/julia/src/toplevel.c:847 [inlined]
jl_toplevel_eval_in at /Users/dilum/dev/repos/aluthge-forks/julia/src/toplevel.c:881
eval at ./boot.jl:344
eval_user_input at /Users/dilum/dev/repos/aluthge-forks/julia/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:134
repl_backend_loop at /Users/dilum/dev/repos/aluthge-forks/julia/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:195
start_repl_backend at /Users/dilum/dev/repos/aluthge-forks/julia/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:180
#run_repl#41 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:311
run_repl at /Users/dilum/dev/repos/aluthge-forks/julia/usr/share/julia/stdlib/v1.6/REPL/src/REPL.jl:299
#840 at ./client.jl:386
jfptr_YY.840_41092 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
jl_apply at /Users/dilum/dev/repos/aluthge-forks/julia/src/./julia.h:1752 [inlined]
do_apply at /Users/dilum/dev/repos/aluthge-forks/julia/src/builtins.c:655
jl_f__apply at /Users/dilum/dev/repos/aluthge-forks/julia/src/builtins.c:669 [inlined]
jl_f__apply_latest at /Users/dilum/dev/repos/aluthge-forks/julia/src/builtins.c:705
#invokelatest#2 at ./essentials.jl:718 [inlined]
invokelatest at ./essentials.jl:717 [inlined]
run_main_repl at ./client.jl:371
exec_options at ./client.jl:301
_start at ./client.jl:484
jfptr__start_25300 at /Users/dilum/dev/repos/aluthge-forks/julia/usr/lib/julia/sys.dylib (unknown line)
true_main at /Users/dilum/bin/julia (unknown line)
main at /Users/dilum/bin/julia (unknown line)
ERROR: MethodError: no method matching unsafe_convert(::Type{Int64}, ::typeof(Core.cconvert))
Closest candidates are:
unsafe_convert(::Type{T}, ::T) where T at boot.jl:424
Stacktrace:
[1] call(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Function, ::Type, ::Function)
  @ Cassette ~/.julia/packages/Cassette/158rp/src/context.jl:456
[2] fallback(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Function, ::Vararg{Any,N} where N)
  @ Cassette ~/.julia/packages/Cassette/158rp/src/context.jl:454
[3] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::typeof(Core.unsafe_convert), ::Type{Int64}, ::typeof(Core.cconvert))
  @ Cassette ~/.julia/packages/Cassette/158rp/src/overdub.jl:536
[4] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Function, ::Type, ::Function)
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
[5] Array
  @ ./boot.jl:433 [inlined]
[6] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Type{Vector{UInt8}}, ::UndefInitializer, ::Int64)
  @ Cassette ~/.julia/packages/Cassette/158rp/src/overdub.jl:0
[7] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Type, ::UndefInitializer, ::Int64)
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
[8] Array
  @ ./boot.jl:442 [inlined]
[9] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Type{Vector{UInt8}}, ::UndefInitializer, ::Tuple{Int64})
  @ Cassette ~/.julia/packages/Cassette/158rp/src/overdub.jl:0
[10] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Type, ::UndefInitializer, ::Tuple{Int64})
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
[11] zeros
  @ ./array.jl:525 [inlined]
[12] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::typeof(zeros), ::Type{UInt8}, ::Tuple{Int64})
  @ Cassette ~/.julia/packages/Cassette/158rp/src/overdub.jl:0
[13] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Function, ::Type, ::Tuple{Int64})
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
[14] zeros
  @ ./array.jl:521 [inlined]
[15] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::typeof(zeros), ::Type{UInt8}, ::Int64)
  @ Cassette ~/.julia/packages/Cassette/158rp/src/overdub.jl:0
[16] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Function, ::Type, ::Int64)
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
[17] Dict
  @ ./dict.jl:90 [inlined]
[18] overdub(overdub_context#256::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, overdub_arguments#257::Type{Dict{String,Nothing}})
  @ Cassette ~/.julia/packages/Cassette/158rp/src/overdub.jl:0
[19] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Type)
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
[20] Set
  @ ./set.jl:6 [inlined]
[21] overdub(overdub_context#256::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, overdub_arguments#257::Type{Set{String}})
  @ Cassette ~/.julia/packages/Cassette/158rp/src/overdub.jl:0
[22] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Type)
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
[23] bar
  @ ./REPL[7]:2 [inlined]
[24] overdub(overdub_context#256::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, overdub_arguments#257::typeof(bar))
  @ Cassette ~/.julia/packages/Cassette/158rp/src/overdub.jl:0
[25] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, ::Function)
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
[26] #6
  @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:88 [inlined]
[27] recurse(overdub_context#256::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#258",Nothing,Nothing}, overdub_arguments#257::var"#6#7")
  @ Cassette ~/.julia/packages/Cassette/158rp/src/overdub.jl:0
[28] trace(w::Function, f::Function; kwargs::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}})
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:51
[29] trace
  @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:51 [inlined]
[30] #warntrace#21
  @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:54 [inlined]
[31] warntrace(f::Function)
  @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:54
[32] top-level scope
  @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:88

To edit a specific method, type the corresponding number into the REPL and press Ctrl+Q

[Traceur + Zygote] Errors when attempting to run `@trace` on second derivative

Summary

Traceur + Zygote + nested differentiation = :(

Minimum working example

I've tested this on Julia 1.2.0-rc2.0 and 1.3.0-alpha.0.

Julia 1.2:

julia> using InteractiveUtils, Pkg

julia> InteractiveUtils.versioninfo()



Julia Version 1.2.0-rc2.0
Commit 9248bf7687 (2019-07-08 19:42 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin18.6.0)
  CPU: Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, haswell)

julia> Pkg.status()
    Status `~/.julia/environments/v1.2/Project.toml`
  [37b6cedf] Traceur v0.3.0
  [e88e6eb3] Zygote v0.3.2

julia> using Traceur, Zygote

julia> g(x) = 7x^2 + 5x + 3
g (generic function with 1 method)

julia> g(10)
753

julia> g'(10)
145

julia> g''(10)
14

julia> @trace g(10)
753

julia> @trace g'(10)
┌ Warning: getindex returns Union{Val{2}, getfield(Zygote, Symbol("##118#back#86")){getfield(Zygote, Symbol("##84#85"))}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{Int64, getfield(Zygote, Symbol("##1504#back#572")){getfield(Zygote, Symbol("##570#571")){Int64,Int64}}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{Int64, typeof((literal_pow))}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{Int64, getfield(Zygote, Symbol("##1708#back#642")){getfield(Zygote, Symbol("##638#640")){Tuple{Int64,Int64,Int64}}}}
└ @ tuple.jl:24
┌ Warning: getindex returns Any
└ @ tuple.jl:24
145

julia> @trace g''(10)
┌ Warning: getindex returns Union{typeof(g), getfield(Zygote, Symbol("##251#back#144")){getfield(Zygote, Symbol("#back#143")){:f,Zygote.Context,getfield(Zygote, Symbol("##34#35")){typeof(g)},typeof(g)}}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{Tuple{typeof(g)}, getfield(Zygote, Symbol("##178#back#105")){typeof(identity)}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{typeof((Zygote.Context)), Zygote.Context}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{getfield(Zygote, Symbol("##178#back#105")){typeof(identity)}, Tuple{Zygote.Context,typeof(g)}}
└ @ tuple.jl:24
┌ Warning: dynamic dispatch to (Core.apply_type(Base.Val, x))()
└ @ essentials.jl:-1
┌ Warning: getindex returns Union{getfield(Zygote, Symbol("##190#back#111")){getfield(Zygote, Symbol("##107#109")){1,1}}, Int64}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{getfield(Zygote, Symbol("##178#back#105")){typeof(identity)}, Tuple{Zygote.Context,DataType}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{Val{2}, getfield(Zygote, Symbol("##238#back#137")){getfield(Zygote, Symbol("##135#136")){getfield(Zygote, Symbol("##118#back#86")){getfield(Zygote, Symbol("##84#85"))},Tuple{Tuple{}}}}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{getfield(Zygote, Symbol("##273#back#154")){Zygote.Jnew{getfield(Zygote, Symbol("##84#85")),Nothing,false}}, getfield(Zygote, Symbol("##84#85"))}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{Tuple{Val{2},getfield(Zygote, Symbol("##84#85"))}, getfield(Zygote, Symbol("##178#back#105")){typeof(identity)}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{Tuple{}, Tuple{Zygote.Context,DataType}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{DataType, Zygote.Context}
└ @ tuple.jl:24
┌ Warning: dynamic dispatch to (Zygote._forward)(__context__, Zygote.adjoint, (getfield)((getfield)(args, 1), 1), (getfield)((getfield)(args, 1), 2))
└ @ ~/.julia/packages/Zygote/fuj2C/src/lib/lib.jl:-1
┌ Warning: dynamic dispatch to Base.indexed_iterate((Zygote._forward)(__context__, Zygote.adjoint, (getfield)((getfield)(args, 1), 1), (getfield)((getfield)(args, 1), 2)), 1)
└ @ ~/.julia/packages/Zygote/fuj2C/src/lib/lib.jl:-1
┌ Warning: dynamic dispatch to Base.indexed_iterate((Zygote._forward)(__context__, Zygote.adjoint, (getfield)((getfield)(args, 1), 1), (getfield)((getfield)(args, 1), 2)), 2, Core.getfield(Base.indexed_iterate((Zygote._forward)(__context__, Zygote.adjoint, (getfield)((getfield)(args, 1), 1), (getfield)((getfield)(args, 1), 2)), 1), 2))
└ @ ~/.julia/packages/Zygote/fuj2C/src/lib/lib.jl:-1
┌ Warning: dynamic dispatch to (Zygote._forward)(__context__, Zygote.adjoint, (getfield)((getfield)(args, 1), 1), (getfield)((getfield)(args, 1), 2))
└ @ ~/.julia/packages/Zygote/fuj2C/src/lib/grad.jl:-1
┌ Warning: dynamic dispatch to Base.indexed_iterate((Zygote._forward)(__context__, Zygote.adjoint, (getfield)((getfield)(args, 1), 1), (getfield)((getfield)(args, 1), 2)), 1)
└ @ ~/.julia/packages/Zygote/fuj2C/src/lib/grad.jl:-1
┌ Warning: dynamic dispatch to Base.indexed_iterate((Zygote._forward)(__context__, Zygote.adjoint, (getfield)((getfield)(args, 1), 1), (getfield)((getfield)(args, 1), 2)), 2, Core.getfield(Base.indexed_iterate((Zygote._forward)(__context__, Zygote.adjoint, (getfield)((getfield)(args, 1), 1), (getfield)((getfield)(args, 1), 2)), 1), 2))
└ @ ~/.julia/packages/Zygote/fuj2C/src/lib/grad.jl:-1
┌ Warning: getindex returns Union{Tuple{Val{2},getfield(Zygote, Symbol("##84#85"))}, getfield(Zygote, Symbol("##238#back#137")){getfield(Zygote, Symbol("##135#136")){typeof((adjoint)),Tuple{Tuple{Nothing,Nothing},Tuple{}}}}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{Val{2}, getfield(Zygote, Symbol("##84#85"))}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{getfield(Zygote, Symbol("#back#119")){getfield(Zygote, Symbol("##190#back#111")){getfield(Zygote, Symbol("##107#109")){2,1}}}, Tuple{Val{2},Int64}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{getfield(Zygote, Symbol("##190#back#111")){getfield(Zygote, Symbol("##107#109")){2,1}}, Core.Compiler.UseRef}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{getfield(Zygote, Symbol("#back#120")){getfield(Zygote, Symbol("##190#back#111")){getfield(Zygote, Symbol("##107#109")){2,2}}}, Tuple{getfield(Zygote, Symbol("##84#85")),Int64}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{getfield(Zygote, Symbol("##273#back#154")){Zygote.Jnew{getfield(Zygote, Symbol("##118#back#86")){Core.Compiler.UseRef},Nothing,false}}, getfield(Zygote, Symbol("##118#back#86")){Core.Compiler.UseRef}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{getfield(Zygote, Symbol("##178#back#105")){typeof(identity)}, Tuple{Core.Compiler.UseRef,getfield(Zygote, Symbol("##118#back#86")){Core.Compiler.UseRef}}}
└ @ tuple.jl:24
┌ Warning: dynamic dispatch to (Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2})
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1)
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 2, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 2))
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}())
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1)
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 2)
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{1}())
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}())
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true))
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 1)
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 2)
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 1), Val{1}())
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: dynamic dispatch to Zygote.adjoint(ctx, Zygote.__new__, Core.apply_type(Zygote.:(##118#back#86), Core.typeof(Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 1), Val{1}()), 1, true))), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 1), Val{1}()), 1, true))
└ @ ~/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:-1
ERROR: ┌ Warning: dynamic dispatch to (typeof(∂(_forward)))(Base.tuple(Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{1}()), 2, true), %new(Core.apply_type(Zygote.:(##238#back#137), Core.typeof(%new(Core.apply_type(Zygote.:(##135#136), Core.typeof(Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 2, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 2)), 1)), Tuple{Tuple{Nothing,Nothing},Tuple{}}), Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 2, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 2)), 1), ((nothing, nothing), ())))), %new(CMethodError: no method matching literal_pow(::typeof(^), ::Int64, ::Core.Compiler.UseRef)
Closest candidates are:
  literal_pow(::typeof(^), ::Union{Float32, Float64, Int16, Int32, Int64, Int8, UInt16, UInt32, UInt64, UInt8, Complex{#s75} where #s75<:Union{Float32, Float64, Int16, Int32, Int64, Int8, UInt16, UInt32, UInt64, UInt8}, Rational{#s74} where #s74<:Union{Float32, Float64, Int16, Int32, Int64, Int8, UInt16, UInt32, UInt64, UInt8}}, ::Val{0}) at intfuncs.jl:242
  literal_pow(::typeof(^), ::Union{Float32, Float64, Int16, Int32, Int64, Int8, UInt16, UInt32, UInt64, UInt8, Complex{#s75} where #s75<:Union{Float32, Float64, Int16, Int32, Int64, Int8, UInt16, UInt32, UInt64, UInt8}, Rational{#s74} where #s74<:Union{Float32, Float64, Int16, Int32, Int64, Int8, UInt16, UInt32, UInt64, UInt8}}, ::Val{1}) at intfuncs.jl:243
  literal_pow(::typeof(^), ::Union{Float32, Float64, Int16, Int32, Int64, Int8, UInt16, UInt32, UInt64, UInt8, Complex{#s75} where #s75<:Union{Float32, Float64, Int16, Int32, Int64, Int8, UInt16, UInt32, UInt64, UInt8}, Rational{#s74} where #s74<:Union{Float32, Float64, Int16, Int32, Int64, Int8, UInt16, UInt32, UInt64, UInt8}}, ::Val{2}) at intfuncs.jl:244
  ...ore.apply_type(Zygote.:(##135#136), Core.typeof(Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 2, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 2)), 1)), Tuple{Tuple{Nothing,Nothing},Tuple{}}), Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 2, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 2)), 1), ((nothing, nothing), ()))), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_
Stacktrace:iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 1), Val{1}()), 2, true), %new(Core.apply_type(Zygote.:(##273#back#154), Core.typeof(Base.getfield(Zygote.adjoint(ctx, Zygote.__new__, Core.apply_type(Zygote.:(##118#back#86), Core.typeof(Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Z
ygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 1), Val{1}()), 1, true))), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 1), Val{1}()), 1, true)), 2))), Base.getfield(Zygote.adjoint(ctx, Zygote.__new__, Core.apply_type(Zygote.:(##118#back#86), Core.typeof(Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Va [1] l{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 1), Val{1}()), 1, true))), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 1), Val{1}()), 1, true)), 2)), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indecallxed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 2, true), Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 2), getfield(Zygote, Symbol("##178#back#105")){typeof(identity)}(identity), getfield(Zygote, Symbol("##178#back#105")){typeof(identity)}(identity), Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{2}(), Base.getfield(Zygote._forward(ctx, Zygote.literal_getproperty, Base.getindex(Zygote._forward(ctx, Zygote.literal_indexed_iterate, Core.getfield(Base.indexed_iterate((Zygote._forward)(ctx, Zygote.adjoint, Base.getfield(args, 1), Val{2}), 1), 1), Val{1}()), 1), Val{2}()), 1, true)), 2)))
└ @ ~/.julia/packages/Zy at gote/fuj2C/src/compiler/interface2.jl:-1
┌ Warning: getindex returns Union{typeof((_forward)), Tuple{Core.Compiler.UseRef,getfield(Zygote, Symbol("##118#back#86")){Core.Compiler.UseRef}}}
└ @ tuple.jl:24
┌ Warning: getindex returns Union{Core.Compiler.UseRef, getfield(Zygote, Symbol("##118#back#86")){Core.Compiler.UseRef}}
└ @ tuple.jl:24
/Users/dilum/.julia/packages/Cassette/IwsFs/src/context.jl:447┌ Warning: getindex returns Union{getfield(Zygote, Symbol("##190#back#111")){getfield(Zygote, Symbol("##107#109")){2,2}}, getfield(Zygote, Symbol("##118#back#86")){Core.Compiler.UseRef}}
└ @ tuple.jl:24
 [inlined]
 [2] fallback at /Users/dilum/.julia/packages/Cassette/IwsFs/src/context.jl:445 [inlined]
 [3] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Base.literal_pow), ::typeof(^), ::Int64, ::Core.Compiler.UseRef) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:481
 [4] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Function, ::Int64, ::Core.Compiler.UseRef) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [5] macro expansion at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:0 [inlined]
 [6] _forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:6 [inlined]
 [7] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(Base.literal_pow), ::typeof(^), ::Int64, ::Core.Compiler.UseRef) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [8] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Int64, ::Vararg{Any,N} where N) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [9] overdub at /Users/dilum/.julia/packages/Cassette/IwsFs/src/context.jl:260 [inlined]
 [10] adjoint at /Users/dilum/.julia/packages/Zygote/fuj2C/src/lib/lib.jl:126 [inlined]
 [11] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote.adjoint), ::Zygote.Context, ::typeof(Core._apply), ::typeof(Base.literal_pow), ::Tuple{typeof(^),Int64,Core.Compiler.UseRef}) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [12] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Tuple{typeof(^),Int64,Core.Compiler.UseRef}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [13] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(Core._apply), ::typeof(Base.literal_pow), ::Tuple{typeof(^),Int64,Core.Compiler.UseRef}) at /Users/dilum/.julia/packages/Zygote/fuj2C/src/lib/grad.jl:44
 [14] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Tuple{typeof(^),Int64,Core.Compiler.UseRef}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [15] macro expansion at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:0 [inlined]
 [16] _forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface2.jl:6 [inlined]
 [17] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(Base.literal_pow), ::typeof(^), ::Int64, ::Core.Compiler.UseRef) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [18] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Zygote.Context, ::Function, ::Vararg{Any,N} where N) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [19] g at ./REPL[5]:1 [inlined]
 [20] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(g), ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [21] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Zygote.Context, ::Function, ::Vararg{Any,N} where N) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [22] overdub at /Users/dilum/.julia/packages/Cassette/IwsFs/src/context.jl:260 [inlined]
 [23] adjoint at /Users/dilum/.julia/packages/Zygote/fuj2C/src/lib/lib.jl:126 [inlined]
 [24] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote.adjoint), ::Zygote.Context, ::typeof(Core._apply), ::typeof(Zygote._forward), ::Tuple{Zygote.Context,typeof(g)}, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [25] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Tuple{Zygote.Context,typeof(g)}, ::Vararg{Any,N} where N) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [26] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(Core._apply), ::typeof(Zygote._forward), ::Tuple{Zygote.Context,typeof(g)}, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Zygote/fuj2C/src/lib/grad.jl:44
 [27] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Tuple{Zygote.Context,typeof(g)}, ::Vararg{Any,N} where N) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [28] _forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:31 [inlined]
 [29] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(Zygote._forward), ::typeof(g), ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [30] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [31] overdub at /Users/dilum/.julia/packages/Cassette/IwsFs/src/context.jl:260 [inlined]
 [32] adjoint at /Users/dilum/.julia/packages/Zygote/fuj2C/src/lib/lib.jl:126 [inlined]
 [33] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote.adjoint), ::Zygote.Context, ::typeof(Core._apply), ::typeof(Zygote._forward), ::Tuple{typeof(g)}, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [34] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Tuple{typeof(g)}, ::Vararg{Any,N} where N) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [35] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(Core._apply), ::typeof(Zygote._forward), ::Tuple{typeof(g)}, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Zygote/fuj2C/src/lib/grad.jl:44
 [36] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Tuple{typeof(g)}, ::Vararg{Any,N} where N) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [37] forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:37 [inlined]
 [38] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(forward), ::typeof(g), ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [39] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [40] overdub at /Users/dilum/.julia/packages/Cassette/IwsFs/src/context.jl:260 [inlined]
 [41] adjoint at /Users/dilum/.julia/packages/Zygote/fuj2C/src/lib/lib.jl:126 [inlined]
 [42] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote.adjoint), ::Zygote.Context, ::typeof(Core._apply), ::typeof(forward), ::Tuple{typeof(g)}, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [43] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Tuple{typeof(g)}, ::Vararg{Any,N} where N) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [44] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(Core._apply), ::typeof(forward), ::Tuple{typeof(g)}, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Zygote/fuj2C/src/lib/grad.jl:44
 [45] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Tuple{typeof(g)}, ::Vararg{Any,N} where N) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [46] gradient at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:46 [inlined]
 [47] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(gradient), ::typeof(g), ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [48] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Zygote.Context, ::Function, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [49] #34 at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:50 [inlined]
 [50] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::getfield(Zygote, Symbol("##34#35")){typeof(g)}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [51] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [52] _forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:31 [inlined]
 [53] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(Zygote._forward), ::getfield(Zygote, Symbol("##34#35")){typeof(g)}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [54] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [55] forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:37 [inlined]
 [56] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(forward), ::getfield(Zygote, Symbol("##34#35")){typeof(g)}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [57] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [58] gradient at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:46 [inlined]
 [59] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::typeof(gradient), ::getfield(Zygote, Symbol("##34#35")){typeof(g)}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [60] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [61] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::getfield(Zygote, Symbol("##34#35")){getfield(Zygote, Symbol("##34#35")){typeof(g)}}, ::Int64) at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:50
 [62] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [63] #7 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:88 [inlined]
 [64] recurse(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#373")),Nothing,Nothing}, ::getfield(Main, Symbol("##7#8"))) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [65] #trace#20(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Traceur.trace), ::Function, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51
 [66] #warntrace#21 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51 [inlined]
 [67] warntrace(::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:54

Julia 1.3:

julia> using InteractiveUtils, Pkg

julia> InteractiveUtils.versioninfo()



Julia Version 1.3.0-alpha.0
Commit 6c11e7c2c4 (2019-07-23 01:46 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin18.6.0)
  CPU: Intel(R) Core(TM) i5-4278U CPU @ 2.60GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, haswell)

julia> Pkg.status()
    Status `~/.julia/environments/v1.3/Project.toml`
  [37b6cedf] Traceur v0.3.0
  [e88e6eb3] Zygote v0.3.2

julia> using Traceur, Zygote
[ Info: Precompiling Traceur [37b6cedf-1f77-55f8-9503-c64b63398394]




[ Info: Precompiling Zygote [e88e6eb3-aa80-5325-afca-941959d7151f]

julia> g(x) = 7x^2 + 5x + 3
g (generic function with 1 method)

julia> g(10)
753

julia> g'(10)
145

julia> g''(10)
14

julia> @trace g(10)
753

julia> @trace g'(10)
ERROR: ERROR COMPILING (typeof(Zygote._forward), Zygote.Context, typeof(g), Int64) IN CONTEXT Cassette.Context{getfield(Traceur, Symbol("##TraceurCtx#Name")),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}:
AssertionError: code_info.edges === nothing
118-element Array{Base.StackTraces.StackFrame,1}:
 reflect(::Tuple, ::UInt64) at overdub.jl:83
 reflect at overdub.jl:46 [inlined]
 __overdub_generator__(::Type, ::Type, ::NTuple{4,DataType}) at overdub.jl:497
 (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any,N} where N) at boot.jl:524
 get_staged(::Core.MethodInstance) at utilities.jl:92
 retrieve_code_info at utilities.jl:103 [inlined]
 Core.Compiler.InferenceState(::Core.Compiler.InferenceResult, ::Bool, ::Core.Compiler.Params) at inferencestate.jl:113
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:482
 invoke_tfunc(::Any, ::Any, ::Any, ::Core.Compiler.InferenceState) at tfuncs.jl:1144
 builtin_tfunction(::Any, ::Array{Any,1}, ::Union{Nothing, Core.Compiler.InferenceState}, ::Core.Compiler.Params) at tfuncs.jl:1334
 builtin_tfunction at tfuncs.jl:1283 [inlined]
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:663
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:396
 abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:93
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:846
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 invoke_tfunc(::Any, ::Any, ::Any, ::Core.Compiler.InferenceState) at tfuncs.jl:1144
 builtin_tfunction(::Any, ::Array{Any,1}, ::Union{Nothing, Core.Compiler.InferenceState}, ::Core.Compiler.Params) at tfuncs.jl:1334
 builtin_tfunction at tfuncs.jl:1283 [inlined]
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:663
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:396
 abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:93
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:846
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 invoke_tfunc(::Any, ::Any, ::Any, ::Core.Compiler.InferenceState) at tfuncs.jl:1144
 builtin_tfunction(::Any, ::Array{Any,1}, ::Union{Nothing, Core.Compiler.InferenceState}, ::Core.Compiler.Params) at tfuncs.jl:1334
 builtin_tfunction at tfuncs.jl:1283 [inlined]
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:663
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:396
 abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:93
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:846
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 invoke_tfunc(::Any, ::Any, ::Any, ::Core.Compiler.InferenceState) at tfuncs.jl:1144
 builtin_tfunction(::Any, ::Array{Any,1}, ::Union{Nothing, Core.Compiler.InferenceState}, ::Core.Compiler.Params) at tfuncs.jl:1334
 builtin_tfunction at tfuncs.jl:1283 [inlined]
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:663
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:396
 abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:93
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:846
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_ext(::Core.MethodInstance, ::Core.Compiler.Params) at typeinfer.jl:577
 typeinf_ext(::Core.MethodInstance, ::UInt64) at typeinfer.jl:608
 overdub(::Cassette.Context{getfield(Traceur, Symbol("##TraceurCtx#Name")),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::Function, ::Int64) at trace.jl:47
 #5 at trace.jl:88 [inlined]
 recurse(::Cassette.Context{getfield(Traceur, Symbol("##TraceurCtx#Name")),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::getfield(Main, Symbol("##5#6"))) at overdub.jl:0
 #trace#20(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Traceur.trace), ::Function, ::Function) at trace.jl:51
 #warntrace#21 at trace.jl:51 [inlined]
 warntrace(::Function) at trace.jl:54
 top-level scope at trace.jl:88
 eval(::Module, ::Any) at boot.jl:330
 eval_user_input(::Any, ::REPL.REPLBackend) at REPL.jl:86
 macro expansion at REPL.jl:118 [inlined]
 (::getfield(REPL, Symbol("##26#27")){REPL.REPLBackend})() at task.jl:292
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] macro expansion at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:507 [inlined]
 [3] macro expansion at /Users/dilum/.julia/packages/Cassette/IwsFs/src/Cassette.jl:0 [inlined]
 [4] overdub at /Users/dilum/.julia/packages/Cassette/IwsFs/src/Cassette.jl:11 [inlined]
 [5] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::typeof(g), ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [6] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [7] _forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:31 [inlined]
 [8] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::typeof(Zygote._forward), ::typeof(g), ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [9] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [10] forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:37 [inlined]
 [11] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::typeof(forward), ::typeof(g), ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [12] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [13] gradient at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:46 [inlined]
 [14] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::typeof(gradient), ::typeof(g), ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [15] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [16] #34 at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:50 [inlined]
 [17] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::getfield(Zygote, Symbol("##34#35")){typeof(g)}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [18] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [19] #5 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:88 [inlined]
 [20] recurse(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::getfield(Main, Symbol("##5#6"))) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [21] #trace#20(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Traceur.trace), ::Function, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51
 [22] #warntrace#21 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51 [inlined]
 [23] warntrace(::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:54
 [24] top-level scope at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:88

julia> @trace g''(10)
ERROR: ERROR COMPILING (typeof(Zygote._forward), Zygote.Context, getfield(Zygote, Symbol("##34#35")){typeof(g)}, Int64) IN CONTEXT Cassette.Context{getfield(Traceur, Symbol("##TraceurCtx#Name")),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}:
AssertionError: code_info.edges === nothing
118-element Array{Base.StackTraces.StackFrame,1}:
 reflect(::Tuple, ::UInt64) at overdub.jl:83
 reflect at overdub.jl:46 [inlined]
 __overdub_generator__(::Type, ::Type, ::NTuple{4,DataType}) at overdub.jl:497
 (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any,N} where N) at boot.jl:524
 get_staged(::Core.MethodInstance) at utilities.jl:92
 retrieve_code_info at utilities.jl:103 [inlined]
 Core.Compiler.InferenceState(::Core.Compiler.InferenceResult, ::Bool, ::Core.Compiler.Params) at inferencestate.jl:113
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:482
 invoke_tfunc(::Any, ::Any, ::Any, ::Core.Compiler.InferenceState) at tfuncs.jl:1144
 builtin_tfunction(::Any, ::Array{Any,1}, ::Union{Nothing, Core.Compiler.InferenceState}, ::Core.Compiler.Params) at tfuncs.jl:1334
 builtin_tfunction at tfuncs.jl:1283 [inlined]
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:663
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:396
 abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:93
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:846
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 invoke_tfunc(::Any, ::Any, ::Any, ::Core.Compiler.InferenceState) at tfuncs.jl:1144
 builtin_tfunction(::Any, ::Array{Any,1}, ::Union{Nothing, Core.Compiler.InferenceState}, ::Core.Compiler.Params) at tfuncs.jl:1334
 builtin_tfunction at tfuncs.jl:1283 [inlined]
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:663
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:396
 abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:93
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:846
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 invoke_tfunc(::Any, ::Any, ::Any, ::Core.Compiler.InferenceState) at tfuncs.jl:1144
 builtin_tfunction(::Any, ::Array{Any,1}, ::Union{Nothing, Core.Compiler.InferenceState}, ::Core.Compiler.Params) at tfuncs.jl:1334
 builtin_tfunction at tfuncs.jl:1283 [inlined]
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:663
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:396
 abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:93
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:846
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 invoke_tfunc(::Any, ::Any, ::Any, ::Core.Compiler.InferenceState) at tfuncs.jl:1144
 builtin_tfunction(::Any, ::Array{Any,1}, ::Union{Nothing, Core.Compiler.InferenceState}, ::Core.Compiler.Params) at tfuncs.jl:1334
 builtin_tfunction at tfuncs.jl:1283 [inlined]
 abstract_call(::Any, ::Nothing, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:663
 abstract_apply(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:581
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:637
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_edge(::Method, ::Any, ::Core.SimpleVector, ::Core.Compiler.InferenceState) at typeinfer.jl:491
 abstract_call_method(::Method, ::Any, ::Core.SimpleVector, ::Bool, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:396
 abstract_call_gf_by_type(::Any, ::Array{Any,1}, ::Any, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:93
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState, ::Int64) at abstractinterpretation.jl:846
 abstract_call(::Any, ::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:636
 abstract_eval_call(::Array{Any,1}, ::Array{Any,1}, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:875
 abstract_eval(::Any, ::Array{Any,1}, ::Core.Compiler.InferenceState) at abstractinterpretation.jl:945
 typeinf_local(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1202
 typeinf_nocycle(::Core.Compiler.InferenceState) at abstractinterpretation.jl:1258
 typeinf(::Core.Compiler.InferenceState) at typeinfer.jl:12
 typeinf_ext(::Core.MethodInstance, ::Core.Compiler.Params) at typeinfer.jl:577
 typeinf_ext(::Core.MethodInstance, ::UInt64) at typeinfer.jl:608
 overdub(::Cassette.Context{getfield(Traceur, Symbol("##TraceurCtx#Name")),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::Function, ::Int64) at trace.jl:47
 #7 at trace.jl:88 [inlined]
 recurse(::Cassette.Context{getfield(Traceur, Symbol("##TraceurCtx#Name")),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::getfield(Main, Symbol("##7#8"))) at overdub.jl:0
 #trace#20(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Traceur.trace), ::Function, ::Function) at trace.jl:51
 #warntrace#21 at trace.jl:51 [inlined]
 warntrace(::Function) at trace.jl:54
 top-level scope at trace.jl:88
 eval(::Module, ::Any) at boot.jl:330
 eval_user_input(::Any, ::REPL.REPLBackend) at REPL.jl:86
 macro expansion at REPL.jl:118 [inlined]
 (::getfield(REPL, Symbol("##26#27")){REPL.REPLBackend})() at task.jl:292
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] macro expansion at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:507 [inlined]
 [3] macro expansion at /Users/dilum/.julia/packages/Cassette/IwsFs/src/Cassette.jl:0 [inlined]
 [4] overdub at /Users/dilum/.julia/packages/Cassette/IwsFs/src/Cassette.jl:11 [inlined]
 [5] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::typeof(Zygote._forward), ::Zygote.Context, ::getfield(Zygote, Symbol("##34#35")){typeof(g)}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [6] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [7] _forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:31 [inlined]
 [8] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::typeof(Zygote._forward), ::getfield(Zygote, Symbol("##34#35")){typeof(g)}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [9] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [10] forward at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:37 [inlined]
 [11] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::typeof(forward), ::getfield(Zygote, Symbol("##34#35")){typeof(g)}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [12] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [13] gradient at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:46 [inlined]
 [14] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::typeof(gradient), ::getfield(Zygote, Symbol("##34#35")){typeof(g)}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [15] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [16] #34 at /Users/dilum/.julia/packages/Zygote/fuj2C/src/compiler/interface.jl:50 [inlined]
 [17] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::getfield(Zygote, Symbol("##34#35")){getfield(Zygote, Symbol("##34#35")){typeof(g)}}, ::Int64) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [18] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [19] #7 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:88 [inlined]
 [20] recurse(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#401")),Nothing,Nothing}, ::getfield(Main, Symbol("##7#8"))) at /Users/dilum/.julia/packages/Cassette/IwsFs/src/overdub.jl:0
 [21] #trace#20(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Traceur.trace), ::Function, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51
 [22] #warntrace#21 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51 [inlined]
 [23] warntrace(::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:54
 [24] top-level scope at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:88

Use real types

e.g. each warning should have a type and data, rather than being a string. We need this both for better display and to more declaratively test for presence/absence of warnings.

Change default modules

Traceur is substantially more useful for me when I use the modules keyword from #24 , otherwise I'm flooded with warnings from Base and other modules I didn't develop. For example, @trace naive_sum([1.]) modules = [Main].

I think the default behavior should be to not show warnings from these modules. New users of Traceur aren't likely to know about the modules keyword, so their initial experience is currently not very good. Experienced users can provide whatever modules they like.

Options:

  1. Default to modules = [Main]. For simple interactive use, this would be a big improvement. Package developers could manually list their packages.
  2. Default to everything except Base and stdlib modules. This would strip out most of the noise I see when using Traceur, while still showing warnings from packages which I might want to file an issue about. The end user is unlikely to be able to do anything about problems in core Julia code, and I think it's reasonable to assume our problems do not lie in that code.

I've been looking for a way to list all available modules so I could compute a set difference of that minus Base + stdlib to be default argument, but I haven't found a way to list them.

If this does not exist, one option would be to add a second keyword argument, skipmodules = []. The default could be skipmodules = [Base, (list stdlib here)]. Traceur would skip any warnings from modules in skipmodules.

NullException() from Short-Circuit Evaluation and +=

I get this error:

julia> using Traceur

julia> a = 1
1

julia> @trace true && (a += 1)
ERROR: NullException()
Stacktrace:
 [1] get at ./nullable.jl:92 [inlined]
 [2] lookup_var(::ASTInterpreter2.JuliaStackFrame, ::SlotNumber) at /Users/james/.julia/v0.6/ASTInterpreter2/src/interpret.jl:5
 [3] lookup_var_if_var at /Users/james/.julia/v0.6/ASTInterpreter2/src/ASTInterpreter2.jl:147 [inlined]
 [4] lookup(::ASTInterpreter2.JuliaStackFrame, ::SlotNumber) at /Users/james/.julia/v0.6/Vinyl/src/interpret.jl:21
 [5] macro expansion at ./broadcast.jl:232 [inlined]
 [6] _broadcast!(::Vinyl.#lookup, ::Array{Base.#+,1}, ::Tuple{Tuple{},Tuple{Bool}}, ::Tuple{Tuple{},Tuple{Int64}}, ::Tuple{ASTInterpreter2.JuliaStackFrame,Array{Any,1}}, ::Type{Val{2}}, ::CartesianRange{CartesianIndex{1}}, ::CartesianIndex{1}, ::Int64) at ./broadcast.jl:219
 [7] broadcast_t(::Function, ::Type{Any}, ::Tuple{Base.OneTo{Int64}}, ::CartesianRange{CartesianIndex{1}}, ::ASTInterpreter2.JuliaStackFrame, ::Array{Any,1}) at ./broadcast.jl:265
 [8] broadcast_c at ./broadcast.jl:321 [inlined]
 [9] broadcast(::Function, ::ASTInterpreter2.JuliaStackFrame, ::Array{Any,1}) at ./broadcast.jl:455
 [10] callargs(::DebuggerFramework.DebuggerState) at /Users/james/.julia/v0.6/Vinyl/src/interpret.jl:29
 [11] runall(::Traceur.Trace, ::DebuggerFramework.DebuggerState) at /Users/james/.julia/v0.6/Vinyl/src/interpret.jl:34
 [12] overdub(::Traceur.Trace, ::Function) at /Users/james/.julia/v0.6/Vinyl/src/interpret.jl:53
 [13] warntrace(::Function) at /Users/james/.julia/v0.6/Traceur/src/trace.jl:36

when using

Version 0.6.3-pre.0 (2017-12-18 07:11 UTC)
Commit 93168a6826* (80 days old release-0.6)
x86_64-apple-darwin17.4.0

Lots of warnings are nonsense

I do not understand the following warnings, the variable names seems to be left out and is it really a problem if something is assigned as Nothing or a Tuple?

┌ Warning:  is assigned as Tuple{Int64,Int64}
└ @ broadcast.jl:-1
┌ Warning:  is assigned as Nothing
└ @ broadcast.jl:-1
┌ Warning:  is assigne

Traceur + Cubature compile failure

Running @trace on Cubature.jl's hcubature errors out, with error compiling ... in context Cassette.Context... (full output below). This also happens when called in a module, even if I explicitly trace only the module:

module MyModule
using Cubature
export findout
findout() = hcubature(x -> x[1]^2, [-1, -1], [2, 1])
end
julia> using MyModule, Traceur
julia> @trace findout() modules=[MyModule]
ERROR ...
Complete output
julia> @trace hcubature(x -> x[1]^2, [-1, -1], [2, 1])
┌ Warning:  is assigned as Tuple{Int64, Int64}
└ @ array.jl:108
┌ Warning:  is assigned as Union{Nothing, Tuple{Int64, Int64}}
└ @ array.jl:108
ERROR: ERROR COMPILING (typeof(Cubature.integrands), Cubature.IntegrandData{var"#20#22"}, Bool, Bool, Bool) IN CONTEXT Cassette.Context{Traceur.var"##TraceurCtx#Name", Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}:
UndefVarError: spvals not defined
43-element Vector{Base.StackTraces.StackFrame}:
 _partially_inline!(x::Any, slot_replacements::Vector{Any}, type_signature::Any, static_param_values::Vector{Any}, slot_offset::Int64, statement_offset::Int64, boundscheck::Symbol) at meta.jl:365
 partially_inline!(code::Vector{Any}, slot_replacements::Vector{Any}, type_signature::Any, static_param_values::Vector{Any}, slot_offset::Int64, statement_offset::Int64, boundscheck::Symbol) at meta.jl:312
 overdub_pass!(reflection::Cassette.Reflection, context_type::DataType, is_invoke::Bool) at overdub.jl:262
 __overdub_generator__(self::Type, context_type::Type, args::NTuple{5, DataType}) at overdub.jl:594
 (::Core.GeneratedFunctionStub)(::Any, ::Vararg{Any, N} where N) at boot.jl:571
 get_staged(li::Core.MethodInstance) at utilities.jl:111
 retrieve_code_info at utilities.jl:122 [inlined]
 Core.Compiler.InferenceState(result::Core.Compiler.InferenceResult, cached::Bool, interp::Core.Compiler.NativeInterpreter) at inferencestate.jl:131
 typeinf_ext(interp::Core.Compiler.NativeInterpreter, mi::Core.MethodInstance) at typeinfer.jl:890
 typeinf_ext_toplevel(interp::Core.Compiler.NativeInterpreter, linfo::Core.MethodInstance) at typeinfer.jl:925
 typeinf_ext_toplevel(mi::Core.MethodInstance, world::UInt64) at typeinfer.jl:921
 overdub(::Cassette.Context{Traceur.var"##TraceurCtx#Name", Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::Function, ::Cubature.IntegrandData{var"#20#22"}, ::Bool, ::Bool, ::Bool) at trace.jl:47
 overdub at Cubature.jl:165 [inlined]
 overdub(::Cassette.Context{Traceur.var"##TraceurCtx#Name", Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::typeof(Cubature.cubature), ::Bool, ::Bool, ::Bool, ::Bool, ::Int64, ::var"#20#22", ::Vector{Int64}, ::Vector{Int64}, ::Float64, ::Int64, ::Int64, ::Int32) at overdub.jl:0
 overdub(::Cassette.Context{Traceur.var"##TraceurCtx#Name", Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::Function, ::Bool, ::Bool, ::Bool, ::Bool, ::Vararg{Any, N} where N) at trace.jl:47
 var" at Cubature.jl:230 [inlined]
 overdub at Cubature.jl:230 [inlined]
 overdub(::Cassette.Context{Traceur.var"##TraceurCtx#Name", Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::Cubature.var"##hcubature#22", ::Float64, ::Int64, ::Int64, ::typeof(hcubature), ::var"#20#22", ::Vector{Int64}, ::Vector{Int64}) at overdub.jl:0
 overdub at trace.jl:47 [inlined]
 hcubature(::var" at Cubature.jl:230 [inlined]
 overdub at Cubature.jl:230 [inlined]
 overdub(::Cassette.Context{Traceur.var"##TraceurCtx#Name", Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::typeof(hcubature), ::var"#20#22", ::Vector{Int64}, ::Vector{Int64}) at overdub.jl:0
 overdub(::Cassette.Context{Traceur.var"##TraceurCtx#Name", Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::Function, ::Function, ::Vector{Int64}, ::Vector{Int64}) at trace.jl:47
 (::var" at trace.jl:88 [inlined]
 recurse at trace.jl:88 [inlined]
 recurse(overdub_context#257::Cassette.Context{Traceur.var"##TraceurCtx#Name", Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, overdub_arguments#258::var"#19#21") at overdub.jl:0
 trace(w::Function, f::Function; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) at trace.jl:51
 trace at trace.jl:51 [inlined]
 #warntrace#21 at trace.jl:54 [inlined]
 warntrace(f::Function) at trace.jl:54
 top-level scope at trace.jl:88
 eval at boot.jl:360 [inlined]
 eval_user_input(ast::Any, backend::REPL.REPLBackend) at REPL.jl:139
 repl_backend_loop(backend::REPL.REPLBackend) at REPL.jl:200
 start_repl_backend(backend::REPL.REPLBackend, consumer::Any) at REPL.jl:185
 run_repl(repl::REPL.AbstractREPL, consumer::Any; backend_on_current_task::Bool) at REPL.jl:317
 run_repl(repl::REPL.AbstractREPL, consumer::Any) at REPL.jl:305
 (::Base.var"#874#876"{Bool, Bool, Bool})(REPL::Module) at client.jl:387
 #invokelatest#2 at essentials.jl:708 [inlined]
 invokelatest at essentials.jl:706 [inlined]
 run_main_repl(interactive::Bool, quiet::Bool, banner::Bool, history_file::Bool, color_set::Bool) at client.jl:372
 exec_options(opts::Base.JLOptions) at client.jl:302
 _start() at client.jl:485
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] macro expansion
    @ ~/.julia/packages/Cassette/jxIEh/src/overdub.jl:602 [inlined]
  [3] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::typeof(Cubature.integrands), ::Cubature.IntegrandData{var"#20#22"}, ::Bool, ::Bool, ::Bool)
    @ Cassette ~/.julia/packages/Cassette/jxIEh/src/overdub.jl:654
  [4] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::Function, ::Cubature.IntegrandData{var"#20#22"}, ::Bool, ::Bool, ::Bool)
    @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
  [5] overdub
    @ ~/.julia/packages/Cubature/5zwuu/src/Cubature.jl:165 [inlined]
  [6] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::typeof(Cubature.cubature), ::Bool, ::Bool, ::Bool, ::Bool, ::Int64, ::var"#20#22", ::Vector{Int64}, ::Vector{Int64}, ::Float64, ::Int64, ::Int64, ::Int32)
    @ Cassette ~/.julia/packages/Cassette/jxIEh/src/overdub.jl:0
  [7] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::Function, ::Bool, ::Bool, ::Bool, ::Bool, ::Vararg{Any, N} where N)
    @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
  [8] var"
    @ ~/.julia/packages/Cubature/5zwuu/src/Cubature.jl:230 [inlined]
  [9] overdub
    @ ~/.julia/packages/Cubature/5zwuu/src/Cubature.jl:230 [inlined]
 [10] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::Cubature.var"##hcubature#22", ::Float64, ::Int64, ::Int64, ::typeof(hcubature), ::var"#20#22", ::Vector{Int64}, ::Vector{Int64})
    @ Cassette ~/.julia/packages/Cassette/jxIEh/src/overdub.jl:0
 [11] overdub
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47 [inlined]
 [12] hcubature(::var"
    @ ~/.julia/packages/Cubature/5zwuu/src/Cubature.jl:230 [inlined]
 [13] overdub
    @ ~/.julia/packages/Cubature/5zwuu/src/Cubature.jl:230 [inlined]
 [14] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::typeof(hcubature), ::var"#20#22", ::Vector{Int64}, ::Vector{Int64})
    @ Cassette ~/.julia/packages/Cassette/jxIEh/src/overdub.jl:0
 [15] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, ::Function, ::Function, ::Vector{Int64}, ::Vector{Int64})
    @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
 [16] (::var"
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:88 [inlined]
 [17] recurse
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:88 [inlined]
 [18] recurse(overdub_context#257::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#259", Nothing, Nothing}, overdub_arguments#258::var"#19#21")
    @ Cassette ~/.julia/packages/Cassette/jxIEh/src/overdub.jl:0
 [19] trace(w::Function, f::Function; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:51
 [20] trace
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:51 [inlined]
 [21] #warntrace#21
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:54 [inlined]
 [22] warntrace(f::Function)
    @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:54
 [23] top-level scope
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:88

System:

Julia v1.6
Traceur v0.3.1
Cubature v1.5.1
Cassette v0.3.5

@trace not updating with method redefinition

If one defines a method, uses @trace on that method and then redefines the method and runs @trace on it again, it will give the output from the old method definition, not the new one. This seems to be a pretty major bug.

julia> using Traceur

julia> foo() = -10.0:10.0
foo (generic function with 1 method)

julia> foo()
-10.0:1.0:10.0

julia> @trace foo()
-10.0:1.0:10.0

julia> foo() = -10:10
foo (generic function with 1 method)

julia> foo()
-10:10

julia> @trace foo()
-10.0:1.0:10.0

Warning: getproperty returns Union

This warning surprised me:

julia> struct Test                                                                             
           a::Int64                                                                                
           b::Float64                                                                              
       end                                                                                     
                                                                                               
julia> f(t) = t.a                                                                              
f (generic function with 1 method)                                                             
                                                                                               
julia> @trace f(Test(1, 1.))
┌ Warning: getproperty returns Union{Float64, Int64}
└ @ sysimg.jl:18
1

@trace yields no visible output

Traceur appears to install correctly, and I see no error messages either when using or when invoking the @trace macro, but I also see no trace output, just the returned value of the function.

ASTInterpreter2 seems to be working normally.

[Thanks for developing Traceur! Looks great. Hope to get it working.]

   _       _ _(_)_     |  A fresh approach to technical computing
  (_)     | (_) (_)    |  Documentation: https://docs.julialang.org
   _ _   _| |_  __ _   |  Type "?help" for help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 0.6.3 (2018-05-28 20:20 UTC)
 _/ |\__'_|_|_|\__'_|  |  Official http://julialang.org/ release
|__/                   |  x86_64-apple-darwin14.5.0

julia> Pkg.status("Traceur")
 - Traceur                       0.1.1
julia> Pkg.status("ASTInterpreter2")
 - ASTInterpreter2               0.1.1

julia> using Traceur

julia> f(n) = n < 0 ? 0 : n
f (generic function with 1 method)

julia> f(8)
8

julia> @trace f(8)
8

julia> using ASTInterpreter2

julia> @enter f(8)
In f(n) at REPL[5]:1
1 f(n) = n < 0 ? 0 : n

About to run: (<)(8, 0)
1|debug > n
In f(n) at REPL[5]:1
1 f(n) = n < 0 ? 0 : n

About to run: return 8
1|debug > n
8

x is assigned as SlotNumber

julia> @trace 2^4
(Base.power_by_squaring)(::Int64, ::Int64) at intfuncs.jl:163
  p is assigned as SlotNumber at line 163
  p is assigned as Int64 at line 176
  p is assigned as Int64 at line 183
  y is assigned as SlotNumber at line 180
  y is assigned as Int64 at line 187
16

Just need to handle this when looking up expression types.

Seems to cause my program execution to be stuck?

For some reason my program seem to be stuck at the very beginning (reading in a corpus, before training can be performed on that corpus) when I prepend the train function with @trace. For an hour there is no output, while normally the corpus reading should be done very fast. The following are the stacktrace after I interrupted the program with Ctrl+C:

^CERROR: InterruptException:
Stacktrace:
 [1] Traceur.DynamicCall(::Function, ::Int64, ::Vararg{Int64,N} where N) at /home/jx/.julia/packages/Traceur/bKqVY/src/analysis.jl:17
 [2] posthook(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::Bool, ::Function, ::Int64, ::Vararg{Int64,N} where N) at /home/jx/.julia/packages/Traceur/bKqVY/src/trace.jl:18
 [3] ismalformed at ./char.jl:79 [inlined]
 [4] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(Base.ismalformed), ::Char) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [5] category_code at ./strings/unicode.jl:250 [inlined]
 [6] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(Base.Unicode.category_code), ::Char) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [7] isspace at ./strings/unicode.jl:460 [inlined]
 [8] #3 at ./none:0 [inlined]
 [9] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::getfield(Main.HPYLM, Symbol("##3#7")), ::Char) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [10] iterate at ./iterators.jl:434 [inlined]
 [11] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(iterate), ::Base.Iterators.Filter{getfield(Main.HPYLM, Symbol("##3#7")),String}, ::Int64) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [12] overdub at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:430 [inlined]
 [13] iterate at ./generator.jl:44 [inlined]
 [14] grow_to! at ./array.jl:700 [inlined]
 [15] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(Base.grow_to!), ::Array{Int64,1}, ::Base.Generator{Base.Iterators.Filter{getfield(Main.HPYLM, Symbol("##3#7")),String},getfield(Main.HPYLM, Symbol("##2#6")){Main.HPYLM.Vocabulary}}, ::Int64) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [16] grow_to! at ./array.jl:678 [inlined]
 [17] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(Base.grow_to!), ::Array{Int64,1}, ::Base.Generator{Base.Iterators.Filter{getfield(Main.HPYLM, Symbol("##3#7")),String},getfield(Main.HPYLM, Symbol("##2#6")){Main.HPYLM.Vocabulary}}) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [18] collect at ./array.jl:617 [inlined]
 [19] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(collect), ::Base.Generator{Base.Iterators.Filter{getfield(Main.HPYLM, Symbol("##3#7")),String},getfield(Main.HPYLM, Symbol("##2#6")){Main.HPYLM.Vocabulary}}) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [20] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::getfield(Main.HPYLM, Symbol("##1#5")){Main.HPYLM.Vocabulary}, ::String) at ./none:0
 [21] iterate at ./generator.jl:47 [inlined]
 [22] grow_to! at ./array.jl:700 [inlined]
 [23] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(Base.grow_to!), ::Array{Array{Int64,1},1}, ::Base.Generator{Base.Iterators.Filter{getfield(Main.HPYLM, Symbol("##4#8")),Array{String,1}},getfield(Main.HPYLM, Symbol("##1#5")){Main.HPYLM.Vocabulary}}, ::Int64) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [24] grow_to! at ./array.jl:678 [inlined]
 [25] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(Base.grow_to!), ::Array{Array{Int64,1},1}, ::Base.Generator{Base.Iterators.Filter{getfield(Main.HPYLM, Symbol("##4#8")),Array{String,1}},getfield(Main.HPYLM, Symbol("##1#5")){Main.HPYLM.Vocabulary}}) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [26] collect at ./array.jl:617 [inlined]
 [27] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(collect), ::Base.Generator{Base.Iterators.Filter{getfield(Main.HPYLM, Symbol("##4#8")),Array{String,1}},getfield(Main.HPYLM, Symbol("##1#5")){Main.HPYLM.Vocabulary}}) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [28] read_corpus at /home/julia-hpylm/Corpus.jl:107 [inlined]
 [29] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(Main.HPYLM.read_corpus), ::IOStream, ::Main.HPYLM.Vocabulary) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [30] train at /home/jx/Dropbox/Tuebingen1819WS/thesis/repo/julia-hpylm/HPYLM.jl:65 [inlined]
 [31] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::typeof(Main.HPYLM.train), ::String, ::Int64, ::Int64, ::String) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [32] #7 at /home/jx/.julia/packages/Traceur/bKqVY/src/trace.jl:39 [inlined]
 [33] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Cassette.NoPass,Nothing,Nothing}, ::getfield(Main, Symbol("##7#8"))) at /home/jx/.julia/packages/Cassette/XwZ3M/src/overdub.jl:0
 [34] trace(::Function, ::Function) at /home/jx/.julia/packages/Traceur/bKqVY/src/trace.jl:28
 [35] warntrace(::Function) at /home/jx/.julia/packages/Traceur/bKqVY/src/trace.jl:30
 [36] top-level scope at none:0

Abstract field types

julia> struct Foo; x; end

julia> f(foo) = foo.x^2

julia> @trace f(Foo(1))
(f)(::Foo) at /Users/mike/.julia/v0.6/Traceur/test.jl:7
  dynamic dispatch to (Base.literal_pow)(Main.^, (Core.getfield)(foo, :x), Val{2}) at line 7
  returns Any

We should probably intercept getfield and make sure that field types are concrete.

Depth

It would be very useful (and perhaps improve performance) if only code within the current module or some such definition would be tested and all deeper code would just be ignored... The thing is that users don't want to get warnings on things they can't do anything about, just their own code. This might be hard to implement...

Tracing function with `rand` or `randn` leads to error: "this intrinsic must be compiled to be called"

Trying to trace a function that calls rand() or randn() leads to the following error: this intrinsic must be compiled to be called.

Example 1

DMBP:~ dilum$ julia
julia> using Traceur

julia> f() = rand() > 0.5 ? 100 : "100"
f (generic function with 1 method)

julia> @trace f()
┌ Warning:  is assigned as Union{Nothing, Tuple{Int64,Int64}}
└ @ array.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Int64,Int64}}
└ @ array.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning: getindex returns Union{Bool, Int64}
└ @ namedtuple.jl:105
┌ Warning: vs is assigned as Union{Nothing, Tuple{Char,Int64}}
└ @ iterators.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Char,Int64}}
└ @ operators.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Char,Int64}}
└ @ operators.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Char,Nothing}}
└ @ strings/io.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Char,Nothing}}
└ @ strings/io.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(φ (%143 => %139, %949 => %943), 1)
└ @ strings/io.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(φ (%143 => %139, %949 => %943), 1)
└ @ strings/io.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(φ (%143 => %139, %949 => %943), 1)
└ @ strings/io.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning: dynamic dispatch to Base.getproperty(Base.Main, Base)
└ @ error.jl:-1
┌ Warning: dynamic dispatch to Base.getproperty(Base.getproperty(Base.Main, Base), SystemError)
└ @ error.jl:-1
┌ Warning: dynamic dispatch to (Base.getproperty(Base.getproperty(Base.Main, Base), SystemError))(p, $(Expr(:foreigncall, :jl_errno, Int32, svec(), 0, :ccall)), extrainfo)
└ @ error.jl:-1
┌ Warning: dynamic dispatch to (Core.apply_type(Base.Val, x))()
└ @ essentials.jl:-1
ERROR: this intrinsic must be compiled to be called
Stacktrace:
 [1] call at /Users/dilum/.julia/packages/Cassette/YCOeN/src/context.jl:447 [inlined]
 [2] fallback at /Users/dilum/.julia/packages/Cassette/YCOeN/src/context.jl:445 [inlined]
 [3] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Core.IntrinsicFunction, ::String, ::Type{Int64}, ::Type{Tuple{Ptr{Int64}}}, ::Ptr{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:481
 [4] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::String, ::Type, ::Type, ::Ptr{Int64}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [5] getindex at ./atomics.jl:347 [inlined]
 [6] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(getindex), ::Base.Threads.Atomic{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [7] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [8] lock at ./locks-mt.jl:35 [inlined]
 [9] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.Threads.SpinLock) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [10] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [11] lock at ./condition.jl:74 [inlined]
 [12] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.GenericCondition{Base.Threads.SpinLock}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [13] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [14] lock at ./lock.jl:68 [inlined]
 [15] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::ReentrantLock) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [16] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [17] lock at ./stream.jl:224 [inlined]
 [18] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.TTY) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [19] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [20] print at ./strings/io.jl:45 [inlined]
 [21] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(print), ::Base.TTY, ::String, ::Char) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [22] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [23] println at ./strings/io.jl:75 [inlined]
 [24] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(println), ::Base.TTY, ::String) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [25] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Base.TTY, ::String) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [26] make_seed at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:251 [inlined]
 [27] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.make_seed)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [28] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [29] seed! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:288 [inlined]
 [30] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.seed!), ::Random.MersenneTwister) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [31] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [32] seed! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:412 [inlined]
 [33] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.seed!), ::Random.MersenneTwister, ::Nothing) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [34] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.MersenneTwister, ::Nothing) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [35] MersenneTwister at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:137 [inlined]
 [36] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Type{Random.MersenneTwister}, ::Nothing) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [37] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 ... (the last 3 lines are repeated 1 more time)
 [41] default_rng at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:302 [inlined]
 [42] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.default_rng), ::Int64) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [43] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [44] default_rng at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:296 [inlined]
 [45] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.default_rng)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [46] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [47] rand at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:253 [inlined]
 [48] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(rand)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [49] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [50] f at ./REPL[1]:1 [inlined]
 [51] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(f)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [52] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [53] #3 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:88 [inlined]
 [54] recurse(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::var"##3#4") at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [55] #trace#20(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Traceur.trace), ::Function, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51
 [56] #warntrace#21 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51 [inlined]
 [57] warntrace(::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:54
caused by [exception 1]
this intrinsic must be compiled to be called
Stacktrace:
 [1] call at /Users/dilum/.julia/packages/Cassette/YCOeN/src/context.jl:447 [inlined]
 [2] fallback at /Users/dilum/.julia/packages/Cassette/YCOeN/src/context.jl:445 [inlined]
 [3] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Core.IntrinsicFunction, ::String, ::Type{Int64}, ::Type{Tuple{Ptr{Int64}}}, ::Ptr{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:481
 [4] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::String, ::Type, ::Type, ::Ptr{Int64}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [5] getindex at ./atomics.jl:347 [inlined]
 [6] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(getindex), ::Base.Threads.Atomic{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [7] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [8] lock at ./locks-mt.jl:35 [inlined]
 [9] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.Threads.SpinLock) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [10] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [11] lock at ./condition.jl:74 [inlined]
 [12] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.GenericCondition{Base.Threads.SpinLock}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [13] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [14] lock at ./lock.jl:68 [inlined]
 [15] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::ReentrantLock) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [16] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [17] macro expansion at ./lock.jl:182 [inlined]
 [18] unsafe_read at ./iostream.jl:374 [inlined]
 [19] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(unsafe_read), ::IOStream, ::Ptr{UInt8}, ::UInt64) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [20] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::IOStream, ::Ptr{UInt8}, ::UInt64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [21] unsafe_read at ./io.jl:669 [inlined]
 [22] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(unsafe_read), ::IOStream, ::Ptr{UInt32}, ::Int64) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [23] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::IOStream, ::Ptr{UInt32}, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [24] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(read!), ::IOStream, ::Array{UInt32,1}) at ./gcutils.jl:91
 [25] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [26] rand! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:51 [inlined]
 [27] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.rand!), ::Random.RandomDevice, ::Array{UInt32,1}, ::Random.SamplerType{UInt32}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [28] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.RandomDevice, ::Array{UInt32,1}, ::Random.SamplerType{UInt32}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [29] rand! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:264 [inlined]
 [30] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.rand!), ::Random.RandomDevice, ::Array{UInt32,1}, ::Type{UInt32}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [31] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.RandomDevice, ::Array{UInt32,1}, ::Type) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [32] rand at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:285 [inlined]
 [33] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(rand), ::Random.RandomDevice, ::Type{UInt32}, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [34] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.RandomDevice, ::Type, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [35] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(rand), ::Random.RandomDevice, ::Type{UInt32}, ::Int64) at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:288
 [36] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.RandomDevice, ::Type, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [37] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.make_seed)) at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:249
 [38] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [39] seed! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:288 [inlined]
 [40] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.seed!), ::Random.MersenneTwister) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [41] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [42] seed! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:412 [inlined]
 [43] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.seed!), ::Random.MersenneTwister, ::Nothing) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [44] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.MersenneTwister, ::Nothing) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [45] MersenneTwister at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:137 [inlined]
 [46] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Type{Random.MersenneTwister}, ::Nothing) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [47] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 ... (the last 3 lines are repeated 1 more time)
 [51] default_rng at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:302 [inlined]
 [52] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.default_rng), ::Int64) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [53] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [54] default_rng at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:296 [inlined]
 [55] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.default_rng)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [56] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [57] rand at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:253 [inlined]
 [58] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(rand)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [59] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [60] f at ./REPL[1]:1 [inlined]
 [61] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(f)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [62] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [63] #3 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:88 [inlined]
 [64] recurse(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::var"##3#4") at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [65] #trace#20(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Traceur.trace), ::Function, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51
 [66] #warntrace#21 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51 [inlined]
 [67] warntrace(::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:54

Example 2

julia> using Traceur

julia> g() = randn() > 0 ? 1234 : 56.78
g (generic function with 1 method)

julia> @trace g()
┌ Warning:  is assigned as Union{Nothing, Tuple{Int64,Int64}}
└ @ array.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Int64,Int64}}
└ @ array.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning: getindex returns Union{Bool, Int64}
└ @ namedtuple.jl:105
┌ Warning: vs is assigned as Union{Nothing, Tuple{Char,Int64}}
└ @ iterators.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Char,Int64}}
└ @ operators.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Char,Int64}}
└ @ operators.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Char,Nothing}}
└ @ strings/io.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{Char,Nothing}}
└ @ strings/io.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(φ (%143 => %139, %949 => %943), 1)
└ @ strings/io.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(φ (%143 => %139, %949 => %943), 1)
└ @ strings/io.jl:-1
┌ Warning: dynamic dispatch to Base.getindex(φ (%143 => %139, %949 => %943), 1)
└ @ strings/io.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning:  is assigned as Union{Nothing, Tuple{String,Int64}}
└ @ strings/substring.jl:-1
┌ Warning: dynamic dispatch to Base.getproperty(Base.Main, Base)
└ @ error.jl:-1
┌ Warning: dynamic dispatch to Base.getproperty(Base.getproperty(Base.Main, Base), SystemError)
└ @ error.jl:-1
┌ Warning: dynamic dispatch to (Base.getproperty(Base.getproperty(Base.Main, Base), SystemError))(p, $(Expr(:foreigncall, :jl_errno, Int32, svec(), 0, :ccall)), extrainfo)
└ @ error.jl:-1
┌ Warning: dynamic dispatch to (Core.apply_type(Base.Val, x))()
└ @ essentials.jl:-1
ERROR: this intrinsic must be compiled to be called
Stacktrace:
 [1] call at /Users/dilum/.julia/packages/Cassette/YCOeN/src/context.jl:447 [inlined]
 [2] fallback at /Users/dilum/.julia/packages/Cassette/YCOeN/src/context.jl:445 [inlined]
 [3] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Core.IntrinsicFunction, ::String, ::Type{Int64}, ::Type{Tuple{Ptr{Int64}}}, ::Ptr{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:481
 [4] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::String, ::Type, ::Type, ::Ptr{Int64}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [5] getindex at ./atomics.jl:347 [inlined]
 [6] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(getindex), ::Base.Threads.Atomic{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [7] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [8] lock at ./locks-mt.jl:35 [inlined]
 [9] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.Threads.SpinLock) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [10] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [11] lock at ./condition.jl:74 [inlined]
 [12] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.GenericCondition{Base.Threads.SpinLock}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [13] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [14] lock at ./lock.jl:68 [inlined]
 [15] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::ReentrantLock) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [16] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [17] lock at ./stream.jl:224 [inlined]
 [18] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.TTY) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [19] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [20] print at ./strings/io.jl:45 [inlined]
 [21] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(print), ::Base.TTY, ::String, ::Char) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [22] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [23] println at ./strings/io.jl:75 [inlined]
 [24] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(println), ::Base.TTY, ::String) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [25] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Base.TTY, ::String) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [26] make_seed at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:251 [inlined]
 [27] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.make_seed)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [28] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [29] seed! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:288 [inlined]
 [30] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.seed!), ::Random.MersenneTwister) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [31] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [32] seed! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:412 [inlined]
 [33] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.seed!), ::Random.MersenneTwister, ::Nothing) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [34] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.MersenneTwister, ::Nothing) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [35] MersenneTwister at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:137 [inlined]
 [36] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Type{Random.MersenneTwister}, ::Nothing) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [37] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 ... (the last 3 lines are repeated 1 more time)
 [41] default_rng at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:302 [inlined]
 [42] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.default_rng), ::Int64) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [43] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [44] default_rng at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:296 [inlined]
 [45] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.default_rng)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [46] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [47] randn at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/normal.jl:39 [inlined]
 [48] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(randn)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [49] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [50] g at ./REPL[2]:1 [inlined]
 [51] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(g)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [52] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [53] #3 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:88 [inlined]
 [54] recurse(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::var"##3#4") at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [55] #trace#20(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Traceur.trace), ::Function, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51
 [56] #warntrace#21 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51 [inlined]
 [57] warntrace(::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:54
caused by [exception 1]
this intrinsic must be compiled to be called
Stacktrace:
 [1] call at /Users/dilum/.julia/packages/Cassette/YCOeN/src/context.jl:447 [inlined]
 [2] fallback at /Users/dilum/.julia/packages/Cassette/YCOeN/src/context.jl:445 [inlined]
 [3] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Core.IntrinsicFunction, ::String, ::Type{Int64}, ::Type{Tuple{Ptr{Int64}}}, ::Ptr{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:481
 [4] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::String, ::Type, ::Type, ::Ptr{Int64}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [5] getindex at ./atomics.jl:347 [inlined]
 [6] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(getindex), ::Base.Threads.Atomic{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [7] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [8] lock at ./locks-mt.jl:35 [inlined]
 [9] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.Threads.SpinLock) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [10] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [11] lock at ./condition.jl:74 [inlined]
 [12] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::Base.GenericCondition{Base.Threads.SpinLock}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [13] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [14] lock at ./lock.jl:68 [inlined]
 [15] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(lock), ::ReentrantLock) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [16] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [17] macro expansion at ./lock.jl:182 [inlined]
 [18] unsafe_read at ./iostream.jl:374 [inlined]
 [19] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(unsafe_read), ::IOStream, ::Ptr{UInt8}, ::UInt64) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [20] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::IOStream, ::Ptr{UInt8}, ::UInt64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [21] unsafe_read at ./io.jl:669 [inlined]
 [22] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(unsafe_read), ::IOStream, ::Ptr{UInt32}, ::Int64) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [23] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::IOStream, ::Ptr{UInt32}, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [24] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(read!), ::IOStream, ::Array{UInt32,1}) at ./gcutils.jl:91
 [25] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [26] rand! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:51 [inlined]
 [27] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.rand!), ::Random.RandomDevice, ::Array{UInt32,1}, ::Random.SamplerType{UInt32}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [28] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.RandomDevice, ::Array{UInt32,1}, ::Random.SamplerType{UInt32}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [29] rand! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:264 [inlined]
 [30] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.rand!), ::Random.RandomDevice, ::Array{UInt32,1}, ::Type{UInt32}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [31] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.RandomDevice, ::Array{UInt32,1}, ::Type) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [32] rand at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:285 [inlined]
 [33] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(rand), ::Random.RandomDevice, ::Type{UInt32}, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [34] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.RandomDevice, ::Type, ::Tuple{Int64}) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [35] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(rand), ::Random.RandomDevice, ::Type{UInt32}, ::Int64) at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:288
 [36] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.RandomDevice, ::Type, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [37] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.make_seed)) at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:249
 [38] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [39] seed! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:288 [inlined]
 [40] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.seed!), ::Random.MersenneTwister) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [41] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [42] seed! at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/Random.jl:412 [inlined]
 [43] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.seed!), ::Random.MersenneTwister, ::Nothing) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [44] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Random.MersenneTwister, ::Nothing) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [45] MersenneTwister at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:137 [inlined]
 [46] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Type{Random.MersenneTwister}, ::Nothing) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [47] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 ... (the last 3 lines are repeated 1 more time)
 [51] default_rng at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:302 [inlined]
 [52] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.default_rng), ::Int64) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [53] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function, ::Int64) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [54] default_rng at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/RNGs.jl:296 [inlined]
 [55] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(Random.default_rng)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [56] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [57] randn at /Users/dilum/dev/forks-DilumAluthge/julia/usr/share/julia/stdlib/v1.4/Random/src/normal.jl:39 [inlined]
 [58] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(randn)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [59] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47
 [60] g at ./REPL[2]:1 [inlined]
 [61] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::typeof(g)) at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [62] overdub at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:47 [inlined]
 [63] #3 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:88 [inlined]
 [64] recurse(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,Cassette.var"##PassType#404",Nothing,Nothing}, ::var"##3#4") at /Users/dilum/.julia/packages/Cassette/YCOeN/src/overdub.jl:0
 [65] #trace#20(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Traceur.trace), ::Function, ::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51
 [66] #warntrace#21 at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:51 [inlined]
 [67] warntrace(::Function) at /Users/dilum/.julia/packages/Traceur/OKJwj/src/trace.jl:54

ERROR: `llvmcall` must be compiled to be called

I'm getting this cryptic error when I try and use Traceur to debug my code. It seems to be related to the fact that at some point in the code I make use of LibGit2 (specifically I call LibGit2.head(".")) as when I remove that line, the error goes away.

ERROR: `llvmcall` must be compiled to be called
Stacktrace:
  [1] call
    @ ~/.julia/packages/Cassette/4Z3UO/src/context.jl:456 [inlined]
  [2] fallback
    @ ~/.julia/packages/Cassette/4Z3UO/src/context.jl:454 [inlined]
  [3] _overdub_fallback(::Any, ::Vararg{Any})
    @ ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:592 [inlined]
  [4] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, ::Core.IntrinsicFunction, ::String, ::Type{Int64}, ::Type{Tuple{Ptr{Int64}, Int64, Int64}}, ::Ptr{Int64}, ::Int64, ::Int64)
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:592
  [5] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, ::Function, ::String, ::Type, ::Type, ::Ptr{Int64}, ::Vararg{Any})
    @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
  [6] atomic_cas!(::Base.Threads.Atomic{Int64}, ::Int64, ::Int64)
    @ ./atomics.jl:373 [inlined]
  [7] overdub
    @ ./atomics.jl:373 [inlined]
  [8] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, ::typeof(Base.Threads.atomic_cas!), ::Base.Threads.Atomic{Int64}, ::Int64, ::Int64)
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:0
  [9] overdub
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47 [inlined]
 [10] (::LibGit2.var"
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/LibGit2.jl:972 [inlined]
 [11] overdub
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/LibGit2.jl:972 [inlined]
 [12] overdub(overdub_context#300::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, overdub_arguments#301::LibGit2.var"#162#163")
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:0
 [13] overdub
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47 [inlined]
 [14] overdub
    @ ./lock.jl:229 [inlined]
 [15] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, ::typeof(lock), ::LibGit2.var"#162#163", ::ReentrantLock)
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:0
 [16] overdub
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47 [inlined]
 [17] ensure_initialized()
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/LibGit2.jl:971 [inlined]
 [18] overdub
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/LibGit2.jl:971 [inlined]
 [19] overdub(overdub_context#300::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, overdub_arguments#301::typeof(LibGit2.ensure_initialized))
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:0
 [20] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, ::Function)
    @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47
 [21] GitRepo(::String)
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/repository.jl:9 [inlined]
 [22] overdub
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/repository.jl:9 [inlined]
 [23] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, ::Type{GitRepo}, ::String)
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:0
 [24] overdub
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47 [inlined]
 [25] with(::LibGit2.var"
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/types.jl:1165 [inlined]
 [26] overdub
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/types.jl:1165 [inlined]
 [27] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, ::typeof(with), ::LibGit2.var"#99#100", ::Type{GitRepo}, ::String)
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:0
 [28] overdub
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47 [inlined]
 [29] head(::String)
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/LibGit2.jl:64 [inlined]
 [30] overdub
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/LibGit2/src/LibGit2.jl:64 [inlined]
 [31] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, ::typeof(LibGit2.head), ::String)
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:0
 [32] overdub
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47 [inlined]
 [33] main(::Int64, ::Float64, ::Int64, ::String, ::Nothing)
    @ /groups/pal/users/jjeyaretnam/VSCodeProjects/FermionPT/apply_pt.jl:31 [inlined]
 [34] overdub
    @ /groups/pal/users/jjeyaretnam/VSCodeProjects/FermionPT/apply_pt.jl:31 [inlined]
 [35] overdub(::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, ::typeof(main), ::Int64, ::Float64, ::Int64, ::String, ::Nothing)
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:0
 [36] overdub
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:47 [inlined]
 [37] (::var"
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:88 [inlined]
 [38] recurse
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:88 [inlined]
 [39] recurse(overdub_context#300::Cassette.Context{nametype(TraceurCtx), Traceur.Trace, Nothing, Cassette.var"##PassType#302", Nothing, Nothing}, overdub_arguments#301::var"#17#18")
    @ Cassette ~/.julia/packages/Cassette/4Z3UO/src/overdub.jl:0
 [40] trace(w::Function, f::Function; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:51
 [41] trace
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:51 [inlined]
 [42] #warntrace#21
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:54 [inlined]
 [43] warntrace(f::Function)
    @ Traceur ~/.julia/packages/Traceur/ajxdS/src/trace.jl:53
 [44] top-level scope
    @ ~/.julia/packages/Traceur/ajxdS/src/trace.jl:88
 [45] top-level scope
    @ /scratch/jjeyaretnam/programs/julia-1.9.0/share/julia/stdlib/v1.9/REPL/src/REPL.jl:1416

Error on intersecting arrays of symbols

julia> using Traceur

julia> @trace intersect([:a], [:a])
(Base.indexed_next)(::Tuple{Int64,Bool}, ::Int64, ::Int64) at tuple.jl:54
  returns Tuple{Union{Bool, Int64},Int64}
ERROR: UndefVarError: a not defined
Stacktrace:
 [1] _step_expr(::ASTInterpreter2.JuliaStackFrame, ::ASTInterpreter2.JuliaProgramCounter) at /home/gunnar/.julia/v0.6/ASTInterpreter2/src/interpret.jl:85
 [2] next_until!(::ASTInterpreter2.##7#8, ::ASTInterpreter2.JuliaStackFrame, ::ASTInterpreter2.JuliaProgramCounter) at /home/gunnar/.julia/v0.6/ASTInterpreter2/src/interpret.jl:144
 [3] next_call!(::ASTInterpreter2.JuliaStackFrame, ::ASTInterpreter2.JuliaProgramCounter) at /home/gunnar/.julia/v0.6/ASTInterpreter2/src/interpret.jl:149
 [4] execute_command(::DebuggerFramework.DebuggerState, ::ASTInterpreter2.JuliaStackFrame, ::Val{:nc}, ::String) at /home/gunnar/.julia/v0.6/ASTInterpreter2/src/commands.jl:47
 [5] runall(::Traceur.Trace, ::DebuggerFramework.DebuggerState) at /home/gunnar/.julia/v0.6/Vinyl/src/interpret.jl:44
 [6] overdub(::Traceur.Trace, ::Function, ::Symbol, ::Vararg{Any,N} where N) at /home/gunnar/.julia/v0.6/Vinyl/src/interpret.jl:53
 [7] macro expansion at /home/gunnar/.julia/v0.6/Traceur/src/trace.jl:17 [inlined]
 [8] primitive(::Traceur.Trace, ::Function, ::Symbol, ::Vararg{Any,N} where N) at /home/gunnar/.julia/v0.6/Vinyl/src/hooks.jl:24
 [9] runall(::Traceur.Trace, ::DebuggerFramework.DebuggerState) at /home/gunnar/.julia/v0.6/Vinyl/src/interpret.jl:37
 [10] overdub(::Traceur.Trace, ::Function, ::Array{Symbol,1}, ::Vararg{Array{Symbol,1},N} where N) at /home/gunnar/.julia/v0.6/Vinyl/src/interpret.jl:53
 [11] macro expansion at /home/gunnar/.julia/v0.6/Traceur/src/trace.jl:17 [inlined]
 [12] primitive(::Traceur.Trace, ::Function, ::Array{Symbol,1}, ::Vararg{Array{Symbol,1},N} where N) at /home/gunnar/.julia/v0.6/Vinyl/src/hooks.jl:24
 [13] runall(::Traceur.Trace, ::DebuggerFramework.DebuggerState) at /home/gunnar/.julia/v0.6/Vinyl/src/interpret.jl:37
 [14] overdub(::Traceur.Trace, ::Function) at /home/gunnar/.julia/v0.6/Vinyl/src/interpret.jl:53
 [15] warntrace(::Function) at /home/gunnar/.julia/v0.6/Traceur/src/trace.jl:35

no unique matching method found for the specified argument types

I have a fairly straightforward piece of code (calculates the shortest distance to a dome according to some criterion):

using StaticArrays, LinearAlgebra
const V3 = SVector{3, Float64}
isgoodz(oz, l, dz, positive::Bool) = oz > -l*dz ? positive : !positive
function distance(orig::V3, dir::V3, positive::Bool)
    b = -origdir
    disc = b^2 - origorig + 1
    if disc  0
        d = sqrt(disc)
        t2 = b + d
        if t2  0
            t1 = b - d
            if t1 > 0 
                isgoodz(orig[3], t1, dir[3], positive) && return t1
                isgoodz(orig[3], t2, dir[3], positive) && return t2
            else                                                   
                isgoodz(orig[3], t2, dir[3], positive) && return t2
            end
        end
    end
    nothing
end
z = 0.5
orig = V3(0.,0,z + 1)
dir = V3(0.,0,-1)
pos = true
distance(orig, dir, pos) # works and return 0.5

I wanted to test it but I get this error:

julia> using Traceur

julia> @trace distance(orig, dir, pos)
ERROR: no unique matching method found for the specified argument types                                
Stacktrace:
 [1] which(::Any, ::Any) at ./reflection.jl:926
 [2] method at /home/yakir/.julia/packages/Traceur/6a4Uc/src/analysis.jl:21 [inlined]
 [3] posthook(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#363")),Nothing,Nothing}, ::Function, ::SArray{Tuple{3},Float64,1,3}, ::SArray{Tuple{3},Float64,1,3}) at /home/yakir/.julia/packages/Traceur/6a4Uc/src/trace.jl:19
 [4] same_size at /home/yakir/.julia/packages/StaticArrays/mcf7t/src/traits.jl:193 [inlined]
 [5] map at /home/yakir/.julia/packages/StaticArrays/mcf7t/src/mapreduce.jl:11 [inlined]
 [6] - at /home/yakir/.julia/packages/StaticArrays/mcf7t/src/linalg.jl:6 [inlined]
 [7] distance at ./REPL[4]:2 [inlined]
 [8] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#363")),Nothing,Nothing}, ::typeof(distance), ::SArray{Tuple{3},Float64,1,3}, ::SArray{Tuple{3},Float64,1,3}, ::Bool) at /home/yakir/.julia/packages/Cassette/LvKdG/src/overdub.jl:0
 [9] #7 at /home/yakir/.julia/packages/Traceur/6a4Uc/src/trace.jl:37 [inlined]
 [10] overdub(::Cassette.Context{nametype(TraceurCtx),Traceur.Trace,Nothing,getfield(Cassette, Symbol("##PassType#363")),Nothing,Nothing}, ::getfield(Main, Symbol("##7#8"))) at /home/yakir/.julia/packages/Cassette/LvKdG/src/overdub.jl:0
 [11] trace(::Function, ::Function) at /home/yakir/.julia/packages/Traceur/6a4Uc/src/trace.jl:26
 [12] warntrace(::Function) at /home/yakir/.julia/packages/Traceur/6a4Uc/src/trace.jl:28
 [13] top-level scope at none:0

Add stack traces to warnings

I'd like to see stack traces for each warning. Often, I have warnings in Julia-owned files like math.jl or operators.jl.

I'd like to be able to see, where in my code I am calling those functions (eventually) and thereby determine, if I could call some base function more efficiently.

ERROR: UndefRefError: access to undefined reference

The following function runs fine by itself, but yields an error when run with @trace. The line pointed at in the error message unfortunately gives me no clue as to what is wrong

julia> lossfun(w)
195.4677317894379

julia> Traceur.@trace lossfun(w)
(Base.indexed_next)(::Tuple{Int64,Bool}, ::Int64, ::Int64) at tuple.jl:54
  returns Tuple{Union{Bool, Int64},Int64}
(Base.indexed_next)(::Tuple{Tuple{Bool},Tuple{Int64}}, ::Int64, ::Int64) at tuple.jl:54
  returns Tuple{Tuple{Integer},Int64}
(Base.indexed_next)(::Tuple{Tuple{Tuple{Bool}},Tuple{Tuple{Int64}}}, ::Int64, ::Int64) at tuple.jl:54
  returns Tuple{Tuple{Tuple{Integer}},Int64}
Error from: 
(::JacProp.##66#67)(::Any) in JacProp
Error from: 
_broadcast!(f, B::AbstractArray, keeps::K, Idefaults::ID, A::AT, Bs::BT, ::Type{Val{N}}, iter) where {K, ID, AT, BT, N} in Base.Broadcast at broadcast.jl:141
Error from: 
broadcast_t(f, T, shape, iter, A, Bs::Vararg{Any,N}) where N in Base.Broadcast at broadcast.jl:268
Error from: 
broadcast_c(f, ::Type{Array}, A, Bs...) in Base.Broadcast at broadcast.jl:312
Error from: 
broadcast(f, A, Bs...) in Base.Broadcast at broadcast.jl:455
Error from: 
i2m(w, i, sizes) in JacProp at /local/home/fredrikb/.julia/v0.6/JacProp/src/utilities.jl:212
Error from: 
predd(w, x, sizes, nx) in JacProp at /local/home/fredrikb/.julia/v0.6/JacProp/src/utilities.jl:99
Error from: 
cost(w, sizes, nx, x, y) in JacProp at /local/home/fredrikb/.julia/v0.6/JacProp/src/utilities.jl:186
Error from: 
(::JacProp.#lf#62)(w) in JacProp at /local/home/fredrikb/.julia/v0.6/JacProp/src/utilities.jl:196
Error from: 
(::##49#50)() in Main at /local/home/fredrikb/.julia/v0.6/Traceur/src/trace.jl:34
ERROR: UndefRefError: access to undefined reference

The function lossfun is a closure around a bunch of variables and it's creating looks like this, i.e., it contains an internal jacobian calculation with ForwardDiff

function loss(w,x,y,mt::ADModelTrainer)
    chunk = Diff.Chunk(x[:,1])
    model, λ = mt.model, mt.λ
    w, sizes, nx, nu = model.w, model.sizes, model.nx, model.nu
    function lf(w)
        f(x) = predd(w,x,sizes,nx)
        jcfg        = Diff.JacobianConfig(f, x[:,1], chunk)
        jacobian(x) = Diff.jacobian(f, x, jcfg)
        l = cost(w,sizes,nx,x,y)
        J2 = zeros(nx+nu, nx)
        J1 = jacobian(x[:,1])
        for t = 2:size(x,2)
            J2 = jacobian(x[:,t])
            l += λ*sum(abs2.(J1.-J2))
            J1 = J2
        end
        l
    end
end

lossfun = loss(w,x,y,mt)
julia> Pkg.status("Traceur")
 - Traceur                       0.1.1+             master

julia> VERSION
v"0.6.2"

unable to load package

Installation worked fine, but then when I try to load it, using Traceur, I get the following error message:

ERROR: LoadError: ArgumentError: Module Vinyl not found in current path.
Run Pkg.add("Vinyl") to install the Vinyl package.

Running Pkg.add("Vinyl") tells me there is no such package.

Warning for missing @inbounds

I think a (probably opt-in only) warning for generated @boundscheck statements would be very helpful.

Sometimes, there is code with multiple (inline) functions and nested control flow. In those cases, it can be quite hard to keep track of @inbounds propagation rules and I'd like to have a tool that tells me which lines of my code still perform bounds checking.

Testing functionality

When you have fixed everything Traceur found to complain about, you want it to stay that way, and you want to have automated tests monitoring it.

I'd love to be able to do something like

@tracetest :no_dynamic_dispatch :no_type_instability run_my_testcase()

or maybe

report = @tracereport run_my_testcase()
@test no_dynamic_dispatch(report)
@test number_allocations(report) <= 1
@test allocated_bytes(report) <= 20000

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.