Skip to content

Commit 600a80d

Browse files
committed
Auto merge of rust-lang#95233 - compiler-errors:chalk-up, r=jackh726
Upgrade chalk to `0.80.0` r? `@jackh726`
2 parents 6970f88 + 376d100 commit 600a80d

File tree

4 files changed

+49
-22
lines changed

4 files changed

+49
-22
lines changed

Cargo.lock

+8-8
Original file line numberDiff line numberDiff line change
@@ -515,9 +515,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
515515

516516
[[package]]
517517
name = "chalk-derive"
518-
version = "0.76.0"
518+
version = "0.80.0"
519519
source = "registry+https://github.com/rust-lang/crates.io-index"
520-
checksum = "58c24b8052ea1e3adbb6f9ab7ba5fcc18b9d12591c042de4c833f709ce81e0e0"
520+
checksum = "d0001adf0cf12361e08b65e1898ea138f8f77d8f5177cbf29b6b3b3532252bd6"
521521
dependencies = [
522522
"proc-macro2",
523523
"quote",
@@ -527,9 +527,9 @@ dependencies = [
527527

528528
[[package]]
529529
name = "chalk-engine"
530-
version = "0.76.0"
530+
version = "0.80.0"
531531
source = "registry+https://github.com/rust-lang/crates.io-index"
532-
checksum = "0eca186b6ea9af798312f4b568fd094c82e7946ac08be5dc5fea22decc6d2ed8"
532+
checksum = "c44ee96f2d67cb5193d1503f185db1abad9933a1c6e6b4169c176f90baecd393"
533533
dependencies = [
534534
"chalk-derive",
535535
"chalk-ir",
@@ -540,9 +540,9 @@ dependencies = [
540540

541541
[[package]]
542542
name = "chalk-ir"
543-
version = "0.76.0"
543+
version = "0.80.0"
544544
source = "registry+https://github.com/rust-lang/crates.io-index"
545-
checksum = "f3cad5c3f1edd4b4a2c9bda24ae558ceb4f88336f88f944c2e35d0bfeb13c818"
545+
checksum = "92d8a95548f23618fda86426e4304e563ec2bb7ba0216139f0748d63c107b5f1"
546546
dependencies = [
547547
"bitflags",
548548
"chalk-derive",
@@ -551,9 +551,9 @@ dependencies = [
551551

552552
[[package]]
553553
name = "chalk-solve"
554-
version = "0.76.0"
554+
version = "0.80.0"
555555
source = "registry+https://github.com/rust-lang/crates.io-index"
556-
checksum = "94533188d3452bc72cbd5618d166f45fc7646b674ad3fe9667d557bc25236dee"
556+
checksum = "f37f492dacfafe2e21319b80827da2779932909bb392f0cc86b2bd5c07c1b4e1"
557557
dependencies = [
558558
"chalk-derive",
559559
"chalk-ir",

compiler/rustc_middle/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ rustc_index = { path = "../rustc_index" }
2929
rustc_serialize = { path = "../rustc_serialize" }
3030
rustc_ast = { path = "../rustc_ast" }
3131
rustc_span = { path = "../rustc_span" }
32-
chalk-ir = "0.76.0"
32+
chalk-ir = "0.80.0"
3333
smallvec = { version = "1.6.1", features = ["union", "may_dangle"] }
3434
rustc_session = { path = "../rustc_session" }
3535
rustc_type_ir = { path = "../rustc_type_ir" }

compiler/rustc_traits/Cargo.toml

+3-3
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ rustc_hir = { path = "../rustc_hir" }
1212
rustc_index = { path = "../rustc_index" }
1313
rustc_ast = { path = "../rustc_ast" }
1414
rustc_span = { path = "../rustc_span" }
15-
chalk-ir = "0.76.0"
16-
chalk-engine = "0.76.0"
17-
chalk-solve = "0.76.0"
15+
chalk-ir = "0.80.0"
16+
chalk-engine = "0.80.0"
17+
chalk-solve = "0.80.0"
1818
smallvec = { version = "1.6.1", features = ["union", "may_dangle"] }
1919
rustc_infer = { path = "../rustc_infer" }
2020
rustc_trait_selection = { path = "../rustc_trait_selection" }

compiler/rustc_traits/src/chalk/db.rs

+37-10
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ impl<'tcx> chalk_solve::RustIrDatabase<RustInterner<'tcx>> for RustIrDatabase<'t
100100
&self,
101101
trait_id: chalk_ir::TraitId<RustInterner<'tcx>>,
102102
) -> Arc<chalk_solve::rust_ir::TraitDatum<RustInterner<'tcx>>> {
103+
use chalk_solve::rust_ir::WellKnownTrait::*;
104+
103105
let def_id = trait_id.0;
104106
let trait_def = self.interner.tcx.trait_def(def_id);
105107

@@ -119,25 +121,27 @@ impl<'tcx> chalk_solve::RustIrDatabase<RustInterner<'tcx>> for RustIrDatabase<'t
119121

120122
let lang_items = self.interner.tcx.lang_items();
121123
let well_known = if lang_items.sized_trait() == Some(def_id) {
122-
Some(chalk_solve::rust_ir::WellKnownTrait::Sized)
124+
Some(Sized)
123125
} else if lang_items.copy_trait() == Some(def_id) {
124-
Some(chalk_solve::rust_ir::WellKnownTrait::Copy)
126+
Some(Copy)
125127
} else if lang_items.clone_trait() == Some(def_id) {
126-
Some(chalk_solve::rust_ir::WellKnownTrait::Clone)
128+
Some(Clone)
127129
} else if lang_items.drop_trait() == Some(def_id) {
128-
Some(chalk_solve::rust_ir::WellKnownTrait::Drop)
130+
Some(Drop)
129131
} else if lang_items.fn_trait() == Some(def_id) {
130-
Some(chalk_solve::rust_ir::WellKnownTrait::Fn)
132+
Some(Fn)
131133
} else if lang_items.fn_once_trait() == Some(def_id) {
132-
Some(chalk_solve::rust_ir::WellKnownTrait::FnOnce)
134+
Some(FnOnce)
133135
} else if lang_items.fn_mut_trait() == Some(def_id) {
134-
Some(chalk_solve::rust_ir::WellKnownTrait::FnMut)
136+
Some(FnMut)
135137
} else if lang_items.unsize_trait() == Some(def_id) {
136-
Some(chalk_solve::rust_ir::WellKnownTrait::Unsize)
138+
Some(Unsize)
137139
} else if lang_items.unpin_trait() == Some(def_id) {
138-
Some(chalk_solve::rust_ir::WellKnownTrait::Unpin)
140+
Some(Unpin)
139141
} else if lang_items.coerce_unsized_trait() == Some(def_id) {
140-
Some(chalk_solve::rust_ir::WellKnownTrait::CoerceUnsized)
142+
Some(CoerceUnsized)
143+
} else if lang_items.dispatch_from_dyn_trait() == Some(def_id) {
144+
Some(DispatchFromDyn)
141145
} else {
142146
None
143147
};
@@ -232,6 +236,28 @@ impl<'tcx> chalk_solve::RustIrDatabase<RustInterner<'tcx>> for RustIrDatabase<'t
232236
})
233237
}
234238

239+
fn adt_size_align(
240+
&self,
241+
adt_id: chalk_ir::AdtId<RustInterner<'tcx>>,
242+
) -> Arc<chalk_solve::rust_ir::AdtSizeAlign> {
243+
let tcx = self.interner.tcx;
244+
let did = adt_id.0.did();
245+
246+
// Grab the ADT and the param we might need to calculate its layout
247+
let param_env = tcx.param_env(did);
248+
let adt_ty = tcx.type_of(did);
249+
250+
// The ADT is a 1-zst if it's a ZST and its alignment is 1.
251+
// Mark the ADT as _not_ a 1-zst if there was a layout error.
252+
let one_zst = if let Ok(layout) = tcx.layout_of(param_env.and(adt_ty)) {
253+
layout.is_zst() && layout.align.abi.bytes() == 1
254+
} else {
255+
false
256+
};
257+
258+
Arc::new(chalk_solve::rust_ir::AdtSizeAlign::from_one_zst(one_zst))
259+
}
260+
235261
fn fn_def_datum(
236262
&self,
237263
fn_def_id: chalk_ir::FnDefId<RustInterner<'tcx>>,
@@ -540,6 +566,7 @@ impl<'tcx> chalk_solve::RustIrDatabase<RustInterner<'tcx>> for RustIrDatabase<'t
540566
Unpin => lang_items.unpin_trait(),
541567
CoerceUnsized => lang_items.coerce_unsized_trait(),
542568
DiscriminantKind => lang_items.discriminant_kind_trait(),
569+
DispatchFromDyn => lang_items.dispatch_from_dyn_trait(),
543570
};
544571
def_id.map(chalk_ir::TraitId)
545572
}

0 commit comments

Comments
 (0)