@@ -285,24 +285,55 @@ static void _rd_render_function_item(RDRenderer* r, const RDSegmentFull* seg,
285285 }
286286
287287 _rd_render_modifiers (r , seg , idx , RD_THEME_FUNCTION , RD_THEME_BACKGROUND );
288- const char * func_str = f ? rd_i_function_to_str (f , r -> context ) : NULL ;
289288
290- if (func_str ) {
291- rd_renderer_text (r , func_str , RD_THEME_FUNCTION , RD_THEME_BACKGROUND );
292- return ;
289+ if (f ) {
290+ const RDFunctionType * f_type = & f -> type_def -> func_ ;
291+
292+ if (f_type -> ret .has_value ) {
293+ rd_renderer_text (r ,
294+ rd_i_type_to_str (& f_type -> ret .value , & r -> type_buf ),
295+ RD_THEME_FUNCTION , RD_THEME_BACKGROUND );
296+ rd_renderer_ws (r , 1 );
297+ }
298+
299+ if (rd_function_is_noret (f )) {
300+ rd_renderer_text (r , "noreturn " , RD_THEME_FUNCTION ,
301+ RD_THEME_BACKGROUND );
302+ }
303+ }
304+
305+ if (!f || (f -> type_def -> flags & RD_TFLAGS_BUILTIN )) {
306+ rd_renderer_text (r , "function " , RD_THEME_FUNCTION ,
307+ RD_THEME_BACKGROUND );
293308 }
294309
295310 RDName n ;
296311 bool hasname = rd_i_get_name (r -> context , address , true, & n );
297312 assert (hasname );
298-
299- rd_renderer_text (r , "function " , RD_THEME_FUNCTION , RD_THEME_BACKGROUND );
300313 rd_renderer_text (r , n .value , RD_THEME_FUNCTION , RD_THEME_BACKGROUND );
301- rd_renderer_text (r , "()" , RD_THEME_FUNCTION , RD_THEME_BACKGROUND );
302314
303- if (f && rd_function_is_noret (f )) {
304- rd_renderer_text (r , " noreturn" , RD_THEME_FUNCTION ,
305- RD_THEME_BACKGROUND );
315+ if (f ) {
316+ const RDFunctionType * f_type = & f -> type_def -> func_ ;
317+
318+ if (f_type -> args .has_value ) {
319+ rd_renderer_text (r , "(" , RD_THEME_FUNCTION , RD_THEME_BACKGROUND );
320+
321+ const RDParam * arg ;
322+ vect_each (arg , & f_type -> args .value ) {
323+ assert (arg -> name );
324+ if (arg != vect_first (& f_type -> args .value ))
325+ rd_renderer_text (r , "," , RD_THEME_FUNCTION ,
326+ RD_THEME_BACKGROUND );
327+
328+ rd_renderer_text (r , rd_i_type_to_str (& arg -> type , & r -> type_buf ),
329+ RD_THEME_FUNCTION , RD_THEME_BACKGROUND );
330+ rd_renderer_ws (r , 1 );
331+ rd_renderer_text (r , arg -> name , RD_THEME_FUNCTION ,
332+ RD_THEME_BACKGROUND );
333+ }
334+
335+ rd_renderer_text (r , ")" , RD_THEME_FUNCTION , RD_THEME_BACKGROUND );
336+ }
306337 }
307338}
308339
0 commit comments