Skip to content

Commit b3b3207

Browse files
committed
Auto merge of #126038 - matthiaskrgr:rollup-h4rm3x2, r=matthiaskrgr
Rollup of 9 pull requests Successful merges: - #124840 (resolve: mark it undetermined if single import is not has any bindings) - #125622 (Winnow private method candidates instead of assuming any candidate of the right name will apply) - #125648 (Remove unused(?) `~/rustsrc` folder from docker script) - #125672 (Add more ABI test cases to miri (RFC 3391)) - #125800 (Fix `mut` static task queue in SGX target) - #125871 (Orphanck[old solver]: Consider opaque types to never cover type parameters) - #125893 (Handle all GVN binops in a single place.) - #126008 (Port `tests/run-make-fulldeps/issue-19371` to ui-fulldeps) - #126032 (Update description of the `IsTerminal` example) r? `@ghost` `@rustbot` modify labels: rollup
2 parents e69aeae + d4a969b commit b3b3207

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

tests/pass/function_calls/abi_compat.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,12 +83,24 @@ fn main() {
8383
test_abi_compat(main as fn(), id::<i32> as fn(i32) -> i32);
8484
// - 1-ZST
8585
test_abi_compat((), [0u8; 0]);
86-
// - Guaranteed null-pointer-optimizations (RFC 3391).
86+
// - Guaranteed Option<X> null-pointer-optimizations (RFC 3391).
8787
test_abi_compat(&0u32 as *const u32, Some(&0u32));
8888
test_abi_compat(main as fn(), Some(main as fn()));
8989
test_abi_compat(0u32, Some(num::NonZero::new(1u32).unwrap()));
9090
test_abi_compat(&0u32 as *const u32, Some(Wrapper(&0u32)));
91-
test_abi_compat(0u32, Some(Wrapper(num::NonZero::new(1u32).unwrap())));
91+
test_abi_compat(0u32, Some(Wrapper(num::NonZeroU32::new(1u32).unwrap())));
92+
// - Guaranteed Result<X, ZST1> does the same as Option<X> (RFC 3391)
93+
test_abi_compat(&0u32 as *const u32, Result::<_, ()>::Ok(&0u32));
94+
test_abi_compat(main as fn(), Result::<_, ()>::Ok(main as fn()));
95+
test_abi_compat(0u32, Result::<_, ()>::Ok(num::NonZeroU32::new(1).unwrap()));
96+
test_abi_compat(&0u32 as *const u32, Result::<_, ()>::Ok(Wrapper(&0u32)));
97+
test_abi_compat(0u32, Result::<_, ()>::Ok(Wrapper(num::NonZeroU32::new(1).unwrap())));
98+
// - Guaranteed Result<ZST1, X> also does the same as Option<X> (RFC 3391)
99+
test_abi_compat(&0u32 as *const u32, Result::<(), _>::Err(&0u32));
100+
test_abi_compat(main as fn(), Result::<(), _>::Err(main as fn()));
101+
test_abi_compat(0u32, Result::<(), _>::Err(num::NonZeroU32::new(1).unwrap()));
102+
test_abi_compat(&0u32 as *const u32, Result::<(), _>::Err(Wrapper(&0u32)));
103+
test_abi_compat(0u32, Result::<(), _>::Err(Wrapper(num::NonZeroU32::new(1).unwrap())));
92104

93105
// These must work for *any* type, since we guarantee that `repr(transparent)` is ABI-compatible
94106
// with the wrapped field.

0 commit comments

Comments
 (0)