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

View File

@ -106,10 +106,10 @@ arrayvec = "0.7.4"
bitflags = "2.4.1"
cargo_metadata = "0.18.1"
camino = "1.1.6"
chalk-solve = { version = "0.98.0", default-features = false }
chalk-ir = "0.98.0"
chalk-recursive = { version = "0.98.0", default-features = false }
chalk-derive = "0.98.0"
chalk-solve = { version = "0.99.0", default-features = false }
chalk-ir = "0.99.0"
chalk-recursive = { version = "0.99.0", default-features = false }
chalk-derive = "0.99.0"
crossbeam-channel = "0.5.8"
dissimilar = "1.0.7"
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]
fn return_no_value() {
check_diagnostics_with_disabled(