@@ -1920,9 +1920,19 @@ fn item_constant(
19201920 let tcx = cx. tcx ( ) ;
19211921 render_attributes_in_code ( w, it, "" , cx) ?;
19221922
1923+ let val = fmt:: from_fn ( |f| {
1924+ let is_literal = c. is_literal ( tcx) ;
1925+ let expr = c. expr ( tcx) ;
1926+ if is_literal {
1927+ write ! ( f, " = {expr}" , expr = Escape ( & expr) )
1928+ } else {
1929+ f. write_str ( " = _" )
1930+ }
1931+ } ) ;
1932+
19231933 write ! (
19241934 w,
1925- "{vis}const {name}{generics}: {typ}{where_clause}" ,
1935+ "{vis}const {name}{generics}: {typ}{val}{ where_clause}; " ,
19261936 vis = visibility_print_with_space( it, cx) ,
19271937 name = it. name. unwrap( ) ,
19281938 generics = print_generics( generics, cx) ,
@@ -1931,34 +1941,6 @@ fn item_constant(
19311941 print_where_clause( generics, cx, 0 , Ending :: NoNewline ) . maybe_display( ) ,
19321942 ) ?;
19331943
1934- // FIXME: The code below now prints
1935- // ` = _; // 100i32`
1936- // if the expression is
1937- // `50 + 50`
1938- // which looks just wrong.
1939- // Should we print
1940- // ` = 100i32;`
1941- // instead?
1942-
1943- let value = c. value ( tcx) ;
1944- let is_literal = c. is_literal ( tcx) ;
1945- let expr = c. expr ( tcx) ;
1946- if value. is_some ( ) || is_literal {
1947- write ! ( w, " = {expr};" , expr = Escape ( & expr) ) ?;
1948- } else {
1949- w. write_str ( ";" ) ?;
1950- }
1951-
1952- if !is_literal && let Some ( value) = & value {
1953- let value_lowercase = value. to_lowercase ( ) ;
1954- let expr_lowercase = expr. to_lowercase ( ) ;
1955-
1956- if value_lowercase != expr_lowercase
1957- && value_lowercase. trim_end_matches ( "i32" ) != expr_lowercase
1958- {
1959- write ! ( w, " // {value}" , value = Escape ( value) ) ?;
1960- }
1961- }
19621944 Ok :: < ( ) , fmt:: Error > ( ( ) )
19631945 } ) ?;
19641946
0 commit comments