]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
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 43d7519d13af00582a6a84ef4e04095cd36a2eda..950a0ee4564e6ec35008884a24133b456897505b 100644 (file)
@@ -1,3 +1,9 @@
+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
index 8fc679d91454cb28f50c4d4a0c244295bf17f563..e4f7dcbac4aad914d56b717b002ad273a4d348c7 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 5cecf0642e653bc577535a29626293d756bc47c0..5036598e1407c18b4ba87e3919158488d50da644 100644 (file)
@@ -1,3 +1,8 @@
+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
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