Skip to content

Commit b268a17

Browse files
authored
Merge pull request #370 from Pangoraw/bracketed_function_def
Support bracketed function call in function definition
2 parents 4fe75cd + eb80a0b commit b268a17

File tree

3 files changed

+6
-2
lines changed

3 files changed

+6
-2
lines changed

src/interface.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,9 @@ function get_sig(x::EXPR)
173173
return x.args[1]
174174
elseif headof(x) === :struct || headof(x) === :mutable
175175
return x.args[2]
176-
elseif headof(x) === :abstract || headof(x) === :primitive || headof(x) === :function || headof(x) === :macro
176+
elseif headof(x) === :function || headof(x) === :macro
177+
return rem_invis(x.args[1])
178+
elseif headof(x) === :abstract || headof(x) === :primitive
177179
return x.args[1]
178180
end
179181
end

src/utils.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ _kw_convert(x::EXPR) = EXPR(:kw, EXPR[x.args[1], x.args[2]], EXPR[x.head], x.ful
575575
576576
When parsing a function or macro signature, should it be converted to a tuple?
577577
"""
578-
convertsigtotuple(sig::EXPR) = isbracketed(sig) && !(istuple(sig.args[1]) || (headof(sig.args[1]) === :block) || issplat(sig.args[1]))
578+
convertsigtotuple(sig::EXPR) = isbracketed(sig) && !(istuple(sig.args[1]) || iscall(sig.args[1]) || (headof(sig.args[1]) === :block) || issplat(sig.args[1]))
579579

580580
"""
581581
docable(head)

test/interface.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,12 @@ end
5252
@test valof(CSTParser.get_name(CSTParser.parse("function f()::T end"))) == "f"
5353
@test valof(CSTParser.get_name(CSTParser.parse("function f(x::T) where T end"))) == "f"
5454
@test valof(CSTParser.get_name(CSTParser.parse("function f{T}() end"))) == "f"
55+
@test valof(CSTParser.get_name(CSTParser.parse("function (f()) end"))) == "f"
5556

5657
# Operators
5758
@test CSTParser.str_value(CSTParser.get_name(CSTParser.parse("function +() end"))) == "+"
5859
@test CSTParser.str_value(CSTParser.get_name(CSTParser.parse("function (+)() end"))) == "+"
60+
@test CSTParser.str_value(CSTParser.get_name(CSTParser.parse("function (a + b) end"))) == "+"
5961
@test CSTParser.str_value(CSTParser.get_name(CSTParser.parse("+(x,y) = x"))) == "+"
6062
@test CSTParser.str_value(CSTParser.get_name(CSTParser.parse("+(x,y)::T = x"))) == "+"
6163
@test CSTParser.str_value(CSTParser.get_name(CSTParser.parse("!(x)::T = x"))) == "!"

0 commit comments

Comments
 (0)