https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99368

--- Comment #3 from kargl at gcc dot gnu.org ---
Update patch to deal with the great *.c to *.cc rename event.  Patch passes
regression testing.

diff --git a/gcc/fortran/match.cc b/gcc/fortran/match.cc
index e7be7fddc64..c1920bc618d 100644
--- a/gcc/fortran/match.cc
+++ b/gcc/fortran/match.cc
@@ -5620,10 +5620,32 @@ gfc_match_namelist (void)
                  gfc_error_check ();
                }
              else
-               /* If the type is not set already, we set it here to the
-                  implicit default type.  It is not allowed to set it
-                  later to any other type.  */
-               gfc_set_default_type (sym, 0, gfc_current_ns);
+               {
+                 /* Before the symbol is given an implicit type, check to
+                    see if the symbol is already available in the namespace,
+                    possibly through host association.  Importantly, the
+                    symbol may be a user defined type.  */
+
+                 gfc_symbol *tmp;
+
+                 gfc_find_symbol (sym->name, NULL, 1, &tmp);
+                 if (tmp
+                     && tmp->attr.generic
+                     && (tmp = gfc_find_dt_in_generic (tmp)))
+                   {
+                     if (tmp->attr.flavor == FL_DERIVED)
+                       {
+                         gfc_error ("Derived type %qs at %L conflicts with "
+                                    "namelist object %qs at %C", 
+                                    tmp->name, &tmp->declared_at, sym->name);
+                         goto error;
+                       }
+                   }
+
+                 /* Set type of the symbol to its implicit default type.  It
is
+                    not allowed to set it later to any other type.  */
+                 gfc_set_default_type (sym, 0, gfc_current_ns);
+               }
            }
          if (sym->attr.in_namelist == 0
              && !gfc_add_in_namelist (&sym->attr, sym->name, NULL))

Reply via email to