Skip to content

Commit

Permalink
Merge pull request #38 from c42f/caf/juliasyntax-fixes
Browse files Browse the repository at this point in the history
Accommodate JuliaSyntax in tests
  • Loading branch information
oxinabox authored Jun 22, 2023
2 parents f38002a + 553c498 commit 124baaa
Showing 1 changed file with 28 additions and 8 deletions.
36 changes: 28 additions & 8 deletions test/function.jl
Original file line number Diff line number Diff line change
Expand Up @@ -483,12 +483,24 @@ function_form(short::Bool) = string(short ? "short" : "long", "-form")
@testset "block expression ($(function_form(short)) anonymous function)" for short in (true, false)
@testset "(;)" begin
# The `(;)` syntax was deprecated in 1.4.0-DEV.585 (ce29ec547e) but we can still
# test the behavior with `begin end`.
f, expr = if short
@audit (begin end) -> nothing
else
@audit function (begin end) nothing end
end
# test the behavior with an explicit Expr
expr = if short
# `(;) -> nothing`
Expr(
:->,
Expr(:block),
Expr(:block, LineNumberNode(@__LINE__, @__FILE__), :nothing),
)
else
# `function (;) nothing end`
Expr(
:function,
Expr(:block),
Expr(:block, LineNumberNode(@__LINE__, @__FILE__), :nothing),
)
end
f = eval(expr)

@test length(methods(f)) == 1
@test f() === nothing

Expand Down Expand Up @@ -788,8 +800,16 @@ function_form(short::Bool) = string(short ? "short" : "long", "-form")

@testset "return-type (long-form anonymous function)" begin
@testset "(x)::Integer" begin
# Interpreted as `function (x::Integer); x end`
f, expr = @audit function (x)::Integer; x end
# Older parsers interpret
# `function (x)::Integer; x end`
# as
# `function (x::Integer); x end`
expr = Expr(
:function,
Expr(:tuple, Expr(:(::), :x, :Integer)),
Expr(:block, LineNumberNode(@__LINE__, @__FILE__), :x),
)
f = eval(expr)
@test length(methods(f)) == 1
@test f(0) == 0
@test_throws MethodError f(0.0)
Expand Down

0 comments on commit 124baaa

Please sign in to comment.