summary refs log tree commit diff
path: root/tests/ui/recursion_limit
diff options
context:
space:
mode:
authorAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-05 09:13:28 +0100
committerAlbert Larsan <74931857+albertlarsan68@users.noreply.github.com>2023-01-11 09:32:08 +0000
commitcf2dff2b1e3fa55fa5415d524200070d0d7aacfe (patch)
tree40a88d9a46aaf3e8870676eb2538378b75a263eb /tests/ui/recursion_limit
parentca855e6e42787ecd062d81d53336fe6788ef51a9 (diff)
downloadrust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.tar.gz
rust-cf2dff2b1e3fa55fa5415d524200070d0d7aacfe.zip
Move /src/test to /tests
Diffstat (limited to 'tests/ui/recursion_limit')
-rw-r--r--tests/ui/recursion_limit/empty.rs8
-rw-r--r--tests/ui/recursion_limit/empty.stderr18
-rw-r--r--tests/ui/recursion_limit/invalid_digit.rs7
-rw-r--r--tests/ui/recursion_limit/invalid_digit.stderr18
-rw-r--r--tests/ui/recursion_limit/invalid_digit_type.rs3
-rw-r--r--tests/ui/recursion_limit/invalid_digit_type.stderr8
-rw-r--r--tests/ui/recursion_limit/invalid_macro.rs7
-rw-r--r--tests/ui/recursion_limit/invalid_macro.stderr8
-rw-r--r--tests/ui/recursion_limit/no-value.rs6
-rw-r--r--tests/ui/recursion_limit/no-value.stderr8
-rw-r--r--tests/ui/recursion_limit/overflow.rs9
-rw-r--r--tests/ui/recursion_limit/overflow.stderr18
-rw-r--r--tests/ui/recursion_limit/zero-overflow.rs7
-rw-r--r--tests/ui/recursion_limit/zero-overflow.stderr7
-rw-r--r--tests/ui/recursion_limit/zero.rs12
-rw-r--r--tests/ui/recursion_limit/zero.stderr10
16 files changed, 154 insertions, 0 deletions
diff --git a/tests/ui/recursion_limit/empty.rs b/tests/ui/recursion_limit/empty.rs
new file mode 100644
index 00000000000..59dae106c00
--- /dev/null
+++ b/tests/ui/recursion_limit/empty.rs
@@ -0,0 +1,8 @@
+// Test the parse error for an empty recursion_limit
+
+#![recursion_limit = ""] //~ ERROR `limit` must be a non-negative integer
+                         //~| `limit` must be a non-negative integer
+                         //~| ERROR `limit` must be a non-negative integer
+                         //~| `limit` must be a non-negative integer
+
+fn main() {}
diff --git a/tests/ui/recursion_limit/empty.stderr b/tests/ui/recursion_limit/empty.stderr
new file mode 100644
index 00000000000..cb5c0c35a5e
--- /dev/null
+++ b/tests/ui/recursion_limit/empty.stderr
@@ -0,0 +1,18 @@
+error: `limit` must be a non-negative integer
+  --> $DIR/empty.rs:3:1
+   |
+LL | #![recursion_limit = ""]
+   | ^^^^^^^^^^^^^^^^^^^^^--^
+   |                      |
+   |                      `limit` must be a non-negative integer
+
+error: `limit` must be a non-negative integer
+  --> $DIR/empty.rs:3:1
+   |
+LL | #![recursion_limit = ""]
+   | ^^^^^^^^^^^^^^^^^^^^^--^
+   |                      |
+   |                      `limit` must be a non-negative integer
+
+error: aborting due to 2 previous errors
+
diff --git a/tests/ui/recursion_limit/invalid_digit.rs b/tests/ui/recursion_limit/invalid_digit.rs
new file mode 100644
index 00000000000..03df3e7a927
--- /dev/null
+++ b/tests/ui/recursion_limit/invalid_digit.rs
@@ -0,0 +1,7 @@
+// Test the parse error for an invalid digit in recursion_limit
+
+#![recursion_limit = "-100"] //~ ERROR `limit` must be a non-negative integer
+                             //~| not a valid integer
+                             //~| ERROR `limit` must be a non-negative integer
+                             //~| not a valid integer
+fn main() {}
diff --git a/tests/ui/recursion_limit/invalid_digit.stderr b/tests/ui/recursion_limit/invalid_digit.stderr
new file mode 100644
index 00000000000..4dc93ad5f67
--- /dev/null
+++ b/tests/ui/recursion_limit/invalid_digit.stderr
@@ -0,0 +1,18 @@
+error: `limit` must be a non-negative integer
+  --> $DIR/invalid_digit.rs:3:1
+   |
+LL | #![recursion_limit = "-100"]
+   | ^^^^^^^^^^^^^^^^^^^^^------^
+   |                      |
+   |                      not a valid integer
+
+error: `limit` must be a non-negative integer
+  --> $DIR/invalid_digit.rs:3:1
+   |
+LL | #![recursion_limit = "-100"]
+   | ^^^^^^^^^^^^^^^^^^^^^------^
+   |                      |
+   |                      not a valid integer
+
+error: aborting due to 2 previous errors
+
diff --git a/tests/ui/recursion_limit/invalid_digit_type.rs b/tests/ui/recursion_limit/invalid_digit_type.rs
new file mode 100644
index 00000000000..e408109b368
--- /dev/null
+++ b/tests/ui/recursion_limit/invalid_digit_type.rs
@@ -0,0 +1,3 @@
+#![recursion_limit = 123] //~ ERROR malformed `recursion_limit` attribute
+
+fn main() {}
diff --git a/tests/ui/recursion_limit/invalid_digit_type.stderr b/tests/ui/recursion_limit/invalid_digit_type.stderr
new file mode 100644
index 00000000000..6d1409bb390
--- /dev/null
+++ b/tests/ui/recursion_limit/invalid_digit_type.stderr
@@ -0,0 +1,8 @@
+error: malformed `recursion_limit` attribute input
+  --> $DIR/invalid_digit_type.rs:1:1
+   |
+LL | #![recursion_limit = 123]
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#![recursion_limit = "N"]`
+
+error: aborting due to previous error
+
diff --git a/tests/ui/recursion_limit/invalid_macro.rs b/tests/ui/recursion_limit/invalid_macro.rs
new file mode 100644
index 00000000000..7db67a8d162
--- /dev/null
+++ b/tests/ui/recursion_limit/invalid_macro.rs
@@ -0,0 +1,7 @@
+#![recursion_limit = foo!()] //~ ERROR malformed `recursion_limit` attribute
+
+macro_rules! foo {
+    () => {"128"};
+}
+
+fn main() {}
diff --git a/tests/ui/recursion_limit/invalid_macro.stderr b/tests/ui/recursion_limit/invalid_macro.stderr
new file mode 100644
index 00000000000..0189e99da37
--- /dev/null
+++ b/tests/ui/recursion_limit/invalid_macro.stderr
@@ -0,0 +1,8 @@
+error: malformed `recursion_limit` attribute input
+  --> $DIR/invalid_macro.rs:1:1
+   |
+LL | #![recursion_limit = foo!()]
+   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#![recursion_limit = "N"]`
+
+error: aborting due to previous error
+
diff --git a/tests/ui/recursion_limit/no-value.rs b/tests/ui/recursion_limit/no-value.rs
new file mode 100644
index 00000000000..2202e5b7713
--- /dev/null
+++ b/tests/ui/recursion_limit/no-value.rs
@@ -0,0 +1,6 @@
+// Test the parse error for no value provided to recursion_limit
+
+#![recursion_limit]
+//~^ ERROR malformed `recursion_limit` attribute input
+
+fn main() {}
diff --git a/tests/ui/recursion_limit/no-value.stderr b/tests/ui/recursion_limit/no-value.stderr
new file mode 100644
index 00000000000..35ac2c4cd17
--- /dev/null
+++ b/tests/ui/recursion_limit/no-value.stderr
@@ -0,0 +1,8 @@
+error: malformed `recursion_limit` attribute input
+  --> $DIR/no-value.rs:3:1
+   |
+LL | #![recursion_limit]
+   | ^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#![recursion_limit = "N"]`
+
+error: aborting due to previous error
+
diff --git a/tests/ui/recursion_limit/overflow.rs b/tests/ui/recursion_limit/overflow.rs
new file mode 100644
index 00000000000..c733ba6b93c
--- /dev/null
+++ b/tests/ui/recursion_limit/overflow.rs
@@ -0,0 +1,9 @@
+// Test the parse error for an overflowing recursion_limit
+
+#![recursion_limit = "999999999999999999999999"]
+//~^ ERROR `limit` must be a non-negative integer
+//~| `limit` is too large
+//~| ERROR `limit` must be a non-negative integer
+//~| `limit` is too large
+
+fn main() {}
diff --git a/tests/ui/recursion_limit/overflow.stderr b/tests/ui/recursion_limit/overflow.stderr
new file mode 100644
index 00000000000..2f622d28b45
--- /dev/null
+++ b/tests/ui/recursion_limit/overflow.stderr
@@ -0,0 +1,18 @@
+error: `limit` must be a non-negative integer
+  --> $DIR/overflow.rs:3:1
+   |
+LL | #![recursion_limit = "999999999999999999999999"]
+   | ^^^^^^^^^^^^^^^^^^^^^--------------------------^
+   |                      |
+   |                      `limit` is too large
+
+error: `limit` must be a non-negative integer
+  --> $DIR/overflow.rs:3:1
+   |
+LL | #![recursion_limit = "999999999999999999999999"]
+   | ^^^^^^^^^^^^^^^^^^^^^--------------------------^
+   |                      |
+   |                      `limit` is too large
+
+error: aborting due to 2 previous errors
+
diff --git a/tests/ui/recursion_limit/zero-overflow.rs b/tests/ui/recursion_limit/zero-overflow.rs
new file mode 100644
index 00000000000..77bd8185676
--- /dev/null
+++ b/tests/ui/recursion_limit/zero-overflow.rs
@@ -0,0 +1,7 @@
+//~ ERROR overflow evaluating the requirement `&mut Self: DispatchFromDyn<&mut RustaceansAreAwesome>
+//~| HELP consider increasing the recursion limit
+// build-fail
+
+#![recursion_limit = "0"]
+
+fn main() {}
diff --git a/tests/ui/recursion_limit/zero-overflow.stderr b/tests/ui/recursion_limit/zero-overflow.stderr
new file mode 100644
index 00000000000..9007ec0d784
--- /dev/null
+++ b/tests/ui/recursion_limit/zero-overflow.stderr
@@ -0,0 +1,7 @@
+error[E0275]: overflow evaluating the requirement `&mut Self: DispatchFromDyn<&mut RustaceansAreAwesome>`
+   |
+   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "2"]` attribute to your crate (`zero_overflow`)
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0275`.
diff --git a/tests/ui/recursion_limit/zero.rs b/tests/ui/recursion_limit/zero.rs
new file mode 100644
index 00000000000..3a2d904cb1c
--- /dev/null
+++ b/tests/ui/recursion_limit/zero.rs
@@ -0,0 +1,12 @@
+// Test that a `limit` of 0 is valid
+
+#![recursion_limit = "0"]
+
+macro_rules! test {
+    () => {};
+    ($tt:tt) => { test!(); };
+}
+
+test!(test); //~ ERROR recursion limit reached while expanding `test!`
+
+fn main() {}
diff --git a/tests/ui/recursion_limit/zero.stderr b/tests/ui/recursion_limit/zero.stderr
new file mode 100644
index 00000000000..b43565909a3
--- /dev/null
+++ b/tests/ui/recursion_limit/zero.stderr
@@ -0,0 +1,10 @@
+error: recursion limit reached while expanding `test!`
+  --> $DIR/zero.rs:10:1
+   |
+LL | test!(test);
+   | ^^^^^^^^^^^
+   |
+   = help: consider increasing the recursion limit by adding a `#![recursion_limit = "2"]` attribute to your crate (`zero`)
+
+error: aborting due to previous error
+