Fix ICE if no trait assoc const eq
This commit is contained in:
parent
56cd04af5c
commit
6bc28c82c4
3 changed files with 79 additions and 2 deletions
|
@ -508,8 +508,9 @@ pub(super) fn type_of(tcx: TyCtxt<'_>, def_id: DefId) -> Ty<'_> {
|
||||||
})
|
})
|
||||||
}) =>
|
}) =>
|
||||||
{
|
{
|
||||||
// FIXME(associated_const_equality) when does this unwrap fail? I have no idea what case it would.
|
let Some(trait_def_id) = trait_ref.trait_def_id() else {
|
||||||
let trait_def_id = trait_ref.trait_def_id().unwrap();
|
return tcx.ty_error_with_message(DUMMY_SP, "Could not find trait");
|
||||||
|
};
|
||||||
let assoc_items = tcx.associated_items(trait_def_id);
|
let assoc_items = tcx.associated_items(trait_def_id);
|
||||||
let assoc_item = assoc_items.find_by_name_and_kind(
|
let assoc_item = assoc_items.find_by_name_and_kind(
|
||||||
tcx, binding.ident, ty::AssocKind::Const, def_id.to_def_id(),
|
tcx, binding.ident, ty::AssocKind::Const, def_id.to_def_id(),
|
||||||
|
|
10
src/test/ui/associated-consts/issue-93835.rs
Normal file
10
src/test/ui/associated-consts/issue-93835.rs
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
fn e() {
|
||||||
|
p:a<p:p<e=6>>
|
||||||
|
//~^ ERROR comparison operators
|
||||||
|
//~| ERROR cannot find value
|
||||||
|
//~| ERROR associated const equality
|
||||||
|
//~| ERROR associated const equality
|
||||||
|
//~| ERROR associated type bounds
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
66
src/test/ui/associated-consts/issue-93835.stderr
Normal file
66
src/test/ui/associated-consts/issue-93835.stderr
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
error: comparison operators cannot be chained
|
||||||
|
--> $DIR/issue-93835.rs:2:8
|
||||||
|
|
|
||||||
|
LL | fn e() {
|
||||||
|
| - while parsing this struct
|
||||||
|
LL | p:a<p:p<e=6>>
|
||||||
|
| ^ ^
|
||||||
|
|
|
||||||
|
= help: use `::<...>` instead of `<...>` to specify lifetime, type, or const arguments
|
||||||
|
= help: or use `(...)` if you meant to specify fn arguments
|
||||||
|
|
||||||
|
error[E0425]: cannot find value `p` in this scope
|
||||||
|
--> $DIR/issue-93835.rs:2:5
|
||||||
|
|
|
||||||
|
LL | p:a<p:p<e=6>>
|
||||||
|
| ^ not found in this scope
|
||||||
|
|
|
||||||
|
help: you might have meant to write a `struct` literal
|
||||||
|
|
|
||||||
|
LL ~ fn e() { SomeStruct {
|
||||||
|
LL | p:a<p:p<e=6>>
|
||||||
|
LL |
|
||||||
|
LL |
|
||||||
|
LL |
|
||||||
|
LL |
|
||||||
|
...
|
||||||
|
help: maybe you meant to write a path separator here
|
||||||
|
|
|
||||||
|
LL | p::a<p:p<e=6>>
|
||||||
|
| ~~
|
||||||
|
help: maybe you meant to write an assignment here
|
||||||
|
|
|
||||||
|
LL | let p:a<p:p<e=6>>
|
||||||
|
| ~~~~~
|
||||||
|
|
||||||
|
error[E0658]: associated const equality is incomplete
|
||||||
|
--> $DIR/issue-93835.rs:2:13
|
||||||
|
|
|
||||||
|
LL | p:a<p:p<e=6>>
|
||||||
|
| ^^^
|
||||||
|
|
|
||||||
|
= note: see issue #92827 <https://github.com/rust-lang/rust/issues/92827> for more information
|
||||||
|
= help: add `#![feature(associated_const_equality)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error[E0658]: associated const equality is incomplete
|
||||||
|
--> $DIR/issue-93835.rs:2:13
|
||||||
|
|
|
||||||
|
LL | p:a<p:p<e=6>>
|
||||||
|
| ^^^
|
||||||
|
|
|
||||||
|
= note: see issue #92827 <https://github.com/rust-lang/rust/issues/92827> for more information
|
||||||
|
= help: add `#![feature(associated_const_equality)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error[E0658]: associated type bounds are unstable
|
||||||
|
--> $DIR/issue-93835.rs:2:9
|
||||||
|
|
|
||||||
|
LL | p:a<p:p<e=6>>
|
||||||
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
|
||||||
|
= help: add `#![feature(associated_type_bounds)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error: aborting due to 5 previous errors
|
||||||
|
|
||||||
|
Some errors have detailed explanations: E0425, E0658.
|
||||||
|
For more information about an error, try `rustc --explain E0425`.
|
Loading…
Add table
Add a link
Reference in a new issue