@@ -801,3 +801,32 @@ fn test_vis() {
801801 assert_eq ! ( inherited_vis!( struct ) , "" ) ;
802802 assert_eq ! ( stringify!( ) , "" ) ;
803803}
804+
805+ macro_rules! p {
806+ ( [ $( $tt: tt) * ] , $s: literal) => {
807+ assert_eq!( stringify!( $( $tt) * ) , $s) ;
808+ } ;
809+ }
810+
811+ #[ test]
812+ fn test_punct ( ) {
813+ // For all these cases, we must preserve spaces between the tokens.
814+ // Otherwise, any old proc macro that parses pretty-printed code might glue
815+ // together tokens that shouldn't be glued.
816+ p ! ( [ = = < < <= <= == == != != >= >= > > ] , "= = < < <= <= == == != != >= >= > >" ) ;
817+ p ! ( [ && && & & || || | | ! ! ] , "&& && & & || || | |!!" ) ; // FIXME
818+ p ! ( [ ~ ~ @ @ # # ] , "~ ~ @ @ # #" ) ;
819+ p ! ( [ . . .. .. ... ... ..= ..=] , ".... .. ... ... ..= ..=" ) ; // FIXME
820+ p ! ( [ , , ; ; : : :: :: ] , ",, ; ; : : :: ::" ) ; // FIXME
821+ p ! ( [ -> -> <- <- => =>] , "-> -> <- <- => =>" ) ;
822+ p ! ( [ $ $ ? ? ' ' ] , "$$? ? ' '" ) ; // FIXME
823+ p ! ( [ + + += += - - -= -= * * *= *= / / /= /= ] , "+ + += += - - -= -= * * *= *= / / /= /=" ) ;
824+ p ! ( [ % % %= %= ^ ^ ^= ^= << << <<= <<= >> >> >>= >>= ] ,
825+ "% % %= %= ^ ^ ^= ^= << << <<= <<= >> >> >>= >>=" ) ;
826+
827+ // For these one we must insert spaces between adjacent tokens, again due
828+ // to proc macros.
829+ p ! ( [ +! ?= |> >>@ --> <-- $$ =====> ] , "+! ? = | > >> @ - -> <- - $$== == =>" ) ; // FIXME
830+ p ! ( [ , ; ; , * * @@ $+$ >< <> ?? +== ] , ", ; ;, * * @ @ $+ $> < < > ? ? += =" ) ; // FIXME
831+ p ! ( [ : #!@|$=& * , +; * ~? ] , ": #! @ | $= & *, + ; * ~ ?" ) ; // FIXME
832+ }
0 commit comments