aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2022-01-21 20:49:55 +0000
committerPhilip Herron <philip.herron@embecosm.com>2022-01-21 20:49:55 +0000
commitd31c1bdaa8f0c08ec5517a0819b590e5650795ee (patch)
tree0083eece9d162144656805104ddd42cc40e87fac /gcc
parenta6c5dbadc3c9023821244bd4af4e78ad9d8f63f2 (diff)
downloadgcc-d31c1bdaa8f0c08ec5517a0819b590e5650795ee.zip
gcc-d31c1bdaa8f0c08ec5517a0819b590e5650795ee.tar.gz
gcc-d31c1bdaa8f0c08ec5517a0819b590e5650795ee.tar.bz2
Improve error message for failure in Method resolution
Use the locus for the method name segment and print its name as part of the error message improves the quality of the error handling in method resolution. Fixes #861
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-expr.h15
-rw-r--r--gcc/testsuite/rust/compile/method1.rs2
2 files changed, 5 insertions, 12 deletions
diff --git a/gcc/rust/typecheck/rust-hir-type-check-expr.h b/gcc/rust/typecheck/rust-hir-type-check-expr.h
index 1ac4946..0ac924f 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-expr.h
+++ b/gcc/rust/typecheck/rust-hir-type-check-expr.h
@@ -299,17 +299,10 @@ public:
= MethodResolution::Select (candidates, receiver_tyty, adjustments);
if (resolved_candidate == nullptr)
{
- if (candidates.size () > 1)
- {
- // not sure if this is the correct error here
- ReportMultipleCandidateError::Report (
- candidates, expr.get_method_name ().get_segment (),
- expr.get_method_name ().get_locus ());
- }
- else
- {
- rust_error_at (expr.get_locus (), "failed to resolve method");
- }
+ rust_error_at (
+ expr.get_method_name ().get_locus (),
+ "failed to resolve method for %<%s%>",
+ expr.get_method_name ().get_segment ().as_string ().c_str ());
return;
}
diff --git a/gcc/testsuite/rust/compile/method1.rs b/gcc/testsuite/rust/compile/method1.rs
index cce4ecf..1865240 100644
--- a/gcc/testsuite/rust/compile/method1.rs
+++ b/gcc/testsuite/rust/compile/method1.rs
@@ -8,6 +8,6 @@ pub fn main() {
a = Foo(123);
a.test();
- // { dg-error "failed to resolve method" "" { target *-*-* } .-1 }
+ // { dg-error "failed to resolve method for .test." "" { target *-*-* } .-1 }
// { dg-error {failed to type resolve expression} "" { target *-*-* } .-2 }
}