about summary refs log tree commit diff
path: root/tests/ui/parser
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2023-01-30 18:39:33 +0000
committerMichael Goulet <michael@errs.io>2023-02-02 05:54:35 +0000
commit39db65c526ae3b97f0ee90642242c8c07865707e (patch)
treeadf022f4fa13610fd60e80f79c4d143e5c076e8a /tests/ui/parser
parente4b2936983046f4128fcd3a390b401ae0cbaaacc (diff)
downloadrust-39db65c526ae3b97f0ee90642242c8c07865707e.tar.gz
rust-39db65c526ae3b97f0ee90642242c8c07865707e.zip
Add a test
Diffstat (limited to 'tests/ui/parser')
-rw-r--r--tests/ui/parser/anon-enums-are-ambiguous.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/ui/parser/anon-enums-are-ambiguous.rs b/tests/ui/parser/anon-enums-are-ambiguous.rs
new file mode 100644
index 00000000000..b0173cf98e0
--- /dev/null
+++ b/tests/ui/parser/anon-enums-are-ambiguous.rs
@@ -0,0 +1,26 @@
+// check-pass
+
+macro_rules! test_expr {
+    ($expr:expr) => {};
+}
+
+macro_rules! test_ty {
+    ($a:ty | $b:ty) => {};
+}
+
+fn main() {
+    test_expr!(a as fn() -> B | C);
+    // Do not break the `|` operator.
+
+    test_expr!(|_: fn() -> B| C | D);
+    // Do not break `-> Ret` in closure args.
+
+    test_ty!(A | B);
+    // We can't support anon enums in arbitrary positions.
+
+    test_ty!(fn() -> A | B);
+    // Don't break fn ptrs.
+
+    test_ty!(impl Fn() -> A | B);
+    // Don't break parenthesized generics.
+}