Auto merge of #138366 - matthiaskrgr:rollup-cn16m7q, r=matthiaskrgr
Rollup of 10 pull requests Successful merges: - #137715 (Allow int literals for pattern types with int base types) - #138002 (Disable CFI for weakly linked syscalls) - #138051 (Add support for downloading GCC from CI) - #138231 (Prevent ICE in autodiff validation by emitting user-friendly errors) - #138245 (stabilize `ci_rustc_if_unchanged_logic` test for local environments) - #138256 (Do not feed anon const a type that references generics that it does not have) - #138284 (Do not write user type annotation for const param value path) - #138296 (Remove `AdtFlags::IS_ANONYMOUS` and `Copy`/`Clone` condition for anonymous ADT) - #138352 (miri native_calls: ensure we actually expose *mutable* provenance to the memory FFI can access) - #138354 (remove redundant `body` arguments) r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
c625102320
52 changed files with 1234 additions and 395 deletions
|
@ -220,6 +220,34 @@ fn layout_of_uncached<'tcx>(
|
|||
.try_to_bits(tcx, cx.typing_env)
|
||||
.ok_or_else(|| error(cx, LayoutError::Unknown(ty)))?;
|
||||
|
||||
// FIXME(pattern_types): create implied bounds from pattern types in signatures
|
||||
// that require that the range end is >= the range start so that we can't hit
|
||||
// this error anymore without first having hit a trait solver error.
|
||||
// Very fuzzy on the details here, but pattern types are an internal impl detail,
|
||||
// so we can just go with this for now
|
||||
if scalar.is_signed() {
|
||||
let range = scalar.valid_range_mut();
|
||||
let start = layout.size.sign_extend(range.start);
|
||||
let end = layout.size.sign_extend(range.end);
|
||||
if end < start {
|
||||
let guar = tcx.dcx().err(format!(
|
||||
"pattern type ranges cannot wrap: {start}..={end}"
|
||||
));
|
||||
|
||||
return Err(error(cx, LayoutError::ReferencesError(guar)));
|
||||
}
|
||||
} else {
|
||||
let range = scalar.valid_range_mut();
|
||||
if range.end < range.start {
|
||||
let guar = tcx.dcx().err(format!(
|
||||
"pattern type ranges cannot wrap: {}..={}",
|
||||
range.start, range.end
|
||||
));
|
||||
|
||||
return Err(error(cx, LayoutError::ReferencesError(guar)));
|
||||
}
|
||||
};
|
||||
|
||||
let niche = Niche {
|
||||
offset: Size::ZERO,
|
||||
value: scalar.primitive(),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue