[COMMITTED] gccrs: Unit structs are not concrete when they need substitutions

Message ID 20230131132550.662527-1-arthur.cohen@embecosm.com
State Committed
Commit 0fffc0e772d612d5c6ad72a632ac80b43eca1950
Headers
Series [COMMITTED] gccrs: Unit structs are not concrete when they need substitutions |

Commit Message

Arthur Cohen Jan. 31, 2023, 1:25 p.m. UTC
  From: Philip Herron <philip.herron@embecosm.com>

Fixes #1518

gcc/rust/ChangeLog:

	* typecheck/rust-tyty.h: Fix `is_concrete` for unit types with
	substitutions.

Tested on x86_64-pc-linux-gnu, committed on master.

---
 gcc/rust/typecheck/rust-tyty.h | 5 +++++
 1 file changed, 5 insertions(+)
  

Patch

diff --git a/gcc/rust/typecheck/rust-tyty.h b/gcc/rust/typecheck/rust-tyty.h
index 24efc7aa54c..43460d2dd2f 100644
--- a/gcc/rust/typecheck/rust-tyty.h
+++ b/gcc/rust/typecheck/rust-tyty.h
@@ -1362,6 +1362,11 @@  public:
 
   bool is_concrete () const override final
   {
+    if (is_unit ())
+      {
+	return !needs_substitution ();
+      }
+
     for (auto &variant : variants)
       {
 	for (auto &field : variant->get_fields ())