mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-11 20:58:54 +00:00
Bump chalk
This commit is contained in:
parent
fa64817eab
commit
797cdb00d9
4 changed files with 35 additions and 28 deletions
16
Cargo.lock
generated
16
Cargo.lock
generated
|
@ -125,9 +125,9 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chalk-derive"
|
name = "chalk-derive"
|
||||||
version = "0.18.0"
|
version = "0.19.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "eea3a22f0c30b2504ac4ab58934dac0d00b92a4d7788df32795cabca24c3f929"
|
checksum = "654c611946ba2629c5028cb7708687af975faf2c29d731824cb294c873df4697"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -137,9 +137,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chalk-ir"
|
name = "chalk-ir"
|
||||||
version = "0.18.0"
|
version = "0.19.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fb617b643e145e3b151502799e91a9625dd5daf1cf05dc2cb821bc75ae0c9cbd"
|
checksum = "0a5341fbc654ca886b73b804a36aebf0e621057ccc1a68e9815b5b39b3ac9ae8"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chalk-derive",
|
"chalk-derive",
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
|
@ -147,9 +147,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chalk-recursive"
|
name = "chalk-recursive"
|
||||||
version = "0.18.0"
|
version = "0.19.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d280565c8eefbf9b2bc615df49c7dfd971faad37774bf65734e626fd23864bd6"
|
checksum = "4484807b155b5a411e6135d330295f9ba5042e2920b8712c6574ca6ea91e9ee5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chalk-derive",
|
"chalk-derive",
|
||||||
"chalk-ir",
|
"chalk-ir",
|
||||||
|
@ -160,9 +160,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "chalk-solve"
|
name = "chalk-solve"
|
||||||
version = "0.18.0"
|
version = "0.19.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "be906fbca3f3077dce0e76d9864771d0f450c946af0d86b569fb9504148a065a"
|
checksum = "281f82facd2538997fbe52132b1941ed213d266748215c31d15f62a8664429ad"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chalk-derive",
|
"chalk-derive",
|
||||||
"chalk-ir",
|
"chalk-ir",
|
||||||
|
|
|
@ -28,9 +28,9 @@ test_utils = { path = "../test_utils" }
|
||||||
|
|
||||||
scoped-tls = "1"
|
scoped-tls = "1"
|
||||||
|
|
||||||
chalk-solve = { version = "0.18.0" }
|
chalk-solve = { version = "0.19.0" }
|
||||||
chalk-ir = { version = "0.18.0" }
|
chalk-ir = { version = "0.19.0" }
|
||||||
chalk-recursive = { version = "0.18.0" }
|
chalk-recursive = { version = "0.19.0" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
expect = { path = "../expect" }
|
expect = { path = "../expect" }
|
||||||
|
|
|
@ -183,6 +183,7 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
|
||||||
.collect(),
|
.collect(),
|
||||||
1,
|
1,
|
||||||
),
|
),
|
||||||
|
where_clauses: make_binders(vec![], 0),
|
||||||
};
|
};
|
||||||
let num_vars = datas.num_binders;
|
let num_vars = datas.num_binders;
|
||||||
Arc::new(OpaqueTyDatum { opaque_ty_id: id, bound: make_binders(bound, num_vars) })
|
Arc::new(OpaqueTyDatum { opaque_ty_id: id, bound: make_binders(bound, num_vars) })
|
||||||
|
@ -193,15 +194,6 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
|
||||||
Ty::Unknown.to_chalk(self.db)
|
Ty::Unknown.to_chalk(self.db)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn force_impl_for(
|
|
||||||
&self,
|
|
||||||
_well_known: rust_ir::WellKnownTrait,
|
|
||||||
_ty: &chalk_ir::TyData<Interner>,
|
|
||||||
) -> Option<bool> {
|
|
||||||
// this method is mostly for rustc
|
|
||||||
None
|
|
||||||
}
|
|
||||||
|
|
||||||
fn is_object_safe(&self, _trait_id: chalk_ir::TraitId<Interner>) -> bool {
|
fn is_object_safe(&self, _trait_id: chalk_ir::TraitId<Interner>) -> bool {
|
||||||
// FIXME: implement actual object safety
|
// FIXME: implement actual object safety
|
||||||
true
|
true
|
||||||
|
@ -547,8 +539,13 @@ pub(crate) fn fn_def_datum_query(
|
||||||
),
|
),
|
||||||
where_clauses,
|
where_clauses,
|
||||||
};
|
};
|
||||||
let datum =
|
let datum = FnDefDatum {
|
||||||
FnDefDatum { id: fn_def_id, binders: make_binders(bound, sig.num_binders), abi: () };
|
id: fn_def_id,
|
||||||
|
abi: (),
|
||||||
|
safety: chalk_ir::Safety::Safe,
|
||||||
|
variadic: sig.value.is_varargs,
|
||||||
|
binders: make_binders(bound, sig.num_binders),
|
||||||
|
};
|
||||||
Arc::new(datum)
|
Arc::new(datum)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,11 +30,16 @@ impl ToChalk for Ty {
|
||||||
Ty::Apply(apply_ty) => match apply_ty.ctor {
|
Ty::Apply(apply_ty) => match apply_ty.ctor {
|
||||||
TypeCtor::Ref(m) => ref_to_chalk(db, m, apply_ty.parameters),
|
TypeCtor::Ref(m) => ref_to_chalk(db, m, apply_ty.parameters),
|
||||||
TypeCtor::Array => array_to_chalk(db, apply_ty.parameters),
|
TypeCtor::Array => array_to_chalk(db, apply_ty.parameters),
|
||||||
TypeCtor::FnPtr { num_args: _, is_varargs: _ } => {
|
TypeCtor::FnPtr { num_args: _, is_varargs } => {
|
||||||
// FIXME: handle is_varargs
|
|
||||||
let substitution = apply_ty.parameters.to_chalk(db).shifted_in(&Interner);
|
let substitution = apply_ty.parameters.to_chalk(db).shifted_in(&Interner);
|
||||||
chalk_ir::TyData::Function(chalk_ir::Fn { num_binders: 0, substitution })
|
chalk_ir::TyData::Function(chalk_ir::FnPointer {
|
||||||
.intern(&Interner)
|
num_binders: 0,
|
||||||
|
abi: (),
|
||||||
|
safety: chalk_ir::Safety::Safe,
|
||||||
|
variadic: is_varargs,
|
||||||
|
substitution,
|
||||||
|
})
|
||||||
|
.intern(&Interner)
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
let name = apply_ty.ctor.to_chalk(db);
|
let name = apply_ty.ctor.to_chalk(db);
|
||||||
|
@ -118,7 +123,12 @@ impl ToChalk for Ty {
|
||||||
let parameters = from_chalk(db, opaque_ty.substitution);
|
let parameters = from_chalk(db, opaque_ty.substitution);
|
||||||
Ty::Opaque(OpaqueTy { opaque_ty_id: impl_trait_id, parameters })
|
Ty::Opaque(OpaqueTy { opaque_ty_id: impl_trait_id, parameters })
|
||||||
}
|
}
|
||||||
chalk_ir::TyData::Function(chalk_ir::Fn { num_binders, substitution }) => {
|
chalk_ir::TyData::Function(chalk_ir::FnPointer {
|
||||||
|
num_binders,
|
||||||
|
variadic,
|
||||||
|
substitution,
|
||||||
|
..
|
||||||
|
}) => {
|
||||||
assert_eq!(num_binders, 0);
|
assert_eq!(num_binders, 0);
|
||||||
let parameters: Substs = from_chalk(
|
let parameters: Substs = from_chalk(
|
||||||
db,
|
db,
|
||||||
|
@ -127,7 +137,7 @@ impl ToChalk for Ty {
|
||||||
Ty::Apply(ApplicationTy {
|
Ty::Apply(ApplicationTy {
|
||||||
ctor: TypeCtor::FnPtr {
|
ctor: TypeCtor::FnPtr {
|
||||||
num_args: (parameters.len() - 1) as u16,
|
num_args: (parameters.len() - 1) as u16,
|
||||||
is_varargs: false,
|
is_varargs: variadic,
|
||||||
},
|
},
|
||||||
parameters,
|
parameters,
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue