|  | //@ 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(); | 
|  | } |