re PR fortran/34660 (elemental and dummy procedure)
authorTobias Burnus <burnus@net-b.de>
Sun, 6 Jan 2008 09:18:43 +0000 (10:18 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Sun, 6 Jan 2008 09:18:43 +0000 (10:18 +0100)
2008-01-06  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34660
        * resolve.c (resolve_formal_arglist): Reject dummy procedure in
        ELEMENTAL functions.

2008-01-06  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34660
        * gfortran.dg/elemental_args_check_2.f90: New.

From-SVN: r131349

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/elemental_args_check_2.f90 [new file with mode: 0644]

index 43d7519..950a0ee 100644 (file)
@@ -1,5 +1,11 @@
 2008-01-06  Tobias Burnus  <burnus@net-b.de>
 
+       PR fortran/34660
+       * resolve.c (resolve_formal_arglist): Reject dummy procedure in
+       ELEMENTAL functions.
+
+2008-01-06  Tobias Burnus  <burnus@net-b.de>
+
        PR fortran/34662
        * interface.c (compare_actual_formal): Reject parameter
        actual to intent(out) dummy.
index 8fc679d..e4f7dcb 100644 (file)
@@ -225,6 +225,14 @@ resolve_formal_arglist (gfc_symbol *proc)
                         &sym->declared_at);
              continue;
            }
+
+         if (sym->attr.flavor == FL_PROCEDURE)
+           {
+             gfc_error ("Dummy procedure '%s' not allowed in elemental "
+                        "procedure '%s' at %L", sym->name, proc->name,
+                        &sym->declared_at);
+             continue;
+           }
        }
 
       /* Each dummy shall be specified to be scalar.  */
index 5cecf06..5036598 100644 (file)
@@ -1,5 +1,10 @@
 2008-01-06  Tobias Burnus  <burnus@net-b.de>
 
+       PR fortran/34660
+       * gfortran.dg/elemental_args_check_2.f90: New.
+
+2008-01-06  Tobias Burnus  <burnus@net-b.de>
+
        PR fortran/34662
        * gfortran.dg/intent_out_3.f90: New.
 
diff --git a/gcc/testsuite/gfortran.dg/elemental_args_check_2.f90 b/gcc/testsuite/gfortran.dg/elemental_args_check_2.f90
new file mode 100644 (file)
index 0000000..51e69a4
--- /dev/null
@@ -0,0 +1,19 @@
+! { dg-do compile }
+!
+! PR fortran/34660
+!
+! Check for elemental constrain C1277 (F2003).
+! Contributed by Joost VandeVondele.
+!
+MODULE M1
+IMPLICIT NONE
+CONTAINS
+ PURE ELEMENTAL SUBROUTINE S1(I,F)
+   INTEGER, INTENT(IN) :: I
+   INTERFACE
+     PURE INTEGER FUNCTION F(I) ! { dg-error "Dummy procedure 'f' not allowed in elemental procedure" }
+      INTEGER, INTENT(IN) :: I
+     END FUNCTION F
+   END INTERFACE
+ END SUBROUTINE S1
+END MODULE M1