syntax: incomplete: premature end of input
👀 Reading hidden code
r(
:(f(x, y::Any, z::e(Union{a, b}) = 1, b = b; b::E = 3))👀 Reading hidden code
f = (quote
function f(x, y::Any, z::e(Union{a,b})=1, b=b; b::E=3)
123
123
123
123
123
end
end).args[2].args[1]
:(g(a, z::f...) where T <: 123)👀 Reading hidden code
g = (quote
function g(a,z::f...) where T <: 123
123
123
123
123
123
end
end).args[2].args[1]
👀 Reading hidden code
using PlutoUI
Expr
head: Symbol call
args: Array{Any}((6,))
1: Symbol f
2: Expr
head: Symbol parameters
args: Array{Any}((1,))
1: Expr
head: Symbol kw
args: Array{Any}((2,))
1: Expr
head: Symbol ::
args: Array{Any}((2,))
1: Symbol b
2: Symbol E
2: Int64 3
3: Symbol x
4: Expr
head: Symbol ::
args: Array{Any}((2,))
1: Symbol y
2: Symbol Any
5: Expr
head: Symbol kw
args: Array{Any}((2,))
1: Expr
head: Symbol ::
args: Array{Any}((2,))
1: Symbol z
2: Expr
head: Symbol call
args: Array{Any}((2,))
1: Symbol e
2: Expr
head: Symbol curly
args: Array{Any}((3,))
1: Symbol Union
2: Symbol a
3: Symbol b
2: Int64 1
6: Expr
head: Symbol kw
args: Array{Any}((2,))
1: Symbol b
2: Symbol b
Dump(f, maxdepth=123)
👀 Reading hidden code
Array{Expr}((4,))
1: Expr
head: Symbol ::
args: Array{Any}((2,))
1: Nothing nothing
2: Any
2: Expr
head: Symbol ::
args: Array{Any}((2,))
1: Nothing nothing
2: Symbol Any
3: Expr
head: Symbol kw
args: Array{Any}((2,))
1: Expr
head: Symbol ::
args: Array{Any}((2,))
1: Nothing nothing
2: Expr
head: Symbol call
args: Array{Any}((2,))
1: Symbol e
2: Expr
head: Symbol curly
args: Array{Any}((3,))
1: Symbol Union
2: Symbol a
3: Symbol b
2: Nothing nothing
4: Expr
head: Symbol kw
args: Array{Any}((2,))
1: Expr
head: Symbol ::
args: Array{Any}((2,))
1: Nothing nothing
2: Any
2: Nothing nothing
Dump(canonalize(f), maxdepth=234)
👀 Reading hidden code
canonalize (generic function with 1 method)function canonalize(ex::Expr)
if ex.head == :where
Expr(:where, canonalize(ex.args[1]), ex.args[2:end]...)
elseif ex.head == :call
ex.args[1] # is the function name, we dont want it
interesting = filter(ex.args[2:end]) do arg
!(arg isa Expr && arg.head == :parameters)
end
hide_argument_name.(interesting)
else
@error "Huh" ex
nothing
end
end
👀 Reading hidden code
hide_argument_name (generic function with 3 methods)begin
function hide_argument_name(ex::Expr)
if ex.head == :(::) && length(ex.args) > 1
Expr(:(::), nothing, ex.args[2:end]...)
elseif ex.head == :(...)
Expr(:(...), hide_argument_name(ex.args[1]))
elseif ex.head == :kw
Expr(:kw, hide_argument_name(ex.args[1]), nothing)
else
ex
end
end
hide_argument_name(::Symbol) = Expr(:(::), nothing, Any)
hide_argument_name(x::Any) = x
end
👀 Reading hidden code