Skip to content

Commit 95e5df1

Browse files
committed
make capturing of function body more consistent in shortdef/longdef
1 parent 02cf39d commit 95e5df1

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/utils.jl

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ isshortdef(ex) = (@capture(ex, (fcall_ = body_)) &&
201201

202202
function longdef1(ex)
203203
if @capture(ex, (arg_ -> body_))
204-
@q function ($arg,) $body end
204+
@q function ($arg,) $(body.args...) end
205205
elseif isshortdef(ex)
206206
@assert @capture(ex, (fcall_ = body_))
207207
striplines(Expr(:function, fcall, body))
@@ -213,12 +213,13 @@ longdef(ex) = prewalk(longdef1, ex)
213213

214214
function shortdef1(ex)
215215
@match ex begin
216-
function f_(args__) body_ end => @q $f($(args...)) = $body
217-
function f_(args__) where T__ body_ end => @q $f($(args...)) where $(T...) = $body
218-
function f_(args__)::rtype_ body_ end => @q $f($(args...))::$rtype = $body
219-
function (args__,) body_ end => @q ($(args...),) -> $body
216+
function f_(args__) body_ end => @q $f($(args...)) = $(body.args...)
217+
function f_(args__) where T__ body_ end => @q $f($(args...)) where $(T...) = $(body.args...)
218+
function f_(args__)::rtype_ body_ end => @q $f($(args...))::$rtype = $(body.args...)
219+
function f_(args__)::rtype_ where T__ body_ end => @q ($f($(args...))::$rtype) where $(T...) = $(body.args...)
220+
function (args__,) body_ end => @q ($(args...),) -> $(body.args...)
220221
((args__,) -> body_) => ex
221-
(arg_ -> body_) => @q ($arg,) -> $body
222+
(arg_ -> body_) => @q ($arg,) -> $(body.args...)
222223
_ => ex
223224
end
224225
end

0 commit comments

Comments
 (0)