From f9a8ce88cb3bfe68c370ddb7bd0292b832c35d4e Mon Sep 17 00:00:00 2001 From: Muhammad Mahad Date: Fri, 19 Jul 2024 13:42:03 +0000 Subject: gccrs: [E0576] Associated `item` not found in given `type` gcc/rust/ChangeLog: * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): Add rich error message and error code similiar to rustc with associaed type and trait name gcc/testsuite/ChangeLog: * rust/compile/unknown-associated-item.rs: New test. Signed-off-by: Muhammad Mahad --- gcc/rust/typecheck/rust-hir-type-check-type.cc | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'gcc/rust') diff --git a/gcc/rust/typecheck/rust-hir-type-check-type.cc b/gcc/rust/typecheck/rust-hir-type-check-type.cc index 2a3e35c..f7ae8cc 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-type.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-type.cc @@ -220,7 +220,17 @@ TypeCheckType::visit (HIR::QualifiedPathInType &path) = specified_bound.lookup_associated_item (item_seg_identifier.as_string ()); if (item.is_error ()) { - rust_error_at (item_seg->get_locus (), "unknown associated item"); + std::string item_seg_ident_name, rich_msg; + item_seg_ident_name = qual_path_type.get_trait ()->as_string (); + rich_msg = "not found in `" + item_seg_ident_name + "`"; + + rich_location richloc (line_table, item_seg->get_locus ()); + richloc.add_fixit_replace (rich_msg.c_str ()); + + rust_error_at (richloc, ErrorCode::E0576, + "cannot find associated type %qs in trait %qs", + item_seg_identifier.as_string ().c_str (), + item_seg_ident_name.c_str ()); return; } -- cgit v1.1