Skip to content

Commit 6c2485b

Browse files
authored
better error message for empty expression (#150)
1 parent 702a73b commit 6c2485b

File tree

4 files changed

+15
-1
lines changed

4 files changed

+15
-1
lines changed

src/AbstractPatterns/impl/RedyFlavoured.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ function myimpl()
221221
if v isa Symbol
222222
v = QuoteNode(v)
223223
end
224+
224225
Base.isbitstype(ty) ?
225226
CheckCond(:($(target.repr) === $v)) : CheckCond(:($(target.repr) == $v))
226227
end

src/MatchImpl.jl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,10 @@ function gen_switch(val, ex, __source__::LineNumberNode, __module__::Module)
453453
is_ln && (ln = stmt)
454454
end
455455
end
456-
456+
isempty(branches) && return Expr(:block,
457+
__source__,
458+
:(throw(ArgumentError("empty match expression")))
459+
)
457460
backend(val, branches, terminal, __source__; hygienic = false)
458461
end
459462

@@ -639,6 +642,10 @@ function gen_match(val, tbl, __source__::LineNumberNode, __module__::Module)
639642
end
640643
end
641644

645+
isempty(branches) && return Expr(:block,
646+
__source__,
647+
:(throw(ArgumentError("empty match expression")))
648+
)
642649
backend(val, branches, terminal, __source__; hygienic = true)
643650
end
644651

test/match.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,6 @@
135135
@test val === nothing
136136
end
137137
end
138+
139+
@test_macro_throws ArgumentError @match 1 begin
140+
end

test/switch.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,6 @@
4747
# Non-exhaustive matches fail silently.
4848
try_setflag_2("")
4949
end
50+
51+
@test_macro_throws ArgumentError @switch 1 begin
52+
end

0 commit comments

Comments
 (0)