mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 13:04:42 +00:00 
			
		
		
		
	 c0597fbd80
			
		
	
	
		c0597fbd80
		
	
	
	
	
		
			
			Reverting file name weird-exprs.rs due to its historical use, recognition in community and references
		
			
				
	
	
		
			304 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			304 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ run-pass
 | ||
| 
 | ||
| #![feature(coroutines)]
 | ||
| 
 | ||
| #![allow(non_camel_case_types)]
 | ||
| #![allow(dead_code)]
 | ||
| #![allow(redundant_semicolons)]
 | ||
| #![allow(unreachable_code)]
 | ||
| #![allow(unused_braces, unused_must_use, unused_parens)]
 | ||
| #![allow(uncommon_codepoints, confusable_idents)]
 | ||
| #![allow(unused_imports)]
 | ||
| #![allow(unreachable_patterns)]
 | ||
| 
 | ||
| #![recursion_limit = "256"]
 | ||
| 
 | ||
| extern crate core;
 | ||
| use std::cell::Cell;
 | ||
| use std::mem::swap;
 | ||
| use std::ops::Deref;
 | ||
| 
 | ||
| // Just a grab bag of stuff that you wouldn't want to actually write.
 | ||
| 
 | ||
| fn strange() -> bool { let _x: bool = return true; }
 | ||
| 
 | ||
| fn funny() {
 | ||
|     fn f(_x: ()) { }
 | ||
|     f(return);
 | ||
| }
 | ||
| 
 | ||
| fn what() {
 | ||
|     fn the(x: &Cell<bool>) {
 | ||
|         return while !x.get() { x.set(true); };
 | ||
|     }
 | ||
|     let i = &Cell::new(false);
 | ||
|     let dont = {||the(i)};
 | ||
|     dont();
 | ||
|     assert!(i.get());
 | ||
| }
 | ||
| 
 | ||
