diff options
| author | Jonathan Reem <jonathan.reem@gmail.com> | 2015-01-06 22:59:07 +0100 |
|---|---|---|
| committer | Jonathan Reem <jonathan.reem@gmail.com> | 2015-01-08 00:49:19 +0100 |
| commit | 2606f99871511acaabd8aaec87913a5203beb39f (patch) | |
| tree | b4704c0bd41ef77d54a21179fee16786ab53b7ad /src/libcoretest | |
| parent | dfd557bd73a27966b242635b04f2a9fca6eadce8 (diff) | |
| download | rust-2606f99871511acaabd8aaec87913a5203beb39f.tar.gz rust-2606f99871511acaabd8aaec87913a5203beb39f.zip | |
Remove the unneeded Sized bound on TypeId creation
This bound is probably unintentional and is unnecessarily
constricting.
To facilitate this change, it was also necessary to modify
resolve to recurse on and resolve type parameters in extern { }
blocks. This fixes an ICE when using bounds on type parameters
during the declaration of intrinsics.
This also adds tests for TypeId on both Sized and Unsized
tests as well as a test for using type parameters and bounds
in extern { } blocks.
Diffstat (limited to 'src/libcoretest')
| -rw-r--r-- | src/libcoretest/intrinsics.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/libcoretest/intrinsics.rs b/src/libcoretest/intrinsics.rs new file mode 100644 index 00000000000..bcf8a6a433b --- /dev/null +++ b/src/libcoretest/intrinsics.rs @@ -0,0 +1,31 @@ +// Copyright 2015 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. + +use core::intrinsics::TypeId; + +#[test] +fn test_typeid_sized_types() { + struct X; struct Y(uint); + + assert_eq!(TypeId::of::<X>(), TypeId::of::<X>()); + assert_eq!(TypeId::of::<Y>(), TypeId::of::<Y>()); + assert!(TypeId::of::<X>() != TypeId::of::<Y>()); +} + +#[test] +fn test_typeid_unsized_types() { + trait Z {} + struct X(str); struct Y(Z + 'static); + + assert_eq!(TypeId::of::<X>(), TypeId::of::<X>()); + assert_eq!(TypeId::of::<Y>(), TypeId::of::<Y>()); + assert!(TypeId::of::<X>() != TypeId::of::<Y>()); +} + |
