-
Notifications
You must be signed in to change notification settings - Fork 37
Closed
Description
julia> using DynamicPPL
julia> @model f(::Val{ispredict} = Val(false)) where {ispredict} = ispredict ? 0 : 1
ERROR: syntax: invalid "::" syntax around REPL[4]:1
Stacktrace:
[1] top-level scope
@ REPL[4]:1
julia> @macroexpand @model f(::Val{ispredict} = Val(false)) where {ispredict} = ispredict ? 0 : 1
quote
function f(__model__::Model, __varinfo__::AbstractVarInfo, __context__::AbstractPPL.AbstractContext, ::Val{ispredict}; ) where ispredict
#= REPL[5]:1 =#
begin
#= REPL[5]:1 =#
begin
#= /home/tor/Projects/public/DynamicPPL.jl/src/compiler.jl:529 =#
var"##retval#275" = if ispredict
0
else
1
end
#= /home/tor/Projects/public/DynamicPPL.jl/src/compiler.jl:530 =#
return (var"##retval#275", __varinfo__)
end
end
end
begin
$(Expr(:meta, :doc))
function f(::Val{ispredict} = Val(false); ) where ispredict
#= REPL[5]:1 =#
return (Model)(:f, f, NamedTuple{($(QuoteNode(:(::Val{ispredict}))),)}((::Val{ispredict},)), NamedTuple{($(QuoteNode(:(::Val{ispredict}))),)}((Val(false),)))
end
end
endBut works fine if we give it a "name":
julia> @macroexpand @model f(isval::Val{ispredict} = Val(false)) where {ispredict} = ispredict ? 0 : 1
quote
function f(__model__::Model, __varinfo__::AbstractVarInfo, __context__::AbstractPPL.AbstractContext, isval::Val{ispredict}; ) where ispredict
#= REPL[6]:1 =#
begin
#= REPL[6]:1 =#
begin
#= /home/tor/Projects/public/DynamicPPL.jl/src/compiler.jl:529 =#
var"##retval#276" = if ispredict
0
else
1
end
#= /home/tor/Projects/public/DynamicPPL.jl/src/compiler.jl:530 =#
return (var"##retval#276", __varinfo__)
end
end
end
begin
$(Expr(:meta, :doc))
function f(isval::Val{ispredict} = Val(false); ) where ispredict
#= REPL[6]:1 =#
return (Model)(:f, f, NamedTuple{(:isval,)}((isval,)), NamedTuple{(:isval,)}((Val(false),)))
end
end
endMetadata
Metadata
Assignees
Labels
No labels