about summary refs log tree commit diff
diff options
context:
space:
mode:
authorgralpli <ranuberger@gmx.net>2017-01-17 22:52:43 +0100
committergralpli <ranuberger@gmx.net>2017-01-17 22:52:43 +0100
commit9fd3860e567545a5512c5155516d3e4cd866a5f2 (patch)
treefe95e5d899094aa8cf43a531d52b5c2792af449b
parent45b273af4a48e9625749286049326abe4fce064c (diff)
downloadrust-9fd3860e567545a5512c5155516d3e4cd866a5f2.tar.gz
rust-9fd3860e567545a5512c5155516d3e4cd866a5f2.zip
Fix ICE when compiling fn f<T: ?for<'a> Sized>() {}
-rw-r--r--src/librustc_typeck/collect.rs1
-rw-r--r--src/test/run-pass/issue-39089.rs13
2 files changed, 13 insertions, 1 deletions
diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs
index f832bf8d86e..33309000f06 100644
--- a/src/librustc_typeck/collect.rs
+++ b/src/librustc_typeck/collect.rs
@@ -1665,7 +1665,6 @@ fn is_unsized<'gcx: 'tcx, 'tcx>(astconv: &AstConv<'gcx, 'tcx>,
     for ab in ast_bounds {
         if let &hir::TraitTyParamBound(ref ptr, hir::TraitBoundModifier::Maybe) = ab  {
             if unbound.is_none() {
-                assert!(ptr.bound_lifetimes.is_empty());
                 unbound = Some(ptr.trait_ref.clone());
             } else {
                 span_err!(tcx.sess, span, E0203,
diff --git a/src/test/run-pass/issue-39089.rs b/src/test/run-pass/issue-39089.rs
new file mode 100644
index 00000000000..c3a58844547
--- /dev/null
+++ b/src/test/run-pass/issue-39089.rs
@@ -0,0 +1,13 @@
+// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+fn f<T: ?for<'a> Sized>() {}
+
+fn main() {}