about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-02-03 03:28:08 +0000
committerbors <bors@rust-lang.org>2020-02-03 03:28:08 +0000
commita2e80300cd83849dd4fa17af131e603623631bf6 (patch)
treef99b342c2b4a08bbcfbe34e66d94b783642fbf61
parent01db5819429352c4ab58f4760c29d6e4ca76d9a7 (diff)
parentc377ed606c1abfb240321f26cade940946c768e6 (diff)
downloadrust-a2e80300cd83849dd4fa17af131e603623631bf6.tar.gz
rust-a2e80300cd83849dd4fa17af131e603623631bf6.zip
Auto merge of #68756 - JohnTitor:fix-ice-save-analysis-2, r=davidtwco
Fix ICE with save-analysis

Fixes #68749

It should be fine since it's the same way as `visit_expr`.
-rw-r--r--src/librustc_save_analysis/dump_visitor.rs4
-rw-r--r--src/test/ui/issues/issue-26459.rs2
-rw-r--r--src/test/ui/issues/issue-26459.stderr2
3 files changed, 5 insertions, 3 deletions
diff --git a/src/librustc_save_analysis/dump_visitor.rs b/src/librustc_save_analysis/dump_visitor.rs
index 09c261cdc23..3f436a1e27c 100644
--- a/src/librustc_save_analysis/dump_visitor.rs
+++ b/src/librustc_save_analysis/dump_visitor.rs
@@ -866,8 +866,8 @@ impl<'l, 'tcx> DumpVisitor<'l, 'tcx> {
                 // FIXME do something with _path?
                 let hir_id = self.tcx.hir().node_to_hir_id(p.id);
                 let adt = match self.save_ctxt.tables.node_type_opt(hir_id) {
-                    Some(ty) => ty.ty_adt_def().unwrap(),
-                    None => {
+                    Some(ty) if ty.ty_adt_def().is_some() => ty.ty_adt_def().unwrap(),
+                    _ => {
                         visit::walk_pat(self, p);
                         return;
                     }
diff --git a/src/test/ui/issues/issue-26459.rs b/src/test/ui/issues/issue-26459.rs
index 79791e0e06a..2ba05a0a47e 100644
--- a/src/test/ui/issues/issue-26459.rs
+++ b/src/test/ui/issues/issue-26459.rs
@@ -1,3 +1,5 @@
+// compile-flags: -Zsave-analysis
+
 fn main() {
     match 'a' {
         char{ch} => true
diff --git a/src/test/ui/issues/issue-26459.stderr b/src/test/ui/issues/issue-26459.stderr
index 187369263a4..9f594990c6d 100644
--- a/src/test/ui/issues/issue-26459.stderr
+++ b/src/test/ui/issues/issue-26459.stderr
@@ -1,5 +1,5 @@
 error[E0574]: expected struct, variant or union type, found builtin type `char`
-  --> $DIR/issue-26459.rs:3:9
+  --> $DIR/issue-26459.rs:5:9
    |
 LL |         char{ch} => true
    |         ^^^^ not a struct, variant or union type