Merge pull request #18944 from WaffleLapkin/trait_upcast_chalk

update chalk, fixing trait upcasting
This commit is contained in:
Laurențiu Nicola 2025-01-16 06:55:38 +00:00 committed by GitHub
commit c65690627f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 43 additions and 12 deletions

16
Cargo.lock generated
View File

@ -194,9 +194,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]] [[package]]
name = "chalk-derive" name = "chalk-derive"
version = "0.98.0" version = "0.99.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9426c8fd0fe61c3da880b801d3b510524df17843a8f9ec1f5b9cec24fb7412df" checksum = "572583d9b97f9d277e5c7607f8239a30e2e04d3ed3b47c87d1cb2152ae724073"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -206,9 +206,9 @@ dependencies = [
[[package]] [[package]]
name = "chalk-ir" name = "chalk-ir"
version = "0.98.0" version = "0.99.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5f2eb1cd6054da221bd1ac0197fb2fe5e2caf3dcb93619398fc1433f8f09093" checksum = "e60e0ef9c81dce1336a9ed3c76f08775f5b623151d96d85ba45f7b10de76d1c7"
dependencies = [ dependencies = [
"bitflags 2.7.0", "bitflags 2.7.0",
"chalk-derive", "chalk-derive",
@ -216,9 +216,9 @@ dependencies = [
[[package]] [[package]]
name = "chalk-recursive" name = "chalk-recursive"
version = "0.98.0" version = "0.99.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "129dc03458f71cfb9c3cd621c9c68166a94e87b85b16ccd29af015d7ff9a1c61" checksum = "5a06350d614e22b03a69b8105e3541614450a7ea48bc58ecc6c6bd92731a3995"
dependencies = [ dependencies = [
"chalk-derive", "chalk-derive",
"chalk-ir", "chalk-ir",
@ -229,9 +229,9 @@ dependencies = [
[[package]] [[package]]
name = "chalk-solve" name = "chalk-solve"
version = "0.98.0" version = "0.99.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7e8a8c1e928f98cdf227b868416ef21dcd8cc3c61b347576d783713444d41c8" checksum = "0e428761e9b55bee516bfe2457caed8b6d1b86353f92ae825bbe438a36ce91e8"
dependencies = [ dependencies = [
"chalk-derive", "chalk-derive",
"chalk-ir", "chalk-ir",

View File

@ -106,10 +106,10 @@ arrayvec = "0.7.4"
bitflags = "2.4.1" bitflags = "2.4.1"
cargo_metadata = "0.18.1" cargo_metadata = "0.18.1"
camino = "1.1.6" camino = "1.1.6"
chalk-solve = { version = "0.98.0", default-features = false } chalk-solve = { version = "0.99.0", default-features = false }
chalk-ir = "0.98.0" chalk-ir = "0.99.0"
chalk-recursive = { version = "0.98.0", default-features = false } chalk-recursive = { version = "0.99.0", default-features = false }
chalk-derive = "0.98.0" chalk-derive = "0.99.0"
crossbeam-channel = "0.5.8" crossbeam-channel = "0.5.8"
dissimilar = "1.0.7" dissimilar = "1.0.7"
dot = "0.1.4" dot = "0.1.4"

View File

@ -1163,6 +1163,37 @@ struct Bar {
); );
} }
#[test]
fn trait_upcast_ok() {
check_diagnostics(
r#"
//- minicore: coerce_unsized
trait A: B {}
trait B {}
fn test(a: &dyn A) -> &dyn B {
a
}
"#,
);
}
#[test]
fn trait_upcast_err() {
check_diagnostics(
r#"
//- minicore: coerce_unsized
trait A {} // `A` does not have `B` as a supertrait, so no upcast :c
trait B {}
fn test(a: &dyn A) -> &dyn B {
a
//^ error: expected &dyn B, found &dyn A
}
"#,
);
}
#[test] #[test]
fn return_no_value() { fn return_no_value() {
check_diagnostics_with_disabled( check_diagnostics_with_disabled(