jlon (generic function with 1 method)
👀 Reading hidden code
parse (generic function with 1 method)
👀 Reading hidden code
👀 Reading hidden code
check_isclean (generic function with 1 method)
👀 Reading hidden code
testy (generic function with 1 method)
👀 Reading hidden code
true
👀 Reading hidden code
true
👀 Reading hidden code
true
👀 Reading hidden code
true
👀 Reading hidden code
true
👀 Reading hidden code
true
testy((a=1.2,b=2,c="three"))
👀 Reading hidden code
clean_type (generic function with 1 method)
clean_type(x) = false
👀 Reading hidden code
Union{Bool, Char, Float32, Float64, Int32, Int64, String}
const ValueType = Union{String,Int64,Int32,Char,Float64,Float32,Bool}
👀 Reading hidden code
:Any
:String
:Int64
:Int32
:Int16
:Int8
:UInt64
:UInt32
:UInt16
:UInt8
:Float64
:Float32
:Float128
:BigInt
const CleanTypes = (:Any, :String, :Int64, :Int32, :Int16, :Int8, :UInt64, :UInt32, :UInt16, :UInt8, :Float64, :Float32, :Float128, :BigInt)
👀 Reading hidden code
clean_type (generic function with 2 methods)
clean_type(x::Symbol) = x ∈ CleanTypes
👀 Reading hidden code
check_isclean (generic function with 2 methods)
function check_isclean(e::Expr)
h = e.head
if h === :vect
foreach(check_isclean, e.args)
elseif h === :ref && clean_type(e.args[1])
foreach(check_isclean, @view e.args[2:end])
elseif h === :call && e.args[1] === :Dict
for a in e.args[2:end]
@assert Meta.isexpr(a, :call, 3)
@assert a.args[1] === :(=>)
check_isclean(a.args[2])
check_isclean(a.args[3])
end
elseif h === :tuple
if all(a -> Meta.isexpr(a, :(=), 2), e.args)
for a in e.args
@assert a.args[1] isa Symbol
check_isclean(a.args[2])
end
else
foreach(check_isclean, e.args)
end
else
throw(ArgumentError("Invalid expression: $(sprint(dump, e))"))
end
end
👀 Reading hidden code
using PlutoTest
👀 Reading hidden code
👀 Reading hidden code
👀 Reading hidden code