@@ -303,11 +303,11 @@ pub(crate) fn generate_reports(
303303 let excluded_syms: Vec < & ComparativeSymbol > =
304304 sorted_syms. iter ( ) . skip ( TOP_N_SYMBOLS ) . copied ( ) . collect ( ) ;
305305
306- // If there are no size changes at all
306+ // If there are any symbol size changes, render a detailed Markdown table
307307 if !detailed_syms. is_empty ( ) {
308- // Render a Markdown table comparing symbol sizes between baseline and current.
309- md ! ( "| Symbol | Crates | Baseline Size | Current Size | Change |\n " ) ;
310- md ! ( "|--------|--------|-------- -------|--------------|--------|\n " ) ;
308+ // Markdown table with explicit old/new/diff columns
309+ md ! ( "| Symbol | Baseline Size | Current Size | Change |\n " ) ;
310+ md ! ( "|--------|---------------|--------------|--------|\n " ) ;
311311
312312 for sym in detailed_syms. iter ( ) {
313313 let name = sym
@@ -316,45 +316,42 @@ pub(crate) fn generate_reports(
316316 . or_else ( || sym. old . map ( |s| s. name . as_str ( ) ) )
317317 . unwrap_or ( "<unknown>" ) ;
318318
319- // Get crates from the current symbol, or fall back to baseline
320- let crates = sym
319+ // Determine crates
320+ let crates_opt = sym
321321 . new
322322 . map ( |s| & s. crates )
323323 . or_else ( || sym. old . map ( |s| & s. crates ) ) ;
324324
325- let crates_str = if let Some ( crates_set ) = crates {
326- if crates_set . is_empty ( ) {
327- "β" . to_string ( )
325+ let crates_cell = if let Some ( set ) = crates_opt {
326+ if set . is_empty ( ) {
327+ String :: new ( )
328328 } else {
329- crates_set
329+ let crates_fmt = set
330330 . iter ( )
331- . map ( |c| c. as_str ( ) )
331+ . map ( |c| format ! ( "**{}**" , c. as_str( ) ) )
332332 . collect :: < Vec < _ > > ( )
333- . join ( ", " )
333+ . join ( ", " ) ;
334+ format ! ( "<br> found in {}" , crates_fmt)
334335 }
335336 } else {
336- "β" . to_string ( )
337+ String :: new ( )
337338 } ;
338339
340+ // Sizes
339341 let baseline_size = sym. old . map ( |s| s. total_size . value ( ) ) ;
340342 let current_size = sym. new . map ( |s| s. total_size . value ( ) ) ;
341343
342344 let old_sz = baseline_size. unwrap_or ( 0 ) ;
343345 let new_sz = current_size. unwrap_or ( 0 ) ;
344346
345- // Format sizes
346- let baseline_fmt = if let Some ( sz) = baseline_size {
347- format_bytes ( sz)
348- } else {
349- "β" . to_string ( )
350- } ;
351- let current_fmt = if let Some ( sz) = current_size {
352- format_bytes ( sz)
353- } else {
354- "β" . to_string ( )
355- } ;
347+ let baseline_fmt = baseline_size
348+ . map ( format_bytes)
349+ . unwrap_or_else ( || "β" . to_string ( ) ) ;
350+ let current_fmt = current_size
351+ . map ( format_bytes)
352+ . unwrap_or_else ( || "β" . to_string ( ) ) ;
356353
357- // Change column
354+ // Diff string (re-use existing emoji style)
358355 let diff = new_sz as isize - old_sz as isize ;
359356 let change_str = if baseline_size. is_some ( ) && current_size. is_some ( ) {
360357 if diff > 0 {
@@ -372,10 +369,11 @@ pub(crate) fn generate_reports(
372369 "β" . to_owned ( )
373370 } ;
374371
372+ // Final row
375373 md ! (
376- "| `{}` | {} | {} | {} | {} |\n " ,
374+ "| `{}`{} | {} | {} | {} |\n " ,
377375 name,
378- crates_str ,
376+ crates_cell ,
379377 baseline_fmt,
380378 current_fmt,
381379 change_str
@@ -487,8 +485,9 @@ pub(crate) fn generate_reports(
487485 let excluded_fns: Vec < & ComparativeFn > = comparative_fns. iter ( ) . skip ( 20 ) . collect ( ) ;
488486
489487 if !detailed_fns. is_empty ( ) {
490- md ! ( "| Function | Crates | Baseline Lines | Current Lines | Change |\n " ) ;
491- md ! ( "|----------|--------|---------------|---------------|--------|\n " ) ;
488+ // Markdown table with explicit old/new/diff columns
489+ md ! ( "| Function | Baseline Lines | Current Lines | Change |\n " ) ;
490+ md ! ( "|----------|---------------|--------------|--------|\n " ) ;
492491
493492 for f in & detailed_fns {
494493 let name = f
@@ -498,22 +497,24 @@ pub(crate) fn generate_reports(
498497 . unwrap_or ( "<unknown>" ) ;
499498
500499 // Determine crates
501- let crates_set = f
500+ let crates_opt = f
502501 . new
503502 . map ( |v| & v. crates )
504503 . or_else ( || f. old . map ( |v| & v. crates ) ) ;
505504
506- let crates_str = if let Some ( set) = crates_set {
505+ let crates_cell = if let Some ( set) = crates_opt {
507506 if set. is_empty ( ) {
508- "β" . to_string ( )
507+ String :: new ( )
509508 } else {
510- set. iter ( )
511- . map ( |c| c. as_str ( ) )
509+ let crates_fmt = set
510+ . iter ( )
511+ . map ( |c| format ! ( "**{}**" , c. as_str( ) ) )
512512 . collect :: < Vec < _ > > ( )
513- . join ( ", " )
513+ . join ( ", " ) ;
514+ format ! ( "<br> found in {}" , crates_fmt)
514515 }
515516 } else {
516- "β" . to_string ( )
517+ String :: new ( )
517518 } ;
518519
519520 let baseline_lines = f. old . map ( |v| v. total_llvm_lines . value ( ) ) ;
@@ -534,20 +535,23 @@ pub(crate) fn generate_reports(
534535 if diff > 0 {
535536 format ! ( "π +{}" , fmt_thousands( diff) )
536537 } else if diff < 0 {
537- format ! ( "π {}" , fmt_thousands( diff) )
538+ format ! ( "π - {}" , fmt_thousands( ( - diff) as isize ) )
538539 } else {
539540 "β no change" . to_owned ( )
540541 }
541542 } else if baseline_lines. is_none ( ) && current_lines. is_some ( ) {
542543 "π NEW" . to_owned ( )
543- } else {
544+ } else if baseline_lines . is_some ( ) && current_lines . is_none ( ) {
544545 "ποΈ REMOVED" . to_owned ( )
546+ } else {
547+ "β" . to_owned ( )
545548 } ;
546549
550+ // Final row
547551 md ! (
548- "| `{}` | {} | {} | {} | {} |\n " ,
552+ "| `{}`{} | {} | {} | {} |\n " ,
549553 name,
550- crates_str ,
554+ crates_cell ,
551555 baseline_fmt,
552556 current_fmt,
553557 change_str
@@ -569,7 +573,7 @@ pub(crate) fn generate_reports(
569573 let change_str = if diff > 0 {
570574 format ! ( "π +{}" , fmt_thousands( diff) )
571575 } else if diff < 0 {
572- format ! ( "π {}" , fmt_thousands( diff) )
576+ format ! ( "π - {}" , fmt_thousands( ( - diff) as isize ) )
573577 } else {
574578 "β no change" . to_string ( )
575579 } ;
0 commit comments