Merge pull request #19212 from lnicola/sync-from-rust

minor: sync from downstream
This commit is contained in:
Laurențiu Nicola 2025-02-24 08:45:06 +00:00 committed by GitHub
commit b7665066c9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 252 additions and 185 deletions

44
Cargo.lock generated
View File

@ -561,6 +561,7 @@ dependencies = [
"la-arena 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "la-arena 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"mbe", "mbe",
"ra-ap-rustc_abi", "ra-ap-rustc_abi",
"ra-ap-rustc_hashes",
"ra-ap-rustc_parse_format", "ra-ap-rustc_parse_format",
"rustc-hash 2.0.0", "rustc-hash 2.0.0",
"rustc_apfloat", "rustc_apfloat",
@ -628,6 +629,7 @@ dependencies = [
"oorandom", "oorandom",
"project-model", "project-model",
"ra-ap-rustc_abi", "ra-ap-rustc_abi",
"ra-ap-rustc_hashes",
"ra-ap-rustc_index", "ra-ap-rustc_index",
"ra-ap-rustc_pattern_analysis", "ra-ap-rustc_pattern_analysis",
"rustc-hash 2.0.0", "rustc-hash 2.0.0",
@ -1505,20 +1507,30 @@ dependencies = [
[[package]] [[package]]
name = "ra-ap-rustc_abi" name = "ra-ap-rustc_abi"
version = "0.95.0" version = "0.97.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b40c4e339b71a8f075a829b1acaf32f870a11b466d9b8623d50b0ce33e65af95" checksum = "3829c3355d1681ffeaf1450ec71edcdace6820fe2e86469d8fc1ad45e2c96460"
dependencies = [ dependencies = [
"bitflags 2.7.0", "bitflags 2.7.0",
"ra-ap-rustc_hashes",
"ra-ap-rustc_index", "ra-ap-rustc_index",
"tracing", "tracing",
] ]
[[package]] [[package]]
name = "ra-ap-rustc_index" name = "ra-ap-rustc_hashes"
version = "0.95.0" version = "0.97.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "872072e2ba11d11147ebe9fde1608fe7f7d9b5c51dac524af28ee07c6dade468" checksum = "1bd4d6d4c434bec08e02370a4f64a4985312097215a62e82d0f757f3a98e502e"
dependencies = [
"rustc-stable-hash",
]
[[package]]
name = "ra-ap-rustc_index"
version = "0.97.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bad6fc4bd7522e31096e2de5b0351144fe0684b608791ee26c842bf2da1b19ae"
dependencies = [ dependencies = [
"ra-ap-rustc_index_macros", "ra-ap-rustc_index_macros",
"smallvec", "smallvec",
@ -1526,9 +1538,9 @@ dependencies = [
[[package]] [[package]]
name = "ra-ap-rustc_index_macros" name = "ra-ap-rustc_index_macros"
version = "0.95.0" version = "0.97.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffcd77debcaf2ad690a57c2d041c11eb33fe66869754b2c5f35c52954b46af0c" checksum = "cfb234e1f84b92be45276c3025bee18789e9bc95bec8789bec961e78edb01c52"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -1537,9 +1549,9 @@ dependencies = [
[[package]] [[package]]
name = "ra-ap-rustc_lexer" name = "ra-ap-rustc_lexer"
version = "0.95.0" version = "0.97.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49265cdf8823f8d246e476c79c60bd6e5b551c81ae76e1c8d6a5e0dc73df0bca" checksum = "7a3a40bd11dc43d1cb110e730b80620cf8102f4cca8920a02b65954da0ed931f"
dependencies = [ dependencies = [
"memchr", "memchr",
"unicode-properties", "unicode-properties",
@ -1548,9 +1560,9 @@ dependencies = [
[[package]] [[package]]
name = "ra-ap-rustc_parse_format" name = "ra-ap-rustc_parse_format"
version = "0.95.0" version = "0.97.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3da239fdc971176de0db45cb631d71475b52033a3d0027d91964da7be89eee6" checksum = "5feb877478994cb4c0c0c7a5116a352eefc0634aefc8636feb00a893fa5b7135"
dependencies = [ dependencies = [
"ra-ap-rustc_index", "ra-ap-rustc_index",
"ra-ap-rustc_lexer", "ra-ap-rustc_lexer",
@ -1558,9 +1570,9 @@ dependencies = [
[[package]] [[package]]
name = "ra-ap-rustc_pattern_analysis" name = "ra-ap-rustc_pattern_analysis"
version = "0.95.0" version = "0.97.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56057d08fdfa0d95494e461bbdd5d4b3fdb349cca6be05ad7759bc964be1b8d4" checksum = "a76774d35934d464c4115908cde16f76a4f7e540fe1eea6b79336c556e37bdd3"
dependencies = [ dependencies = [
"ra-ap-rustc_index", "ra-ap-rustc_index",
"rustc-hash 2.0.0", "rustc-hash 2.0.0",
@ -1735,6 +1747,12 @@ version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152"
[[package]]
name = "rustc-stable-hash"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2febf9acc5ee5e99d1ad0afcdbccc02d87aa3f857a1f01f825b80eacf8edfcd1"
[[package]] [[package]]
name = "rustc_apfloat" name = "rustc_apfloat"
version = "0.2.1+llvm-462a31f5a5ab" version = "0.2.1+llvm-462a31f5a5ab"

View File

@ -86,11 +86,12 @@ vfs-notify = { path = "./crates/vfs-notify", version = "0.0.0" }
vfs = { path = "./crates/vfs", version = "0.0.0" } vfs = { path = "./crates/vfs", version = "0.0.0" }
edition = { path = "./crates/edition", version = "0.0.0" } edition = { path = "./crates/edition", version = "0.0.0" }
ra-ap-rustc_lexer = { version = "0.95", default-features = false } ra-ap-rustc_hashes = { version = "0.97", default-features = false }
ra-ap-rustc_parse_format = { version = "0.95", default-features = false } ra-ap-rustc_lexer = { version = "0.97", default-features = false }
ra-ap-rustc_index = { version = "0.95", default-features = false } ra-ap-rustc_parse_format = { version = "0.97", default-features = false }
ra-ap-rustc_abi = { version = "0.95", default-features = false } ra-ap-rustc_index = { version = "0.97", default-features = false }
ra-ap-rustc_pattern_analysis = { version = "0.95", default-features = false } ra-ap-rustc_abi = { version = "0.97", default-features = false }
ra-ap-rustc_pattern_analysis = { version = "0.97", default-features = false }
# local crates that aren't published to crates.io. These should not have versions. # local crates that aren't published to crates.io. These should not have versions.

View File

@ -31,6 +31,7 @@ triomphe.workspace = true
rustc_apfloat = "0.2.0" rustc_apfloat = "0.2.0"
text-size.workspace = true text-size.workspace = true
ra-ap-rustc_hashes.workspace = true
ra-ap-rustc_parse_format.workspace = true ra-ap-rustc_parse_format.workspace = true
ra-ap-rustc_abi.workspace = true ra-ap-rustc_abi.workspace = true

View File

@ -9,6 +9,7 @@ use hir_expand::name::Name;
use intern::sym; use intern::sym;
use la_arena::Arena; use la_arena::Arena;
use rustc_abi::{Align, Integer, IntegerType, ReprFlags, ReprOptions}; use rustc_abi::{Align, Integer, IntegerType, ReprFlags, ReprOptions};
use rustc_hashes::Hash64;
use triomphe::Arc; use triomphe::Arc;
use tt::iter::TtElement; use tt::iter::TtElement;
@ -172,7 +173,13 @@ fn parse_repr_tt(tt: &TopSubtree) -> Option<ReprOptions> {
} }
} }
Some(ReprOptions { int, align: max_align, pack: min_pack, flags, field_shuffle_seed: 0 }) Some(ReprOptions {
int,
align: max_align,
pack: min_pack,
flags,
field_shuffle_seed: Hash64::ZERO,
})
} }
impl StructData { impl StructData {

View File

@ -18,9 +18,15 @@ extern crate ra_ap_rustc_parse_format as rustc_parse_format;
#[cfg(feature = "in-rust-tree")] #[cfg(feature = "in-rust-tree")]
extern crate rustc_abi; extern crate rustc_abi;
#[cfg(feature = "in-rust-tree")]
extern crate rustc_hashes;
#[cfg(not(feature = "in-rust-tree"))] #[cfg(not(feature = "in-rust-tree"))]
extern crate ra_ap_rustc_abi as rustc_abi; extern crate ra_ap_rustc_abi as rustc_abi;
#[cfg(not(feature = "in-rust-tree"))]
extern crate ra_ap_rustc_hashes as rustc_hashes;
pub mod db; pub mod db;
pub mod attr; pub mod attr;

View File

@ -36,6 +36,7 @@ indexmap.workspace = true
rustc_apfloat = "0.2.0" rustc_apfloat = "0.2.0"
ra-ap-rustc_abi.workspace = true ra-ap-rustc_abi.workspace = true
ra-ap-rustc_hashes.workspace = true
ra-ap-rustc_index.workspace = true ra-ap-rustc_index.workspace = true
ra-ap-rustc_pattern_analysis.workspace = true ra-ap-rustc_pattern_analysis.workspace = true

View File

@ -361,11 +361,11 @@ impl PatCx for MatchCheckCtx<'_> {
} }
} }
fn ctor_sub_tys<'a>( fn ctor_sub_tys(
&'a self, &self,
ctor: &'a rustc_pattern_analysis::constructor::Constructor<Self>, ctor: &rustc_pattern_analysis::constructor::Constructor<Self>,
ty: &'a Self::Ty, ty: &Self::Ty,
) -> impl ExactSizeIterator<Item = (Self::Ty, PrivateUninhabitedField)> + Captures<'a> { ) -> impl ExactSizeIterator<Item = (Self::Ty, PrivateUninhabitedField)> {
let single = |ty| smallvec![(ty, PrivateUninhabitedField(false))]; let single = |ty| smallvec![(ty, PrivateUninhabitedField(false))];
let tys: SmallVec<[_; 2]> = match ctor { let tys: SmallVec<[_; 2]> = match ctor {
Struct | Variant(_) | UnionField => match ty.kind(Interner) { Struct | Variant(_) | UnionField => match ty.kind(Interner) {

View File

@ -14,6 +14,7 @@ use hir_def::{
}; };
use la_arena::{Idx, RawIdx}; use la_arena::{Idx, RawIdx};
use rustc_abi::AddressSpace; use rustc_abi::AddressSpace;
use rustc_hashes::Hash64;
use rustc_index::{IndexSlice, IndexVec}; use rustc_index::{IndexSlice, IndexVec};
use triomphe::Arc; use triomphe::Arc;
@ -178,7 +179,7 @@ fn layout_of_simd_ty(
.size .size
.checked_mul(e_len, dl) .checked_mul(e_len, dl)
.ok_or(LayoutError::BadCalc(LayoutCalculatorError::SizeOverflow))?; .ok_or(LayoutError::BadCalc(LayoutCalculatorError::SizeOverflow))?;
let align = dl.vector_align(size); let align = dl.llvmlike_vector_align(size);
let size = size.align_to(align.abi); let size = size.align_to(align.abi);
// Compute the placement of the vector fields: // Compute the placement of the vector fields:
@ -193,11 +194,12 @@ fn layout_of_simd_ty(
fields, fields,
backend_repr: BackendRepr::Vector { element: e_abi, count: e_len }, backend_repr: BackendRepr::Vector { element: e_abi, count: e_len },
largest_niche: e_ly.largest_niche, largest_niche: e_ly.largest_niche,
uninhabited: false,
size, size,
align, align,
max_repr_align: None, max_repr_align: None,
unadjusted_abi_align: align.abi, unadjusted_abi_align: align.abi,
randomization_seed: 0, randomization_seed: Hash64::ZERO,
})) }))
} }
@ -296,25 +298,22 @@ pub fn layout_of_ty_query(
.checked_mul(count, dl) .checked_mul(count, dl)
.ok_or(LayoutError::BadCalc(LayoutCalculatorError::SizeOverflow))?; .ok_or(LayoutError::BadCalc(LayoutCalculatorError::SizeOverflow))?;
let backend_repr = let backend_repr = BackendRepr::Memory { sized: true };
if count != 0 && matches!(element.backend_repr, BackendRepr::Uninhabited) {
BackendRepr::Uninhabited
} else {
BackendRepr::Memory { sized: true }
};
let largest_niche = if count != 0 { element.largest_niche } else { None }; let largest_niche = if count != 0 { element.largest_niche } else { None };
let uninhabited = if count != 0 { element.uninhabited } else { false };
Layout { Layout {
variants: Variants::Single { index: struct_variant_idx() }, variants: Variants::Single { index: struct_variant_idx() },
fields: FieldsShape::Array { stride: element.size, count }, fields: FieldsShape::Array { stride: element.size, count },
backend_repr, backend_repr,
largest_niche, largest_niche,
uninhabited,
align: element.align, align: element.align,
size, size,
max_repr_align: None, max_repr_align: None,
unadjusted_abi_align: element.align.abi, unadjusted_abi_align: element.align.abi,
randomization_seed: 0, randomization_seed: Hash64::ZERO,
} }
} }
TyKind::Slice(element) => { TyKind::Slice(element) => {
@ -324,11 +323,12 @@ pub fn layout_of_ty_query(
fields: FieldsShape::Array { stride: element.size, count: 0 }, fields: FieldsShape::Array { stride: element.size, count: 0 },
backend_repr: BackendRepr::Memory { sized: false }, backend_repr: BackendRepr::Memory { sized: false },
largest_niche: None, largest_niche: None,
uninhabited: false,
align: element.align, align: element.align,
size: Size::ZERO, size: Size::ZERO,
max_repr_align: None, max_repr_align: None,
unadjusted_abi_align: element.align.abi, unadjusted_abi_align: element.align.abi,
randomization_seed: 0, randomization_seed: Hash64::ZERO,
} }
} }
TyKind::Str => Layout { TyKind::Str => Layout {
@ -336,11 +336,12 @@ pub fn layout_of_ty_query(
fields: FieldsShape::Array { stride: Size::from_bytes(1), count: 0 }, fields: FieldsShape::Array { stride: Size::from_bytes(1), count: 0 },
backend_repr: BackendRepr::Memory { sized: false }, backend_repr: BackendRepr::Memory { sized: false },
largest_niche: None, largest_niche: None,
uninhabited: false,
align: dl.i8_align, align: dl.i8_align,
size: Size::ZERO, size: Size::ZERO,
max_repr_align: None, max_repr_align: None,
unadjusted_abi_align: dl.i8_align.abi, unadjusted_abi_align: dl.i8_align.abi,
randomization_seed: 0, randomization_seed: Hash64::ZERO,
}, },
// Potentially-wide pointers. // Potentially-wide pointers.
TyKind::Ref(_, _, pointee) | TyKind::Raw(_, pointee) => { TyKind::Ref(_, _, pointee) | TyKind::Raw(_, pointee) => {

View File

@ -12,6 +12,9 @@ extern crate ra_ap_rustc_index as rustc_index;
#[cfg(feature = "in-rust-tree")] #[cfg(feature = "in-rust-tree")]
extern crate rustc_abi; extern crate rustc_abi;
#[cfg(feature = "in-rust-tree")]
extern crate rustc_hashes;
#[cfg(not(feature = "in-rust-tree"))] #[cfg(not(feature = "in-rust-tree"))]
extern crate ra_ap_rustc_abi as rustc_abi; extern crate ra_ap_rustc_abi as rustc_abi;
@ -21,6 +24,9 @@ extern crate rustc_pattern_analysis;
#[cfg(not(feature = "in-rust-tree"))] #[cfg(not(feature = "in-rust-tree"))]
extern crate ra_ap_rustc_pattern_analysis as rustc_pattern_analysis; extern crate ra_ap_rustc_pattern_analysis as rustc_pattern_analysis;
#[cfg(not(feature = "in-rust-tree"))]
extern crate ra_ap_rustc_hashes as rustc_hashes;
mod builder; mod builder;
mod chalk_db; mod chalk_db;
mod chalk_ext; mod chalk_ext;

File diff suppressed because it is too large Load Diff

View File

@ -1 +1 @@
273465e1f2932a30a5b56ac95859cdc86f3f33fa e0be1a02626abef2878cb7f4aaef7ae409477112