diff options
author | Philip Herron <philip.herron@embecosm.com> | 2022-01-21 20:49:55 +0000 |
---|---|---|
committer | Philip Herron <philip.herron@embecosm.com> | 2022-01-21 20:49:55 +0000 |
commit | d31c1bdaa8f0c08ec5517a0819b590e5650795ee (patch) | |
tree | 0083eece9d162144656805104ddd42cc40e87fac /gcc | |
parent | a6c5dbadc3c9023821244bd4af4e78ad9d8f63f2 (diff) | |
download | gcc-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.h | 15 | ||||
-rw-r--r-- | gcc/testsuite/rust/compile/method1.rs | 2 |
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 } } |