| fn zombiejesus() {
 | ||
|     loop {
 | ||
|         while (return) {
 | ||
|             if (return) {
 | ||
|                 match (return) {
 | ||
|                     1 => {
 | ||
|                         if (return) {
 | ||
|                             return
 | ||
|                         } else {
 | ||
|                             return
 | ||
|                         }
 | ||
|                     }
 | ||
|                     _ => { return }
 | ||
|                 };
 | ||
|             } else if (return) {
 | ||
|                 return;
 | ||
|             }
 | ||
|         }
 | ||
|         if (return) { break; }
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| fn notsure() {
 | ||
|     let mut _x: isize;
 | ||
|     let mut _y = (_x = 0) == (_x = 0);
 | ||
|     let mut _z = (_x = 0) < (_x = 0);
 | ||
|     let _a = (_x += 0) == (_x = 0);
 | ||
|     let _b = swap(&mut _y, &mut _z) == swap(&mut _y, &mut _z);
 | ||
| }
 | ||
| 
 | ||
| fn canttouchthis() -> usize {
 | ||
|     fn p() -> bool { true }
 | ||
|     let _a = (assert!(true) == (assert!(p())));
 | ||
|     let _c = (assert!(p()) == ());
 | ||
|     let _b: bool = (println!("{}", 0) == (return 0));
 | ||
| }
 | ||
| 
 | ||
| fn angrydome() {
 | ||
|     loop { if break { } }
 | ||
|     let mut i = 0;
 | ||
|     loop { i += 1; if i == 1 { match (continue) { 1 => { }, _ => panic!("wat") } }
 | ||
|       break; }
 | ||
| }
 | ||
| 
 | ||
| fn evil_lincoln() { let _evil: () = println!("lincoln"); }
 | ||
| 
 | ||
| fn dots() {
 | ||
|     assert_eq!(String::from(".................................................."),
 | ||
|                format!("{:?}", .. .. .. .. .. .. .. .. .. .. .. .. ..
 | ||
|                                .. .. .. .. .. .. .. .. .. .. .. ..));
 | ||
| }
 | ||
| 
 | ||
| fn u8(u8: u8) {
 | ||
|     if u8 != 0u8 {
 | ||
|         assert_eq!(8u8, {
 | ||
|             macro_rules! u8 {
 | ||
|                 (u8) => {
 | ||
|                     mod u8 {
 | ||
|                         pub fn u8<'u8: 'u8 + 'u8>(u8: &'u8 u8) -> &'u8 u8 {
 | ||
|                             "u8";
 | ||
|                             u8
 | ||
|                         }
 | ||
|                     }
 | ||
|                 };
 | ||
|             }
 | ||
| 
 | ||
|             u8!(u8);
 | ||
|             let &u8: &u8 = u8::u8(&8u8);
 | ||
|             crate::u8(0u8);
 | ||
|             u8
 | ||
|         });
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| fn fishy() {
 | ||
|     assert_eq!(String::from("><>"),
 | ||
|                String::<>::from::<>("><>").chars::<>().rev::<>().collect::<String>());
 | ||
| }
 | ||
| 
 | ||
| fn union() {
 | ||
|     union union<'union> { union: &'union union<'union>, }
 | ||
| }
 | ||
| 
 | ||
| fn special_characters() {
 | ||
|     let val = !((|(..):(_,_),(|__@_|__)|__)((&*"\\",'🤔')/**/,{})=={&[..=..][..];})//
 | ||
|     ;
 | ||
|     assert!(!val);
 | ||
| }
 | ||
| 
 | ||
| fn punch_card() -> impl std::fmt::Debug {
 | ||
|     ..=..=.. ..    .. .. .. ..    .. .. .. ..    .. .. .. ..
 | ||
|     ..=.. ..=..    .. .. .. ..    .. .. .. ..    .. ..=.. ..
 | ||
|     ..=.. ..=..    ..=.. ..=..    .. ..=..=..    ..=..=..=..
 | ||
|     ..=..=.. ..    ..=.. ..=..    ..=.. .. ..    .. ..=.. ..
 | ||
|     ..=.. ..=..    ..=.. ..=..    .. ..=.. ..    .. ..=.. ..
 | ||
|     ..=.. ..=..    ..=.. ..=..    .. .. ..=..    .. ..=.. ..
 | ||
|     ..=.. ..=..    .. ..=..=..    ..=..=.. ..    .. ..=..=..
 | ||
| }
 | ||
| 
 | ||
| fn r#match() {
 | ||
|     let val: () = match match match match match () {
 | ||
|         () => ()
 | ||
|     } {
 | ||
|         () => ()
 | ||
|     } {
 | ||
|         () => ()
 | ||
|     } {
 | ||
|         () => ()
 | ||
|     } {
 | ||
|         () => ()
 | ||
|     };
 | ||
|     assert_eq!(val, ());
 | ||
| }
 | ||
| 
 | ||
| fn i_yield() {
 | ||
|     #[coroutine]
 | ||
|     static || {
 | ||
|         yield yield yield yield yield yield yield yield yield;
 | ||
|     };
 | ||
| }
 | ||
| 
 | ||
| fn match_nested_if() {
 | ||
|     let val = match () {
 | ||
|         () if if if if true {true} else {false} {true} else {false} {true} else {false} => true,
 | ||
|         _ => false,
 | ||
|     };
 | ||
|     assert!(val);
 | ||
| }
 | ||
| 
 | ||
| fn monkey_barrel() {
 | ||
|     let val: () = ()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=()=();
 | ||
|     assert_eq!(val, ());
 | ||
| }
 | ||
| 
 | ||
| fn 𝚌𝚘𝚗𝚝𝚒𝚗𝚞𝚎() {
 | ||
|     type 𝚕𝚘𝚘𝚙 = i32;
 | ||
|     fn 𝚋𝚛𝚎𝚊𝚔() -> 𝚕𝚘𝚘𝚙 {
 | ||
|         let 𝚛𝚎𝚝𝚞𝚛𝚗 = 42;
 | ||
|         return 𝚛𝚎𝚝𝚞𝚛𝚗;
 | ||
|     }
 | ||
|     assert_eq!(loop {
 | ||
|         break 𝚋𝚛𝚎𝚊𝚔 ();
 | ||
|     }, 42);
 | ||
| }
 | ||
| 
 | ||
| fn function() {
 | ||
|     struct foo;
 | ||
|     impl Deref for foo {
 | ||
|         type Target = fn() -> Self;
 | ||
|         fn deref(&self) -> &Self::Target {
 | ||
|             &((|| foo) as _)
 | ||
|         }
 | ||
|     }
 | ||
|     let foo = foo () ()() ()()() ()()()() ()()()()();
 | ||
| }
 | ||
| 
 | ||
| fn bathroom_stall() {
 | ||
|     let mut i = 1;
 | ||
|     matches!(2, _|_|_|_|_|_ if (i+=1) != (i+=1));
 | ||
|     assert_eq!(i, 13);
 | ||
| }
 | ||
| 
 | ||
| fn closure_matching() {
 | ||
|     let x = |_| Some(1);
 | ||
|     let (|x| x) = match x(..) {
 | ||
|         |_| Some(2) => |_| Some(3),
 | ||
|         |_| _ => unreachable!(),
 | ||
|     };
 | ||
|     assert!(matches!(x(..), |_| Some(4)));
 | ||
| }
 | ||
| 
 | ||
| fn semisemisemisemisemi() {
 | ||
|     ;;;;;;; ;;;;;;; ;;;    ;;; ;;
 | ||
|     ;;      ;;      ;;;;  ;;;; ;;
 | ||
|     ;;;;;;; ;;;;;   ;; ;;;; ;; ;;
 | ||
|          ;; ;;      ;;  ;;  ;; ;;
 | ||
|     ;;;;;;; ;;;;;;; ;;      ;; ;;
 | ||
| }
 | ||
| 
 | ||
| fn useful_syntax() {
 | ||
|     use {{std::{{collections::{{HashMap}}}}}};
 | ||
|     use ::{{{{core}, {std}}}};
 | ||
|     use {{::{{core as core2}}}};
 | ||
| }
 | ||
| 
 | ||
| fn infcx() {
 | ||
|     pub mod cx {
 | ||
|         pub mod cx {
 | ||
|             pub use super::cx;
 | ||
|             pub struct Cx;
 | ||
|         }
 | ||
|     }
 | ||
|     let _cx: cx::cx::Cx = cx::cx::cx::cx::cx::Cx;
 | ||
| }
 | ||
| 
 | ||
| fn return_already() -> impl std::fmt::Debug {
 | ||
|     loop {
 | ||
|         return !!!!!!!
 | ||
|         break !!!!!!1111
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| fn fake_macros() -> impl std::fmt::Debug {
 | ||
|     loop {
 | ||
|         if! {
 | ||
|             match! (
 | ||
|                 break! {
 | ||
|                     return! {
 | ||
|                         1337
 | ||
|                     }
 | ||
|                 }
 | ||
|             )
 | ||
| 
 | ||
|             {}
 | ||
|         }
 | ||
| 
 | ||
|         {}
 | ||
|     }
 | ||
| }
 | ||
| 
 | ||
| fn fish_fight() {
 | ||
|     trait Rope {
 | ||
|         fn _____________<U>(_: Self, _: U) where Self: Sized {}
 | ||
|     }
 | ||
| 
 | ||
|     struct T;
 | ||
| 
 | ||
|     impl Rope for T {}
 | ||
| 
 | ||
|     fn tug_o_war(_: impl Fn(T, T)) {}
 | ||
| 
 | ||
|     tug_o_war(<T>::_____________::<T>);
 | ||
| }
 | ||
| 
 | ||
| pub fn main() {
 | ||
|     strange();
 | ||
|     funny();
 | ||
|     what();
 | ||
|     zombiejesus();
 | ||
|     notsure();
 | ||
|     canttouchthis();
 | ||
|     angrydome();
 | ||
|     evil_lincoln();
 | ||
|     dots();
 | ||
|     u8(8u8);
 | ||
|     fishy();
 | ||
|     union();
 | ||
|     special_characters();
 | ||
|     punch_card();
 | ||
|     r#match();
 | ||
|     i_yield();
 | ||
|     match_nested_if();
 | ||
|     monkey_barrel();
 | ||
|     𝚌𝚘𝚗𝚝𝚒𝚗𝚞𝚎();
 | ||
|     function();
 | ||
|     bathroom_stall();
 | ||
|     closure_matching();
 | ||
|     semisemisemisemisemi();
 | ||
|     useful_syntax();
 | ||
|     infcx();
 | ||
|     return_already();
 | ||
|     fake_macros();
 | ||
|     fish_fight();
 | ||
| }
 |