From 51730fb171c7d92216451ca777a3981105bad374 Mon Sep 17 00:00:00 2001 From: Jaro Fietz Date: Tue, 29 Jun 2021 15:13:43 +0200 Subject: [PATCH 1/4] Make the most special expression even more special Add or-pattern syntax in argument position --- src/test/ui/weird-exprs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/ui/weird-exprs.rs b/src/test/ui/weird-exprs.rs index 42acd30a0ff6a..d7420a00af42c 100644 --- a/src/test/ui/weird-exprs.rs +++ b/src/test/ui/weird-exprs.rs @@ -115,7 +115,7 @@ fn union() { } fn special_characters() { - let val = !((|(..):(_,_),__@_|__)((&*"\\",'🤔')/**/,{})=={&[..=..][..];})// + let val = !((|(..):(_,_),(|__@_|__)|__)((&*"\\",'#')/**/,{})=={&[..=..][..];})// ; assert!(!val); } From df0b0d4ae381a863d84c1f1debc83c6adab65763 Mon Sep 17 00:00:00 2001 From: Jaro Fietz Date: Tue, 29 Jun 2021 20:22:44 +0200 Subject: [PATCH 2/4] Add unicode identifier to weird-exprs Use unicode identifiers and a unicode emoji in weird-exprs.rs --- src/test/ui/weird-exprs.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/ui/weird-exprs.rs b/src/test/ui/weird-exprs.rs index d7420a00af42c..fb8b32e280309 100644 --- a/src/test/ui/weird-exprs.rs +++ b/src/test/ui/weird-exprs.rs @@ -6,6 +6,7 @@ #![allow(dead_code)] #![allow(unreachable_code)] #![allow(unused_braces, unused_must_use, unused_parens)] +#![allow(uncommon_codepoints, confusable_idents)] #![recursion_limit = "256"] @@ -164,6 +165,13 @@ fn monkey_barrel() { assert_eq!(val, ()); } +fn unicode() { + fn 𝚋𝚛𝚎𝚊𝚔() -> char { '🤔' } + assert_eq!(loop { + break 𝚋𝚛𝚎𝚊𝚔 (); + }, '🤔'); +} + fn bathroom_stall() { let mut i = 1; matches!(2, _|_|_|_|_|_ if (i+=1) != (i+=1)); @@ -189,5 +197,6 @@ pub fn main() { i_yield(); match_nested_if(); monkey_barrel(); + unicode(); bathroom_stall(); } From d85ba01ecb41873f47c2e6acb8cc397a6ae5f1bd Mon Sep 17 00:00:00 2001 From: Jaro Fietz Date: Tue, 29 Jun 2021 20:28:44 +0200 Subject: [PATCH 3/4] Add a function returning itself to weird-exprs --- src/test/ui/weird-exprs.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/test/ui/weird-exprs.rs b/src/test/ui/weird-exprs.rs index fb8b32e280309..c7ee9c7334a9e 100644 --- a/src/test/ui/weird-exprs.rs +++ b/src/test/ui/weird-exprs.rs @@ -1,6 +1,8 @@ // run-pass #![feature(generators)] +#![feature(destructuring_assignment)] +#![feature(unboxed_closures, fn_traits)] #![allow(non_camel_case_types)] #![allow(dead_code)] @@ -172,6 +174,17 @@ fn unicode() { }, '🤔'); } +fn function() { + struct foo; + impl FnOnce<()> for foo { + type Output = foo; + extern "rust-call" fn call_once(self, _args: ()) -> Self::Output { + foo + } + } + let foo = foo () ()() ()()() ()()()() ()()()()(); +} + fn bathroom_stall() { let mut i = 1; matches!(2, _|_|_|_|_|_ if (i+=1) != (i+=1)); @@ -198,5 +211,6 @@ pub fn main() { match_nested_if(); monkey_barrel(); unicode(); + function(); bathroom_stall(); } From 6491eb1e6c9fac20faad11e5da16db3185b2410d Mon Sep 17 00:00:00 2001 From: oberien Date: Sat, 21 May 2022 00:17:33 +0200 Subject: [PATCH 4/4] Add back thinking emoji --- src/test/ui/weird-exprs.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/test/ui/weird-exprs.rs b/src/test/ui/weird-exprs.rs index c7ee9c7334a9e..4066bcf3badd7 100644 --- a/src/test/ui/weird-exprs.rs +++ b/src/test/ui/weird-exprs.rs @@ -1,7 +1,6 @@ // run-pass #![feature(generators)] -#![feature(destructuring_assignment)] #![feature(unboxed_closures, fn_traits)] #![allow(non_camel_case_types)] @@ -118,7 +117,7 @@ fn union() { } fn special_characters() { - let val = !((|(..):(_,_),(|__@_|__)|__)((&*"\\",'#')/**/,{})=={&[..=..][..];})// + let val = !((|(..):(_,_),(|__@_|__)|__)((&*"\\",'🤔')/**/,{})=={&[..=..][..];})// ; assert!(!val); } @@ -167,11 +166,15 @@ fn monkey_barrel() { assert_eq!(val, ()); } -fn unicode() { - fn 𝚋𝚛𝚎𝚊𝚔() -> char { '🤔' } +fn 𝚌𝚘𝚗𝚝𝚒𝚗𝚞𝚎() { + type 𝚕𝚘𝚘𝚙 = i32; + fn 𝚋𝚛𝚎𝚊𝚔() -> 𝚕𝚘𝚘𝚙 { + let 𝚛𝚎𝚝𝚞𝚛𝚗 = 42; + return 𝚛𝚎𝚝𝚞𝚛𝚗; + } assert_eq!(loop { break 𝚋𝚛𝚎𝚊𝚔 (); - }, '🤔'); + }, 42); } fn function() { @@ -210,7 +213,7 @@ pub fn main() { i_yield(); match_nested_if(); monkey_barrel(); - unicode(); + 𝚌𝚘𝚗𝚝𝚒𝚗𝚞𝚎(); function(); bathroom_stall(); }