https://gcc.gnu.org/g:68af48783006d7c51371b0e8634e82ef0256e4ab

commit r15-8388-g68af48783006d7c51371b0e8634e82ef0256e4ab
Author: Arthur Cohen <arthur.co...@embecosm.com>
Date:   Wed Mar 27 17:20:15 2024 +0100

    gccrs: nr2.0: default-visitor: Conditionally visit type in self parameters.
    
    This could trigger an assertions as `get_type` on `SelfParam` asserts that
    the self param does have a given type, which is not always the case.
    
    gcc/rust/ChangeLog:
    
            * resolve/rust-default-resolver.cc (DefaultResolver::visit): Do not
            visit self's type if it does not have one.

Diff:
---
 gcc/rust/resolve/rust-default-resolver.cc | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gcc/rust/resolve/rust-default-resolver.cc 
b/gcc/rust/resolve/rust-default-resolver.cc
index 89e7e39f5bb8..b2cdc5f52d2a 100644
--- a/gcc/rust/resolve/rust-default-resolver.cc
+++ b/gcc/rust/resolve/rust-default-resolver.cc
@@ -68,7 +68,10 @@ DefaultResolver::visit (AST::Function &function)
        else if (p->is_self ())
          {
            auto &param = static_cast<AST::SelfParam &> (*p);
-           param.get_type ().accept_vis (*this);
+
+           if (param.has_type ())
+             param.get_type ().accept_vis (*this);
+
            param.get_lifetime ().accept_vis (*this);
          }
        else

Reply via email to