aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorJanus Weil <janus@gcc.gnu.org>2014-12-27 23:40:21 +0100
committerJanus Weil <janus@gcc.gnu.org>2014-12-27 23:40:21 +0100
commitc19a00337aa1cd579cb51ce5aa71a81261b97fe3 (patch)
treef236c561664ad5e7b935c8e3abb09856fcc8631d /gcc/fortran/resolve.c
parent2e4aa0a5016c595477c0638765b6ceef8e0fb3c0 (diff)
downloadgcc-c19a00337aa1cd579cb51ce5aa71a81261b97fe3.zip
gcc-c19a00337aa1cd579cb51ce5aa71a81261b97fe3.tar.gz
gcc-c19a00337aa1cd579cb51ce5aa71a81261b97fe3.tar.bz2
re PR fortran/54756 ([OOP] [F08] Should reject CLASS, intent(out) in PURE procedures)
2014-12-27 Janus Weil <janus@gcc.gnu.org> PR fortran/54756 * resolve.c (resolve_formal_arglist): Reject polymorphic INTENT(OUT) arguments of pure procedures. 2014-12-27 Janus Weil <janus@gcc.gnu.org> PR fortran/54756 * gfortran.dg/class_array_3.f03: Fixed invalid test case. * gfortran.dg/class_array_7.f03: Ditto. * gfortran.dg/class_dummy_4.f03: Ditto. * gfortran.dg/defined_assignment_3.f90: Ditto. * gfortran.dg/defined_assignment_5.f90: Ditto. * gfortran.dg/elemental_subroutine_10.f90: Ditto. * gfortran.dg/typebound_operator_4.f03: Ditto. * gfortran.dg/typebound_proc_16.f03: Ditto. * gfortran.dg/unlimited_polymorphic_19.f90: Ditto. * gfortran.dg/class_dummy_5.f90: New test. From-SVN: r219085
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 3b8b869..05a948b 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -414,6 +414,15 @@ resolve_formal_arglist (gfc_symbol *proc)
&sym->declared_at);
}
}
+
+ /* F08:C1278a. */
+ if (sym->ts.type == BT_CLASS && sym->attr.intent == INTENT_OUT)
+ {
+ gfc_error ("INTENT(OUT) argument '%s' of pure procedure %qs at %L"
+ " may not be polymorphic", sym->name, proc->name,
+ &sym->declared_at);
+ continue;
+ }
}
if (proc->attr.implicit_pure)