about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2014-09-09 07:39:23 -0700
committerAlex Crichton <alex@alexcrichton.com>2014-09-09 12:07:14 -0700
commit25e08fb4fef32b1687e077cfc87e817f75c29615 (patch)
tree79b27e3a2cf40b4228447b38eaf91ef018b28b3e
parent456f00eb7e7d729da033c6fe20054e48b38ad05f (diff)
parentb1916288bf1a5bc20de4a250b3b4e03f69e577e4 (diff)
downloadrust-25e08fb4fef32b1687e077cfc87e817f75c29615.tar.gz
rust-25e08fb4fef32b1687e077cfc87e817f75c29615.zip
rollup merge of #17114 : nick29581/dst-type
-rw-r--r--src/librustc/middle/resolve.rs1
-rw-r--r--src/librustc/middle/typeck/collect.rs7
-rw-r--r--src/test/run-pass/unsized.rs1
3 files changed, 7 insertions, 2 deletions
diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs
index 3026b5c24c1..854b8b9ba77 100644
--- a/src/librustc/middle/resolve.rs
+++ b/src/librustc/middle/resolve.rs
@@ -3931,6 +3931,7 @@ impl<'a> Resolver<'a> {
                                                                item.id,
                                                                ItemRibKind),
                                              |this| {
+                    this.resolve_type_parameters(&generics.ty_params);
                     visit::walk_item(this, item, ());
                 });
             }
diff --git a/src/librustc/middle/typeck/collect.rs b/src/librustc/middle/typeck/collect.rs
index 742d22cc379..d1d76734941 100644
--- a/src/librustc/middle/typeck/collect.rs
+++ b/src/librustc/middle/typeck/collect.rs
@@ -488,7 +488,9 @@ pub fn ensure_no_ty_param_bounds(ccx: &CrateCtxt,
                                  generics: &ast::Generics,
                                  thing: &'static str) {
     for ty_param in generics.ty_params.iter() {
-        for bound in ty_param.bounds.iter() {
+        let bounds = ty_param.bounds.iter();
+        let mut bounds = bounds.chain(ty_param.unbound.iter());
+        for bound in bounds {
             match *bound {
                 ast::TraitTyParamBound(..) | ast::UnboxedFnTyParamBound(..) => {
                     // According to accepted RFC #XXX, we should
@@ -1076,9 +1078,10 @@ fn add_unsized_bound(ccx: &CrateCtxt,
                      desc: &str,
                      span: Span) {
     let kind_id = ccx.tcx.lang_items.require(SizedTraitLangItem);
+
     match unbound {
         &Some(ast::TraitTyParamBound(ref tpb)) => {
-            // #FIXME(8559) currently requires the unbound to be built-in.
+            // FIXME(#8559) currently requires the unbound to be built-in.
             let trait_def_id = ty::trait_ref_to_def_id(ccx.tcx, tpb);
             match kind_id {
                 Ok(kind_id) if trait_def_id != kind_id => {
diff --git a/src/test/run-pass/unsized.rs b/src/test/run-pass/unsized.rs
index 0530c8a6ab3..141d6c88dd9 100644
--- a/src/test/run-pass/unsized.rs
+++ b/src/test/run-pass/unsized.rs
@@ -24,6 +24,7 @@ struct S1<Sized? X>;
 enum E<Sized? X> {}
 impl <Sized? X> T1 for S1<X> {}
 fn f<Sized? X>() {}
+type TT<Sized? T> = T;
 
 pub fn main() {
 }