diff options
Diffstat (limited to 'src/test')
6 files changed, 158 insertions, 22 deletions
diff --git a/src/test/codegen/align-struct.rs b/src/test/codegen/align-struct.rs index acc5a2d5499..f129f073e98 100644 --- a/src/test/codegen/align-struct.rs +++ b/src/test/codegen/align-struct.rs @@ -19,7 +19,7 @@ pub enum Enum4 { A(i32), B(i32), } -// CHECK: %"Enum4::A" = type { [1 x i32], i32 } +// No Aggregate type, and hence nothing in LLVM IR. pub enum Enum64 { A(Align64), diff --git a/src/test/ui/layout/debug.stderr b/src/test/ui/layout/debug.stderr index 56a1337e6a5..7dbcc151855 100644 --- a/src/test/ui/layout/debug.stderr +++ b/src/test/ui/layout/debug.stderr @@ -184,9 +184,22 @@ error: layout_of(std::result::Result<i32, i32>) = Layout { variants: Single { index: 0, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I32, + false, + ), + valid_range: 0..=1, + }, + Initialized { + value: Int( + I32, + true, + ), + valid_range: 0..=4294967295, + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(4 bytes), @@ -206,9 +219,22 @@ error: layout_of(std::result::Result<i32, i32>) = Layout { variants: Single { index: 1, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I32, + false, + ), + valid_range: 0..=1, + }, + Initialized { + value: Int( + I32, + true, + ), + valid_range: 0..=4294967295, + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(4 bytes), diff --git a/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr b/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr index 1a724e6f59b..33dfa307c1d 100644 --- a/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr +++ b/src/test/ui/layout/issue-96158-scalarpair-payload-might-be-uninit.stderr @@ -30,9 +30,21 @@ error: layout_of(MissingPayloadField) = Layout { variants: Single { index: 0, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Union { + value: Int( + I8, + false, + ), + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), @@ -131,9 +143,22 @@ error: layout_of(CommonPayloadField) = Layout { variants: Single { index: 0, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=255, + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), @@ -153,9 +178,22 @@ error: layout_of(CommonPayloadField) = Layout { variants: Single { index: 1, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=255, + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), @@ -237,9 +275,21 @@ error: layout_of(CommonPayloadFieldIsMaybeUninit) = Layout { variants: Single { index: 0, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Union { + value: Int( + I8, + false, + ), + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), @@ -259,9 +309,21 @@ error: layout_of(CommonPayloadFieldIsMaybeUninit) = Layout { variants: Single { index: 1, }, - abi: Aggregate { - sized: true, - }, + abi: ScalarPair( + Initialized { + value: Int( + I8, + false, + ), + valid_range: 0..=1, + }, + Union { + value: Int( + I8, + false, + ), + }, + ), largest_niche: None, align: AbiAndPrefAlign { abi: Align(1 bytes), diff --git a/src/test/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs b/src/test/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs new file mode 100644 index 00000000000..d45fa10f022 --- /dev/null +++ b/src/test/ui/rust-2018/auxiliary/edition-lint-infer-outlives-macro.rs @@ -0,0 +1,6 @@ +pub fn foo() {} + +#[macro_export] +macro_rules! gimme_a { + ($($mac:tt)*) => { $($mac)* { 'a } } +} diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.rs b/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.rs new file mode 100644 index 00000000000..d7a832831c1 --- /dev/null +++ b/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.rs @@ -0,0 +1,28 @@ +// edition:2018 +// aux-build:edition-lint-infer-outlives-macro.rs + +// Test that the lint does not fire if the where predicate +// is from the local crate, but all the bounds are from an +// external macro. + +#![deny(explicit_outlives_requirements)] + +#[macro_use] +extern crate edition_lint_infer_outlives_macro; + +macro_rules! make_foo { + ($a:tt) => { + struct Foo<$a, 'b> where 'b: $a { + foo: &$a &'b (), + } + } +} + +gimme_a! {make_foo!} + +struct Bar<'a, 'b: 'a> { + //~^ ERROR: outlives requirements can be inferred + bar: &'a &'b (), +} + +fn main() {} diff --git a/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.stderr b/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.stderr new file mode 100644 index 00000000000..553b1cd976a --- /dev/null +++ b/src/test/ui/rust-2018/edition-lint-infer-outlives-macro.stderr @@ -0,0 +1,14 @@ +error: outlives requirements can be inferred + --> $DIR/edition-lint-infer-outlives-macro.rs:23:18 + | +LL | struct Bar<'a, 'b: 'a> { + | ^^^^ help: remove this bound + | +note: the lint level is defined here + --> $DIR/edition-lint-infer-outlives-macro.rs:8:9 + | +LL | #![deny(explicit_outlives_requirements)] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to previous error + |
