Upgrade Chalk

Fixes #4072.
This commit is contained in:
Florian Diebold 2020-05-29 16:49:52 +02:00
parent 190a0595a4
commit ab28f6c249
3 changed files with 56 additions and 22 deletions

20
Cargo.lock generated
View File

@ -111,18 +111,10 @@ version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
[[package]]
name = "chalk-base"
version = "0.10.1-dev"
source = "git+https://github.com/rust-lang/chalk.git?rev=5a3b871ca17529ab5aa5787594fabad1634936cb#5a3b871ca17529ab5aa5787594fabad1634936cb"
dependencies = [
"lazy_static",
]
[[package]]
name = "chalk-derive"
version = "0.10.1-dev"
source = "git+https://github.com/rust-lang/chalk.git?rev=5a3b871ca17529ab5aa5787594fabad1634936cb#5a3b871ca17529ab5aa5787594fabad1634936cb"
source = "git+https://github.com/rust-lang/chalk.git?rev=329b7f3fdd2431ed6f6778cde53f22374c7d094c#329b7f3fdd2431ed6f6778cde53f22374c7d094c"
dependencies = [
"proc-macro2",
"quote",
@ -133,9 +125,8 @@ dependencies = [
[[package]]
name = "chalk-engine"
version = "0.10.1-dev"
source = "git+https://github.com/rust-lang/chalk.git?rev=5a3b871ca17529ab5aa5787594fabad1634936cb#5a3b871ca17529ab5aa5787594fabad1634936cb"
source = "git+https://github.com/rust-lang/chalk.git?rev=329b7f3fdd2431ed6f6778cde53f22374c7d094c#329b7f3fdd2431ed6f6778cde53f22374c7d094c"
dependencies = [
"chalk-base",
"chalk-derive",
"chalk-ir",
"rustc-hash",
@ -144,18 +135,17 @@ dependencies = [
[[package]]
name = "chalk-ir"
version = "0.10.1-dev"
source = "git+https://github.com/rust-lang/chalk.git?rev=5a3b871ca17529ab5aa5787594fabad1634936cb#5a3b871ca17529ab5aa5787594fabad1634936cb"
source = "git+https://github.com/rust-lang/chalk.git?rev=329b7f3fdd2431ed6f6778cde53f22374c7d094c#329b7f3fdd2431ed6f6778cde53f22374c7d094c"
dependencies = [
"chalk-base",
"chalk-derive",
"lazy_static",
]
[[package]]
name = "chalk-solve"
version = "0.10.1-dev"
source = "git+https://github.com/rust-lang/chalk.git?rev=5a3b871ca17529ab5aa5787594fabad1634936cb#5a3b871ca17529ab5aa5787594fabad1634936cb"
source = "git+https://github.com/rust-lang/chalk.git?rev=329b7f3fdd2431ed6f6778cde53f22374c7d094c#329b7f3fdd2431ed6f6778cde53f22374c7d094c"
dependencies = [
"chalk-base",
"chalk-derive",
"chalk-engine",
"chalk-ir",

View File

@ -27,8 +27,8 @@ test_utils = { path = "../test_utils" }
scoped-tls = "1"
chalk-solve = { git = "https://github.com/rust-lang/chalk.git", rev = "5a3b871ca17529ab5aa5787594fabad1634936cb" }
chalk-ir = { git = "https://github.com/rust-lang/chalk.git", rev = "5a3b871ca17529ab5aa5787594fabad1634936cb" }
chalk-solve = { git = "https://github.com/rust-lang/chalk.git", rev = "329b7f3fdd2431ed6f6778cde53f22374c7d094c" }
chalk-ir = { git = "https://github.com/rust-lang/chalk.git", rev = "329b7f3fdd2431ed6f6778cde53f22374c7d094c" }
[dev-dependencies]
insta = "0.16.0"

View File

@ -2665,7 +2665,6 @@ fn test() {
Enum::Variant.test();
}
"#, true),
// wrong result, because the built-in Copy impl for fn defs doesn't exist in Chalk yet
@r###"
42..44 '{}': ()
61..62 'T': {unknown}
@ -2674,13 +2673,13 @@ fn test() {
146..150 'self': &Self
202..282 '{ ...t(); }': ()
208..211 'foo': fn foo()
208..218 'foo.test()': {unknown}
208..218 'foo.test()': bool
224..227 'bar': fn bar<{unknown}>({unknown}) -> {unknown}
224..234 'bar.test()': {unknown}
224..234 'bar.test()': bool
240..246 'Struct': Struct(usize) -> Struct
240..253 'Struct.test()': {unknown}
240..253 'Struct.test()': bool
259..272 'Enum::Variant': Variant(usize) -> Enum
259..279 'Enum::...test()': {unknown}
259..279 'Enum::...test()': bool
"###
);
}
@ -2754,3 +2753,48 @@ fn test() {
"###
);
}
#[test]
fn integer_range_iterate() {
let t = type_at(
r#"
//- /main.rs crate:main deps:std
fn test() {
for x in 0..100 { x<|>; }
}
//- /std.rs crate:std
pub mod ops {
pub struct Range<Idx> {
pub start: Idx,
pub end: Idx,
}
}
pub mod iter {
pub trait Iterator {
type Item;
}
pub trait IntoIterator {
type Item;
type IntoIter: Iterator<Item = Self::Item>;
}
impl<T> IntoIterator for T where T: Iterator {
type Item = <T as Iterator>::Item;
type IntoIter = Self;
}
}
trait Step {}
impl Step for i32 {}
impl Step for i64 {}
impl<A: Step> iter::Iterator for ops::Range<A> {
type Item = A;
}
"#,
);
assert_eq!(t, "i32");
}