@@ -205,6 +205,32 @@ def _pseudo_parse_arglist(signode, arglist):
205
205
else :
206
206
signode += paramlist
207
207
208
+ @staticmethod
209
+ def _handle_signature_suffix (signode , retann , anno , where_clause ):
210
+ """
211
+ handle the signature suffix items like return intent, return type,
212
+ where clause, annotation, etc.
213
+ """
214
+ if retann :
215
+ if ':' in retann :
216
+ retintent , _ , rettype = retann .partition (':' )
217
+ rettype = rettype .strip ()
218
+ else :
219
+ retintent , rettype = retann , None
220
+ retintent = retintent .strip ()
221
+ if retintent :
222
+ signode += addnodes .desc_sig_space (' ' , ' ' )
223
+ signode += addnodes .desc_annotation (' ' + retintent ,
224
+ ' ' + retintent )
225
+ if rettype :
226
+ signode += addnodes .desc_annotation (' : ' + rettype ,
227
+ ' : ' + rettype )
228
+ if anno :
229
+ signode += addnodes .desc_annotation (' ' + anno , ' ' + anno )
230
+ if where_clause :
231
+ signode += addnodes .desc_annotation (' ' + where_clause ,
232
+ ' ' + where_clause )
233
+
208
234
def _get_attr_like_prefix (self , sig ):
209
235
"""Return prefix text for attribute or data directive."""
210
236
sig_match = chpl_attr_sig_pattern .match (sig )
@@ -355,23 +381,12 @@ def handle_signature(self, sig, signode):
355
381
if self .needs_arglist () and arglist is not None :
356
382
# for callables, add an empty parameter list
357
383
signode += addnodes .desc_parameterlist ()
358
- if retann :
359
- signode += addnodes .desc_type (retann , retann )
360
- if anno :
361
- signode += addnodes .desc_annotation (' ' + anno , ' ' + anno )
362
- if where_clause :
363
- signode += addnodes .desc_annotation (' ' + where_clause ,
364
- ' ' + where_clause )
384
+ self ._handle_signature_suffix (signode , retann , anno , where_clause )
365
385
return fullname , name_prefix
366
386
367
387
self ._pseudo_parse_arglist (signode , arglist )
368
- if retann :
369
- signode += addnodes .desc_type (retann , retann )
370
- if anno :
371
- signode += addnodes .desc_annotation (' ' + anno , ' ' + anno )
372
- if where_clause :
373
- signode += addnodes .desc_annotation (' ' + where_clause ,
374
- ' ' + where_clause )
388
+ self ._handle_signature_suffix (signode , retann , anno , where_clause )
389
+
375
390
return fullname , name_prefix
376
391
377
392
def get_index_text (self , modname , name ):
0 commit comments