From: badumbatish <tanghocle...@gmail.com>

gcc/rust/ChangeLog:

        * typecheck/rust-hir-type-check.h:
        Add pop guard for binder
---
 gcc/rust/typecheck/rust-hir-type-check.h | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/gcc/rust/typecheck/rust-hir-type-check.h 
b/gcc/rust/typecheck/rust-hir-type-check.h
index 3fcb32a6e38..fa49e0689f3 100644
--- a/gcc/rust/typecheck/rust-hir-type-check.h
+++ b/gcc/rust/typecheck/rust-hir-type-check.h
@@ -349,6 +349,8 @@ private:
     /** Only to be used by the guard. */
     void pop_binder () { binder_size_stack.pop (); }
 
+    bool binder_empty () { return binder_size_stack.empty (); }
+
     /**
      * Switch from resolving a function header to a function body.
      */
@@ -424,7 +426,8 @@ public:
     ~LifetimeResolverGuard ()
     {
       rust_assert (!ctx.lifetime_resolver_stack.empty ());
-      ctx.lifetime_resolver_stack.top ().pop_binder ();
+      if (!ctx.lifetime_resolver_stack.top ().binder_empty ())
+       ctx.lifetime_resolver_stack.top ().pop_binder ();
       if (kind == RESOLVER)
        {
          ctx.lifetime_resolver_stack.pop ();
-- 
2.45.2

Reply via email to