about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-03-08 08:39:13 +0000
committerbors <bors@rust-lang.org>2019-03-08 08:39:13 +0000
commitb58a0061a347532c55cd5eb27fd6f47f20889ec6 (patch)
tree09b21029e3a3e07fcab1a73aa9a3bc0e4483c677 /src/test
parent0547ceb200f0385ba437e1808b468ec81e683c64 (diff)
parent551ea65c87ef567cb22856a769df2a75f2cbb235 (diff)
downloadrust-b58a0061a347532c55cd5eb27fd6f47f20889ec6.tar.gz
rust-b58a0061a347532c55cd5eb27fd6f47f20889ec6.zip
Auto merge of #58903 - estebank:forgetful-delims, r=petrochenkov
Always emit unclosed delimiter diagnostics

Fix #58886.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/issues/issue-58856-1.rs6
-rw-r--r--src/test/ui/issues/issue-58856-1.stderr11
-rw-r--r--src/test/ui/issues/issue-58856-2.rs14
-rw-r--r--src/test/ui/issues/issue-58856-2.stderr30
-rw-r--r--src/test/ui/parser/recover-enum2.rs3
-rw-r--r--src/test/ui/parser/recover-enum2.stderr14
-rw-r--r--src/test/ui/parser/unclosed-delimiter-in-dep.rs6
-rw-r--r--src/test/ui/parser/unclosed-delimiter-in-dep.stderr23
-rw-r--r--src/test/ui/parser/unclosed_delim_mod.rs6
-rw-r--r--src/test/ui/parser/unclosed_delim_mod.stderr18
-rw-r--r--src/test/ui/resolve/token-error-correct-3.rs16
-rw-r--r--src/test/ui/resolve/token-error-correct-3.stderr16
12 files changed, 130 insertions, 33 deletions
diff --git a/src/test/ui/issues/issue-58856-1.rs b/src/test/ui/issues/issue-58856-1.rs
new file mode 100644
index 00000000000..db3984cd189
--- /dev/null
+++ b/src/test/ui/issues/issue-58856-1.rs
@@ -0,0 +1,6 @@
+impl A {
+    fn b(self>
+    //~^ ERROR expected one of `)`, `,`, or `:`, found `>`
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-58856-1.stderr b/src/test/ui/issues/issue-58856-1.stderr
new file mode 100644
index 00000000000..20cdf55365f
--- /dev/null
+++ b/src/test/ui/issues/issue-58856-1.stderr
@@ -0,0 +1,11 @@
+error: expected one of `)`, `,`, or `:`, found `>`
+  --> $DIR/issue-58856-1.rs:2:14
+   |
+LL |     fn b(self>
+   |         -    ^
+   |         |    |
+   |         |    help: `)` may belong here
+   |         unclosed delimiter
+
+error: aborting due to previous error
+
diff --git a/src/test/ui/issues/issue-58856-2.rs b/src/test/ui/issues/issue-58856-2.rs
new file mode 100644
index 00000000000..acc38e4c201
--- /dev/null
+++ b/src/test/ui/issues/issue-58856-2.rs
@@ -0,0 +1,14 @@
+struct Empty;
+
+trait Howness {}
+
+impl Howness for () {
+    fn how_are_you(&self -> Empty {
+    //~^ ERROR expected one of `)` or `,`, found `->`
+    //~| ERROR method `how_are_you` is not a member of trait `Howness`
+        Empty
+    }
+}
+//~^ ERROR expected one of `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`,
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-58856-2.stderr b/src/test/ui/issues/issue-58856-2.stderr
new file mode 100644
index 00000000000..55a9e9d5cb8
--- /dev/null
+++ b/src/test/ui/issues/issue-58856-2.stderr
@@ -0,0 +1,30 @@
+error: expected one of `)` or `,`, found `->`
+  --> $DIR/issue-58856-2.rs:6:26
+   |
+LL |     fn how_are_you(&self -> Empty {
+   |                   -     -^^
+   |                   |     |
+   |                   |     help: `)` may belong here
+   |                   unclosed delimiter
+
+error: expected one of `async`, `const`, `crate`, `default`, `existential`, `extern`, `fn`, `pub`, `type`, `unsafe`, or `}`, found `)`
+  --> $DIR/issue-58856-2.rs:11:1
+   |
+LL |     }
+   |      - expected one of 11 possible tokens here
+LL | }
+   | ^ unexpected token
+
+error[E0407]: method `how_are_you` is not a member of trait `Howness`
+  --> $DIR/issue-58856-2.rs:6:5
+   |
+LL | /     fn how_are_you(&self -> Empty {
+LL | |     //~^ ERROR expected one of `)` or `,`, found `->`
+LL | |     //~| ERROR method `how_are_you` is not a member of trait `Howness`
+LL | |         Empty
+LL | |     }
+   | |_____^ not a member of trait `Howness`
+
+error: aborting due to 3 previous errors
+
+For more information about this error, try `rustc --explain E0407`.
diff --git a/src/test/ui/parser/recover-enum2.rs b/src/test/ui/parser/recover-enum2.rs
index 65a18773787..7f2f2cc7ab0 100644
--- a/src/test/ui/parser/recover-enum2.rs
+++ b/src/test/ui/parser/recover-enum2.rs
@@ -25,9 +25,6 @@ fn main() {
         // fail again
         enum Test4 {
             Nope(i32 {}) //~ ERROR: found `{`
-                         //~^ ERROR: found `{`
         }
     }
-    // still recover later
-    let bad_syntax = _; //~ ERROR: expected expression, found reserved identifier `_`
 }
diff --git a/src/test/ui/parser/recover-enum2.stderr b/src/test/ui/parser/recover-enum2.stderr
index b308e644ad9..315bfde77c7 100644
--- a/src/test/ui/parser/recover-enum2.stderr
+++ b/src/test/ui/parser/recover-enum2.stderr
@@ -10,17 +10,5 @@ error: expected one of `!`, `(`, `)`, `+`, `,`, `::`, or `<`, found `{`
 LL |             Nope(i32 {}) //~ ERROR: found `{`
    |                      ^ expected one of 7 possible tokens here
 
-error: expected one of `!`, `&&`, `&`, `(`, `)`, `*`, `+`, `,`, `...`, `::`, `<`, `?`, `[`, `_`, `crate`, `dyn`, `extern`, `fn`, `for`, `impl`, `pub`, `unsafe`, `}`, or lifetime, found `{`
-  --> $DIR/recover-enum2.rs:27:22
-   |
-LL |             Nope(i32 {}) //~ ERROR: found `{`
-   |                      ^ expected one of 24 possible tokens here
-
-error: expected expression, found reserved identifier `_`
-  --> $DIR/recover-enum2.rs:32:22
-   |
-LL |     let bad_syntax = _; //~ ERROR: expected expression, found reserved identifier `_`
-   |                      ^ expected expression
-
-error: aborting due to 4 previous errors
+error: aborting due to 2 previous errors
 
diff --git a/src/test/ui/parser/unclosed-delimiter-in-dep.rs b/src/test/ui/parser/unclosed-delimiter-in-dep.rs
new file mode 100644
index 00000000000..6db1b66e9f7
--- /dev/null
+++ b/src/test/ui/parser/unclosed-delimiter-in-dep.rs
@@ -0,0 +1,6 @@
+mod unclosed_delim_mod;
+
+fn main() {
+    let _: usize = unclosed_delim_mod::new();
+    //~^ ERROR mismatched types
+}
diff --git a/src/test/ui/parser/unclosed-delimiter-in-dep.stderr b/src/test/ui/parser/unclosed-delimiter-in-dep.stderr
new file mode 100644
index 00000000000..633c63bea91
--- /dev/null
+++ b/src/test/ui/parser/unclosed-delimiter-in-dep.stderr
@@ -0,0 +1,23 @@
+error: incorrect close delimiter: `}`
+  --> $DIR/unclosed_delim_mod.rs:5:1
+   |
+LL | pub fn new() -> Result<Value, ()> {
+   |                                   - close delimiter possibly meant for this
+LL |     Ok(Value {
+   |       - un-closed delimiter
+LL |     }
+LL | }
+   | ^ incorrect close delimiter
+
+error[E0308]: mismatched types
+  --> $DIR/unclosed-delimiter-in-dep.rs:4:20
+   |
+LL |     let _: usize = unclosed_delim_mod::new();
+   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^ expected usize, found enum `std::result::Result`
+   |
+   = note: expected type `usize`
+              found type `std::result::Result<unclosed_delim_mod::Value, ()>`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0308`.
diff --git a/src/test/ui/parser/unclosed_delim_mod.rs b/src/test/ui/parser/unclosed_delim_mod.rs
new file mode 100644
index 00000000000..b1664f49dc5
--- /dev/null
+++ b/src/test/ui/parser/unclosed_delim_mod.rs
@@ -0,0 +1,6 @@
+pub struct Value {}
+pub fn new() -> Result<Value, ()> {
+    Ok(Value {
+    }
+}
+//~^ ERROR incorrect close delimiter
diff --git a/src/test/ui/parser/unclosed_delim_mod.stderr b/src/test/ui/parser/unclosed_delim_mod.stderr
new file mode 100644
index 00000000000..cc04eb531cb
--- /dev/null
+++ b/src/test/ui/parser/unclosed_delim_mod.stderr
@@ -0,0 +1,18 @@
+error: incorrect close delimiter: `}`
+  --> $DIR/unclosed_delim_mod.rs:5:1
+   |
+LL | pub fn new() -> Result<Value, ()> {
+   |                                   - close delimiter possibly meant for this
+LL |     Ok(Value {
+   |       - un-closed delimiter
+LL |     }
+LL | }
+   | ^ incorrect close delimiter
+
+error[E0601]: `main` function not found in crate `unclosed_delim_mod`
+   |
+   = note: consider adding a `main` function to `$DIR/unclosed_delim_mod.rs`
+
+error: aborting due to 2 previous errors
+
+For more information about this error, try `rustc --explain E0601`.
diff --git a/src/test/ui/resolve/token-error-correct-3.rs b/src/test/ui/resolve/token-error-correct-3.rs
index b1ca0bbfc57..212b88ac8b0 100644
--- a/src/test/ui/resolve/token-error-correct-3.rs
+++ b/src/test/ui/resolve/token-error-correct-3.rs
@@ -10,16 +10,14 @@ pub mod raw {
     pub fn ensure_dir_exists<P: AsRef<Path>, F: FnOnce(&Path)>(path: P,
                                                                callback: F)
                                                                -> io::Result<bool> {
-        if !is_directory(path.as_ref()) { //~ ERROR: cannot find function `is_directory`
-            callback(path.as_ref(); //~ ERROR expected one of
-            fs::create_dir_all(path.as_ref()).map(|()| true) //~ ERROR: mismatched types
-            //~^ expected (), found enum `std::result::Result`
-            //~| expected type `()`
-            //~| found type `std::result::Result<bool, std::io::Error>`
-            //~| expected one of
+        if !is_directory(path.as_ref()) {
+            //~^ ERROR cannot find function `is_directory`
+            callback(path.as_ref();
+            //~^ ERROR expected one of
+            fs::create_dir_all(path.as_ref()).map(|()| true)
+            //~^ ERROR mismatched types
         } else {
-            //~^ ERROR: expected one of
-            //~| unexpected token
+            //~^ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found `)`
             Ok(false);
         }
 
diff --git a/src/test/ui/resolve/token-error-correct-3.stderr b/src/test/ui/resolve/token-error-correct-3.stderr
index a6bb83c71f3..035a5ede453 100644
--- a/src/test/ui/resolve/token-error-correct-3.stderr
+++ b/src/test/ui/resolve/token-error-correct-3.stderr
@@ -1,31 +1,31 @@
 error: expected one of `)`, `,`, `.`, `?`, or an operator, found `;`
-  --> $DIR/token-error-correct-3.rs:14:35
+  --> $DIR/token-error-correct-3.rs:15:35
    |
-LL |             callback(path.as_ref(); //~ ERROR expected one of
+LL |             callback(path.as_ref();
    |                     -             ^
    |                     |             |
    |                     |             help: `)` may belong here
    |                     unclosed delimiter
 
 error: expected one of `.`, `;`, `?`, `}`, or an operator, found `)`
-  --> $DIR/token-error-correct-3.rs:20:9
+  --> $DIR/token-error-correct-3.rs:19:9
    |
-LL |             fs::create_dir_all(path.as_ref()).map(|()| true) //~ ERROR: mismatched types
+LL |             fs::create_dir_all(path.as_ref()).map(|()| true)
    |                                                             - expected one of `.`, `;`, `?`, `}`, or an operator here
-...
+LL |             //~^ ERROR mismatched types
 LL |         } else {
    |         ^ unexpected token
 
 error[E0425]: cannot find function `is_directory` in this scope
   --> $DIR/token-error-correct-3.rs:13:13
    |
-LL |         if !is_directory(path.as_ref()) { //~ ERROR: cannot find function `is_directory`
+LL |         if !is_directory(path.as_ref()) {
    |             ^^^^^^^^^^^^ not found in this scope
 
 error[E0308]: mismatched types
-  --> $DIR/token-error-correct-3.rs:15:13
+  --> $DIR/token-error-correct-3.rs:17:13
    |
-LL |             fs::create_dir_all(path.as_ref()).map(|()| true) //~ ERROR: mismatched types
+LL |             fs::create_dir_all(path.as_ref()).map(|()| true)
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- help: try adding a semicolon: `;`
    |             |
    |             expected (), found enum `std::result::Result`