Skip to content

Commit

Permalink
Merge pull request #92 from JuliaArrays/fix-macro-inline-bug
Browse files Browse the repository at this point in the history
Bugfix: Avoid emitting Expr(:meta, :inline) in a macro (!)
  • Loading branch information
c42f authored Dec 30, 2016
2 parents 726b18b + 1717d18 commit e5337be
Show file tree
Hide file tree
Showing 6 changed files with 0 additions and 40 deletions.
7 changes: 0 additions & 7 deletions src/MArray.jl
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,6 @@ macro MArray(ex)
end

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :MArray, (rng_lengths...)), Expr(:tuple, exprs...))))
end
Expand Down Expand Up @@ -249,7 +248,6 @@ macro MArray(ex)
end

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :MArray, (rng_lengths...), T), Expr(:tuple, exprs...))))
end
Expand All @@ -259,7 +257,6 @@ macro MArray(ex)
error("@MArray got bad expression: $(ex.args[1])()")
else
return quote
$(Expr(:meta, :inline))
if isa($(esc(ex.args[2])), DataType)
$(ex.args[1])($(esc(Expr(:curly, MArray, Expr(:tuple, ex.args[3:end]...), ex.args[2]))))
else
Expand All @@ -274,20 +271,17 @@ macro MArray(ex)
error("@MArray got bad expression: $(ex.args[1])($(ex.args[2]))")
else
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))($(esc(ex.args[2])), MArray{$(esc(Expr(:tuple, ex.args[3:end]...)))})
end
end
elseif ex.args[1] == :eye
if length(ex.args) == 2
return quote
$(Expr(:meta, :inline))
eye(MArray{($(esc(ex.args[2])), $(esc(ex.args[2])))})
end
elseif length(ex.args) == 3
# We need a branch, depending if the first argument is a type or a size.
return quote
$(Expr(:meta, :inline))
if isa($(esc(ex.args[2])), DataType)
eye(MArray{($(esc(ex.args[3])), $(esc(ex.args[3]))), $(esc(ex.args[2]))})
else
Expand All @@ -296,7 +290,6 @@ macro MArray(ex)
end
elseif length(ex.args) == 4
return quote
$(Expr(:meta, :inline))
eye(MArray{($(esc(ex.args[3])), $(esc(ex.args[4]))), $(esc(ex.args[2]))})
end
else
Expand Down
8 changes: 0 additions & 8 deletions src/MMatrix.jl
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,6 @@ macro MMatrix(ex)
exprs = [:($f($j1, $j2)) for j1 in rng1, j2 in rng2]

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :MMatrix, length(rng1), length(rng2)), Expr(:tuple, exprs...))))
end
Expand All @@ -227,20 +226,17 @@ macro MMatrix(ex)
exprs = [:($f($j1, $j2)) for j1 in rng1, j2 in rng2]

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :MMatrix, length(rng1), length(rng2), T), Expr(:tuple, exprs...))))
end
elseif isa(ex, Expr) && ex.head == :call
if ex.args[1] == :zeros || ex.args[1] == :ones || ex.args[1] == :rand || ex.args[1] == :randn
if length(ex.args) == 3
return quote
$(Expr(:meta, :inline))
$(ex.args[1])(MMatrix{$(esc(ex.args[2])),$(esc(ex.args[3]))})
end
elseif length(ex.args) == 4
return quote
$(Expr(:meta, :inline))
$(ex.args[1])(MMatrix{$(esc(ex.args[3])), $(esc(ex.args[4])), $(esc(ex.args[2]))})
end
else
Expand All @@ -249,7 +245,6 @@ macro MMatrix(ex)
elseif ex.args[1] == :fill
if length(ex.args) == 4
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))($(esc(ex.args[2])), MMatrix{$(esc(ex.args[3])), $(esc(ex.args[4]))})
end
else
Expand All @@ -258,13 +253,11 @@ macro MMatrix(ex)
elseif ex.args[1] == :eye
if length(ex.args) == 2
return quote
$(Expr(:meta, :inline))
eye(MMatrix{$(esc(ex.args[2]))})
end
elseif length(ex.args) == 3
# We need a branch, depending if the first argument is a type or a size.
return quote
$(Expr(:meta, :inline))
if isa($(esc(ex.args[2])), DataType)
eye(MMatrix{$(esc(ex.args[3])), $(esc(ex.args[3])), $(esc(ex.args[2]))})
else
Expand All @@ -273,7 +266,6 @@ macro MMatrix(ex)
end
elseif length(ex.args) == 4
return quote
$(Expr(:meta, :inline))
eye(MMatrix{$(esc(ex.args[3])), $(esc(ex.args[4])), $(esc(ex.args[2]))})
end
else
Expand Down
5 changes: 0 additions & 5 deletions src/MVector.jl
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,6 @@ macro MVector(ex)
exprs = [:($f($j)) for j in rng]

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :MVector, length(rng)), Expr(:tuple, exprs...))))
end
Expand All @@ -117,20 +116,17 @@ macro MVector(ex)
exprs = [:($f($j)) for j in rng]

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :MVector, length(rng), T), Expr(:tuple, exprs...))))
end
elseif isa(ex, Expr) && ex.head == :call
if ex.args[1] == :zeros || ex.args[1] == :ones || ex.args[1] == :rand ||ex.args[1] == :randn
if length(ex.args) == 2
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))(MVector{$(esc(ex.args[2]))})
end
elseif length(ex.args) == 3
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))(MVector{$(esc(ex.args[3])), $(esc(ex.args[2]))})
end
else
Expand All @@ -139,7 +135,6 @@ macro MVector(ex)
elseif ex.args[1] == :fill
if length(ex.args) == 3
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))($(esc(ex.args[2])), MVector{$(esc(ex.args[3]))})
end
else
Expand Down
7 changes: 0 additions & 7 deletions src/SArray.jl
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,6 @@ macro SArray(ex)
end

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :SArray, (rng_lengths...)), Expr(:tuple, exprs...))))
end
Expand Down Expand Up @@ -213,7 +212,6 @@ macro SArray(ex)
end

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :SArray, (rng_lengths...), T), Expr(:tuple, exprs...))))
end
Expand All @@ -223,7 +221,6 @@ macro SArray(ex)
error("@SArray got bad expression: $(ex.args[1])()")
else
return quote
$(Expr(:meta, :inline))
if isa($(esc(ex.args[2])), DataType)
$(ex.args[1])($(esc(Expr(:curly, SArray, Expr(:tuple, ex.args[3:end]...), ex.args[2]))))
else
Expand All @@ -238,20 +235,17 @@ macro SArray(ex)
error("@SArray got bad expression: $(ex.args[1])($(ex.args[2]))")
else
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))($(esc(ex.args[2])), SArray{$(esc(Expr(:tuple, ex.args[3:end]...)))})
end
end
elseif ex.args[1] == :eye
if length(ex.args) == 2
return quote
$(Expr(:meta, :inline))
eye(SArray{($(esc(ex.args[2])), $(esc(ex.args[2])))})
end
elseif length(ex.args) == 3
# We need a branch, depending if the first argument is a type or a size.
return quote
$(Expr(:meta, :inline))
if isa($(esc(ex.args[2])), DataType)
eye(SArray{($(esc(ex.args[3])), $(esc(ex.args[3]))), $(esc(ex.args[2]))})
else
Expand All @@ -260,7 +254,6 @@ macro SArray(ex)
end
elseif length(ex.args) == 4
return quote
$(Expr(:meta, :inline))
eye(SArray{($(esc(ex.args[3])), $(esc(ex.args[4]))), $(esc(ex.args[2]))})
end
else
Expand Down
8 changes: 0 additions & 8 deletions src/SMatrix.jl
Original file line number Diff line number Diff line change
Expand Up @@ -188,7 +188,6 @@ macro SMatrix(ex)
exprs = [:($f($j1, $j2)) for j1 in rng1, j2 in rng2]

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :SMatrix, length(rng1), length(rng2)), Expr(:tuple, exprs...))))
end
Expand All @@ -209,20 +208,17 @@ macro SMatrix(ex)
exprs = [:($f($j1, $j2)) for j1 in rng1, j2 in rng2]

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :SMatrix, length(rng1), length(rng2), T), Expr(:tuple, exprs...))))
end
elseif isa(ex, Expr) && ex.head == :call
if ex.args[1] == :zeros || ex.args[1] == :ones || ex.args[1] == :rand || ex.args[1] == :randn
if length(ex.args) == 3
return quote
$(Expr(:meta, :inline))
$(ex.args[1])(SMatrix{$(esc(ex.args[2])),$(esc(ex.args[3]))})
end
elseif length(ex.args) == 4
return quote
$(Expr(:meta, :inline))
$(ex.args[1])(SMatrix{$(esc(ex.args[3])), $(esc(ex.args[4])), $(esc(ex.args[2]))})
end
else
Expand All @@ -231,7 +227,6 @@ macro SMatrix(ex)
elseif ex.args[1] == :fill
if length(ex.args) == 4
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))($(esc(ex.args[2])), SMatrix{$(esc(ex.args[3])), $(esc(ex.args[4]))})
end
else
Expand All @@ -240,13 +235,11 @@ macro SMatrix(ex)
elseif ex.args[1] == :eye
if length(ex.args) == 2
return quote
$(Expr(:meta, :inline))
eye(SMatrix{$(esc(ex.args[2]))})
end
elseif length(ex.args) == 3
# We need a branch, depending if the first argument is a type or a size.
return quote
$(Expr(:meta, :inline))
if isa($(esc(ex.args[2])), DataType)
eye(SMatrix{$(esc(ex.args[3])), $(esc(ex.args[3])), $(esc(ex.args[2]))})
else
Expand All @@ -255,7 +248,6 @@ macro SMatrix(ex)
end
elseif length(ex.args) == 4
return quote
$(Expr(:meta, :inline))
eye(SMatrix{$(esc(ex.args[3])), $(esc(ex.args[4])), $(esc(ex.args[2]))})
end
else
Expand Down
5 changes: 0 additions & 5 deletions src/SVector.jl
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ macro SVector(ex)
exprs = [:($f($j)) for j in rng]

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :SVector, length(rng)), Expr(:tuple, exprs...))))
end
Expand All @@ -101,20 +100,17 @@ macro SVector(ex)
exprs = [:($f($j)) for j in rng]

return quote
$(Expr(:meta, :inline))
$(esc(f_expr))
$(esc(Expr(:call, Expr(:curly, :SVector, length(rng), T), Expr(:tuple, exprs...))))
end
elseif isa(ex, Expr) && ex.head == :call
if ex.args[1] == :zeros || ex.args[1] == :ones || ex.args[1] == :rand ||ex.args[1] == :randn
if length(ex.args) == 2
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))(SVector{$(esc(ex.args[2]))})
end
elseif length(ex.args) == 3
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))(SVector{$(esc(ex.args[3])), $(esc(ex.args[2]))})
end
else
Expand All @@ -123,7 +119,6 @@ macro SVector(ex)
elseif ex.args[1] == :fill
if length(ex.args) == 3
return quote
$(Expr(:meta, :inline))
$(esc(ex.args[1]))($(esc(ex.args[2])), SVector{$(esc(ex.args[3]))})
end
else
Expand Down

0 comments on commit e5337be

Please sign in to comment.