------- Comment #1 from janus at gcc dot gnu dot org  2009-11-22 13:46 -------
Draft patch:

Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c       (revision 154423)
+++ gcc/fortran/resolve.c       (working copy)
@@ -7035,6 +7035,14 @@ resolve_select_type (gfc_code *code)
              for (c1 = &class_is; (*c1) && (*c1)->block; c1 = &((*c1)->block))
                {
                  c2 = (*c1)->block;
+                 /* F03:C817 (check for doubles).  */
+                 if ((*c1)->ext.case_list->ts.u.derived->hash_value
+                     == c2->ext.case_list->ts.u.derived->hash_value)
+                   {
+                     gfc_error ("Double CLASS IS block in SELECT TYPE "
+                                "statement at %L", &c2->ext.case_list->where);
+                     return;
+                   }
                  if ((*c1)->ext.case_list->ts.u.derived->attr.extension
                      < c2->ext.case_list->ts.u.derived->attr.extension)
                    {


-- 

janus at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|unassigned at gcc dot gnu   |janus at gcc dot gnu dot org
                   |dot org                     |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2009-11-22 13:46:59
               date|                            |


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42053

Reply via email to