diff --git a/src/delegate.jl b/src/delegate.jl index e198ac144..08a66d160 100644 --- a/src/delegate.jl +++ b/src/delegate.jl @@ -1,7 +1,17 @@ # by JMW + +function unquote(e::Expr) + @assert e.head == :quote + return e.args[1] +end + +function unquote(e::QuoteNode) + return e.value +end + macro delegate(source, targets) typename = esc(source.args[1]) - fieldname = source.args[2].args[1] + fieldname = unquote(source.args[2]) funcnames = targets.args n = length(funcnames) fdefs = Vector{Any}(n) @@ -17,7 +27,7 @@ end macro delegate_return_parent(source, targets) typename = esc(source.args[1]) - fieldname = source.args[2].args[1] + fieldname = unquote(source.args[2]) funcnames = targets.args n = length(funcnames) fdefs = Vector{Any}(n)