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 trait_def_id = trait_ref.trait_def_id().unwrap();
|
||||
let Some(trait_def_id) = trait_ref.trait_def_id() else {
|
||||
return tcx.ty_error_with_message(DUMMY_SP, "Could not find trait");
|
||||
};
|
||||
let assoc_items = tcx.associated_items(trait_def_id);
|
||||
let assoc_item = assoc_items.find_by_name_and_kind(
|
||||
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