]> git.lizzy.rs Git - rust.git/commitdiff
librustc: Add missing case for the `Pod` bound in `tydecode`.
authorPatrick Walton <pcwalton@mimiga.net>
Wed, 18 Dec 2013 23:03:32 +0000 (15:03 -0800)
committerPatrick Walton <pcwalton@mimiga.net>
Thu, 19 Dec 2013 22:13:19 +0000 (14:13 -0800)
src/librustc/metadata/tydecode.rs
src/test/auxiliary/kinds_in_metadata.rs [new file with mode: 0644]
src/test/auxiliary/trait_superkinds_in_metadata.rs
src/test/run-pass/builtin-superkinds-in-metadata.rs
src/test/run-pass/kinds-in-metadata.rs [new file with mode: 0644]

index 27f43a0ef5375bfa05af13519e7fec1ae4a0efc7..9f91fa6ed8fb000f07bb40bbfffde7939a6ae6ea 100644 (file)
@@ -590,14 +590,17 @@ fn parse_bounds(st: &mut PState, conv: conv_did) -> ty::ParamBounds {
             'Z' => {
                 param_bounds.builtin_bounds.add(ty::BoundSized);
             }
+            'P' => {
+                param_bounds.builtin_bounds.add(ty::BoundPod);
+            }
             'I' => {
                 param_bounds.trait_bounds.push(@parse_trait_ref(st, |x,y| conv(x,y)));
             }
             '.' => {
                 return param_bounds;
             }
-            _ => {
-                fail!("parse_bounds: bad bounds")
+            c => {
+                fail!("parse_bounds: bad bounds ('{}')", c)
             }
         }
     }
diff --git a/src/test/auxiliary/kinds_in_metadata.rs b/src/test/auxiliary/kinds_in_metadata.rs
new file mode 100644 (file)
index 0000000..a8f8dbf
--- /dev/null
@@ -0,0 +1,9 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Tests that metadata serialization works for the `Pod` kind.
+
+#[crate_type="lib"];
+
+pub fn f<T:Pod>() {}
+
index dfb0c0310ecf1bf64beb0101013ec84e7d865999..2345724e8c25173bdcb4e909f2c9e1e83dad3731 100644 (file)
@@ -15,3 +15,4 @@
 
 pub trait RequiresFreeze : Freeze { }
 pub trait RequiresRequiresFreezeAndSend : RequiresFreeze + Send { }
+pub trait RequiresPod : Pod { }
index e2fc6cc335f43ba2bbcb790bcab7e7d5bc9db7af..f285275f5e2196cba932723fc8f7bdc5247ee7d8 100644 (file)
@@ -16,6 +16,7 @@
 
 extern mod trait_superkinds_in_metadata;
 use trait_superkinds_in_metadata::{RequiresRequiresFreezeAndSend, RequiresFreeze};
+use trait_superkinds_in_metadata::{RequiresPod};
 
 struct X<T>(T);
 
@@ -23,4 +24,6 @@ impl <T:Freeze> RequiresFreeze for X<T> { }
 
 impl <T:Freeze+Send> RequiresRequiresFreezeAndSend for X<T> { }
 
+impl <T:Pod> RequiresPod for X<T> { }
+
 fn main() { }
diff --git a/src/test/run-pass/kinds-in-metadata.rs b/src/test/run-pass/kinds-in-metadata.rs
new file mode 100644 (file)
index 0000000..857cfcc
--- /dev/null
@@ -0,0 +1,16 @@
+// xfail-fast
+// aux-build:kinds_in_metadata.rs
+
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// Tests that metadata serialization works for the `Pod` kind.
+
+extern mod kinds_in_metadata;
+
+use kinds_in_metadata::f;
+
+pub fn main() {
+    f::<int>();
+}
+