Skip to content

Commit 5b9945f

Browse files
authored
Revert "Allow empty return statements (#446)" (#463)
This reverts commit c5c0d34.
1 parent 6fcbbb8 commit 5b9945f

File tree

2 files changed

+5
-62
lines changed

2 files changed

+5
-62
lines changed

src/macros.jl

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
import MacroTools: splitdef, combinedef, isexpr, postwalk
22

3-
# Check whether there are `return` statements that return something else but `nothing`
4-
function contains_return_something(stmt)
3+
function find_return(stmt)
54
result = false
65
postwalk(stmt) do expr
7-
if @capture(expr, return x_)
8-
# `nothing` indicates a stand-alone return statement, `:nothing` indicates a `return nothing`
9-
result |= x !== nothing && x !== :nothing
10-
end
6+
result |= @capture(expr, return x_)
117
expr
128
end
139
result
@@ -18,9 +14,7 @@ function __kernel(expr, generate_cpu=true, force_inbounds=false)
1814
def = splitdef(expr)
1915
name = def[:name]
2016
args = def[:args]
21-
if contains_return_something(expr)
22-
error("Return statement (except `return` or `return nothing`) not permitted in kernel function $name")
23-
end
17+
find_return(expr) && error("Return statement not permitted in a kernel function $name")
2418

2519
constargs = Array{Bool}(undef, length(args))
2620
for (i, arg) in enumerate(args)

test/test.jl

Lines changed: 2 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -218,64 +218,13 @@ end
218218

219219
@conditional_testset "return statement" skip_tests begin
220220
try
221-
@eval @kernel function kernel_return1()
222-
return 1
223-
end
224-
@test false
225-
catch e
226-
@test e.error ==
227-
ErrorException("Return statement (except `return` or `return nothing`) not permitted in kernel function kernel_return1")
228-
end
229-
try
230-
@eval @kernel function kernel_return2()
231-
x = nothing
232-
return x
233-
end
234-
@test false
235-
catch e
236-
@test e.error ==
237-
ErrorException("Return statement (except `return` or `return nothing`) not permitted in kernel function kernel_return2")
238-
end
239-
try
240-
@eval @kernel function kernel_return3()
241-
return
242-
end
243-
@test true
244-
catch e
245-
@test false
246-
end
247-
try
248-
@eval @kernel function kernel_return4()
249-
return nothing
250-
end
251-
@test true
252-
catch e
253-
@test false
254-
end
255-
try
256-
@eval @kernel function kernel_return5()
257-
if something()
258-
return something2()
259-
end
260-
something3()
221+
@eval @kernel function kernel_return()
261222
return
262223
end
263224
@test false
264225
catch e
265226
@test e.error ==
266-
ErrorException("Return statement (except `return` or `return nothing`) not permitted in kernel function kernel_return5")
267-
end
268-
try
269-
@eval @kernel function kernel_return6()
270-
if something()
271-
return
272-
end
273-
something3()
274-
return
275-
end
276-
@test true
277-
catch e
278-
@test false
227+
ErrorException("Return statement not permitted in a kernel function kernel_return")
279228
end
280229
end
281230

0 commit comments

Comments
 (0)