Skip to content

Commit 51e29d0

Browse files
authored
Merge pull request #34125 from JuliaLang/teh/fix34122
Docsystem: unwrap nospecialize (fixes #34122)
2 parents c5b5e95 + 775d2d7 commit 51e29d0

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

base/docs/Docs.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,12 @@ signature(@nospecialize other) = signature!([], other)
120120
function argtype(expr::Expr)
121121
isexpr(expr, :(::)) && return expr.args[end]
122122
isexpr(expr, :(...)) && return :(Vararg{$(argtype(expr.args[1]))})
123+
if isexpr(expr, :meta) && length(expr.args) == 2
124+
a1 = expr.args[1]
125+
if a1 === :nospecialize || a1 === :specialize
126+
return argtype(expr.args[2])
127+
end
128+
end
123129
return argtype(expr.args[1])
124130
end
125131
argtype(@nospecialize other) = :Any

test/docs.jl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,13 @@ function returntype(x::Int)::Int
211211
x
212212
end
213213

214+
# @nospecialize (issue #34122)
215+
"`fnospecialize` for Numbers"
216+
fnospecialize(@nospecialize(x::Number)) = 1
217+
218+
"`fnospecialize` for arrays"
219+
fnospecialize(@nospecialize(x::AbstractArray)) = 2
220+
214221
end
215222

216223
let md = meta(DocsTest)[@var(DocsTest)]
@@ -284,6 +291,14 @@ let rt = @var(DocsTest.returntype)
284291
@test md.order == [Tuple{Float64}, Tuple{Int}]
285292
end
286293

294+
let fns = @var(DocsTest.fnospecialize)
295+
md = meta(DocsTest)[fns]
296+
d = md.docs[Tuple{Number}]
297+
@test docstrings_equal(d, doc"`fnospecialize` for Numbers")
298+
d = md.docs[Tuple{AbstractArray}]
299+
@test docstrings_equal(d, doc"`fnospecialize` for arrays")
300+
end
301+
287302
@test docstrings_equal(@doc(DocsTest.TA), doc"TA")
288303

289304
@test docstrings_equal(@doc(DocsTest.@mac), doc"@mac()")

0 commit comments

Comments
 (0)