about summary refs log tree commit diff
path: root/src/test/ui/recursion_limit
diff options
context:
space:
mode:
authorFisher Darling <fdarling@mines.edu>2019-12-12 21:18:21 -0700
committerFisher Darling <fdarlingco@gmail.com>2020-02-16 19:08:25 -0700
commitc53693d34d83e6221dc8b93a2c4e17e66fa6f0e2 (patch)
treedfdd15a42fa21e8ecd3cf1f8313a96688b12cd3b /src/test/ui/recursion_limit
parent116dff95a37214e86f067715374a18a4de1621f0 (diff)
downloadrust-c53693d34d83e6221dc8b93a2c4e17e66fa6f0e2.tar.gz
rust-c53693d34d83e6221dc8b93a2c4e17e66fa6f0e2.zip
Handle recursion_limit parsing errors
Diffstat (limited to 'src/test/ui/recursion_limit')
-rw-r--r--src/test/ui/recursion_limit/empty.rs6
-rw-r--r--src/test/ui/recursion_limit/empty.stderr10
-rw-r--r--src/test/ui/recursion_limit/invalid_digit.rs6
-rw-r--r--src/test/ui/recursion_limit/invalid_digit.stderr10
-rw-r--r--src/test/ui/recursion_limit/overflow.rs7
-rw-r--r--src/test/ui/recursion_limit/overflow.stderr10
-rw-r--r--src/test/ui/recursion_limit/zero.rs12
-rw-r--r--src/test/ui/recursion_limit/zero.stderr10
8 files changed, 71 insertions, 0 deletions
diff --git a/src/test/ui/recursion_limit/empty.rs b/src/test/ui/recursion_limit/empty.rs
new file mode 100644
index 00000000000..2a064f3e115
--- /dev/null
+++ b/src/test/ui/recursion_limit/empty.rs
@@ -0,0 +1,6 @@
+// Test the parse error for an empty recursion_limit
+
+#![recursion_limit = ""] //~ ERROR `recursion_limit` must be a non-negative integer
+                         //~| `recursion_limit` must be a non-negative integer
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/empty.stderr b/src/test/ui/recursion_limit/empty.stderr
new file mode 100644
index 00000000000..690c33a7463
--- /dev/null
+++ b/src/test/ui/recursion_limit/empty.stderr
@@ -0,0 +1,10 @@
+error: `recursion_limit` must be a non-negative integer
+  --> $DIR/empty.rs:3:1
+   |
+LL | #![recursion_limit = ""]
+   | ^^^^^^^^^^^^^^^^^^^^^--^
+   |                      |
+   |                      `recursion_limit` must be a non-negative integer
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/recursion_limit/invalid_digit.rs b/src/test/ui/recursion_limit/invalid_digit.rs
new file mode 100644
index 00000000000..903d8040476
--- /dev/null
+++ b/src/test/ui/recursion_limit/invalid_digit.rs
@@ -0,0 +1,6 @@
+// Test the parse error for an invalid digit in recursion_limit
+
+#![recursion_limit = "-100"] //~ ERROR `recursion_limit` must be a non-negative integer
+                             //~| not a valid integer
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/invalid_digit.stderr b/src/test/ui/recursion_limit/invalid_digit.stderr
new file mode 100644
index 00000000000..1dcfea547c0
--- /dev/null
+++ b/src/test/ui/recursion_limit/invalid_digit.stderr
@@ -0,0 +1,10 @@
+error: `recursion_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 previous error
+
diff --git a/src/test/ui/recursion_limit/overflow.rs b/src/test/ui/recursion_limit/overflow.rs
new file mode 100644
index 00000000000..6487b1350aa
--- /dev/null
+++ b/src/test/ui/recursion_limit/overflow.rs
@@ -0,0 +1,7 @@
+// Test the parse error for an overflowing recursion_limit
+
+#![recursion_limit = "999999999999999999999999"]
+//~^ ERROR `recursion_limit` must be a non-negative integer
+//~| `recursion_limit` is too large
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/overflow.stderr b/src/test/ui/recursion_limit/overflow.stderr
new file mode 100644
index 00000000000..c3fc11989dc
--- /dev/null
+++ b/src/test/ui/recursion_limit/overflow.stderr
@@ -0,0 +1,10 @@
+error: `recursion_limit` must be a non-negative integer
+  --> $DIR/overflow.rs:3:1
+   |
+LL | #![recursion_limit = "999999999999999999999999"]
+   | ^^^^^^^^^^^^^^^^^^^^^--------------------------^
+   |                      |
+   |                      `recursion_limit` is too large
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/recursion_limit/zero.rs b/src/test/ui/recursion_limit/zero.rs
new file mode 100644
index 00000000000..f7199944e00
--- /dev/null
+++ b/src/test/ui/recursion_limit/zero.rs
@@ -0,0 +1,12 @@
+// Test that a `recursion_limit` of 0 is valid
+
+#![recursion_limit = "0"]
+
+macro_rules! test {
+    () => {};
+    ($tt:tt) => { test!(); };
+}
+
+test!(test); //~ ERROR 10:1: 10:13: recursion limit reached while expanding `test!`
+
+fn main() {}
diff --git a/src/test/ui/recursion_limit/zero.stderr b/src/test/ui/recursion_limit/zero.stderr
new file mode 100644
index 00000000000..6358805d89d
--- /dev/null
+++ b/src/test/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 adding a `#![recursion_limit="0"]` attribute to your crate (`zero`)
+
+error: aborting due to previous error
+