2
2
3
3
# Method and method table pretty-printing
4
4
5
+ const empty_sym = Symbol (" " )
6
+ function strip_gensym (sym)
7
+ if sym === Symbol (" #self#" ) || sym === Symbol (" #unused#" )
8
+ return empty_sym
9
+ end
10
+ return Symbol (replace (String (sym), r" ^(.*)#(.*#)?\d +$" => s "\1 " ))
11
+ end
12
+
5
13
function argtype_decl (env, n, @nospecialize (sig:: DataType ), i:: Int , nargs, isva:: Bool ) # -> (argname, argtype)
6
14
t = sig. parameters[i]
7
15
if i == nargs && isva && ! isvarargtype (t)
@@ -10,13 +18,13 @@ function argtype_decl(env, n, @nospecialize(sig::DataType), i::Int, nargs, isva:
10
18
if isa (n,Expr)
11
19
n = n. args[1 ] # handle n::T in arg list
12
20
end
13
- s = string (n):: String
14
- i = findfirst ( isequal ( ' # ' ), s)
15
- if i != = nothing
16
- s = s[ 1 : prevind (s, i) :: Int ]
17
- end
18
- if t === Any && ! isempty (s )
19
- return s, " "
21
+ n = strip_gensym (n)
22
+ local s
23
+ if n === empty_sym
24
+ s = " "
25
+ else
26
+ s = sprint (show_sym, n )
27
+ t === Any && return s, " "
20
28
end
21
29
if isvarargtype (t)
22
30
v1, v2 = nothing , nothing
@@ -73,8 +81,6 @@ function arg_decl_parts(m::Method, html=false)
73
81
return tv, decls, file, line
74
82
end
75
83
76
- const empty_sym = Symbol (" " )
77
-
78
84
# NOTE: second argument is deprecated and is no longer used
79
85
function kwarg_decl (m:: Method , kwtype = nothing )
80
86
mt = get_methodtable (m)
@@ -186,6 +192,15 @@ function functionloc(@nospecialize(f))
186
192
return functionloc (first (mt))
187
193
end
188
194
195
+ function sym_to_string (sym)
196
+ s = String (sym)
197
+ if endswith (s, " ..." )
198
+ return string (sprint (show_sym, Symbol (s[1 : end - 3 ])), " ..." )
199
+ else
200
+ return sprint (show_sym, sym)
201
+ end
202
+ end
203
+
189
204
function show (io:: IO , m:: Method )
190
205
tv, decls, file, line = arg_decl_parts (m)
191
206
sig = unwrap_unionall (m. sig)
@@ -195,12 +210,16 @@ function show(io::IO, m::Method)
195
210
return
196
211
end
197
212
print (io, decls[1 ][2 ], " (" )
198
- join (io, String[isempty (d[2 ]) ? d[1 ] : d[1 ]* " ::" * d[2 ] for d in decls[2 : end ]],
199
- " , " , " , " )
213
+ join (
214
+ io,
215
+ String[isempty (d[2 ]) ? d[1 ] : string (d[1 ], " ::" , d[2 ]) for d in decls[2 : end ]],
216
+ " , " ,
217
+ " , " ,
218
+ )
200
219
kwargs = kwarg_decl (m)
201
220
if ! isempty (kwargs)
202
221
print (io, " ; " )
203
- join (io, kwargs, " , " , " , " )
222
+ join (io, map (sym_to_string, kwargs) , " , " , " , " )
204
223
end
205
224
print (io, " )" )
206
225
show_method_params (io, tv)
@@ -341,12 +360,18 @@ function show(io::IO, ::MIME"text/html", m::Method)
341
360
return
342
361
end
343
362
print (io, decls[1 ][2 ], " (" )
344
- join (io, String[isempty (d[2 ]) ? d[1 ] : d[1 ]* " ::<b>" * d[2 ]* " </b>"
345
- for d in decls[2 : end ]], " , " , " , " )
363
+ join (
364
+ io,
365
+ String[
366
+ isempty (d[2 ]) ? d[1 ] : string (d[1 ], " ::<b>" , d[2 ], " </b>" ) for d in decls[2 : end ]
367
+ ],
368
+ " , " ,
369
+ " , " ,
370
+ )
346
371
kwargs = kwarg_decl (m)
347
372
if ! isempty (kwargs)
348
373
print (io, " ; <i>" )
349
- join (io, kwargs, " , " , " , " )
374
+ join (io, map (sym_to_string, kwargs) , " , " , " , " )
350
375
print (io, " </i>" )
351
376
end
352
377
print (io, " )" )
0 commit comments