aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2006-12-20 13:48:06 +0000
committerPaul Thomas <pault@gcc.gnu.org>2006-12-20 13:48:06 +0000
commit71f77fd790b55c7d6b831d76665bdf26a65fad2b (patch)
tree006a73693cd6f5f41909b3e2d5aff9801697221d /gcc/fortran/resolve.c
parent0550e7b7aa95d5edd861932b4301a659266f0d0a (diff)
downloadgcc-71f77fd790b55c7d6b831d76665bdf26a65fad2b.zip
gcc-71f77fd790b55c7d6b831d76665bdf26a65fad2b.tar.gz
gcc-71f77fd790b55c7d6b831d76665bdf26a65fad2b.tar.bz2
re PR fortran/29992 ([4.1 only] INTERFACE equivalent to MODULE PROCEDURE?!)
2006-12-20 Paul Thomas <pault@gcc.gnu.org> PR fortran/29992 * interface.c (check_sym_interfaces): Module procedures in a generic must be use associated or contained in the module. * decl.c (gfc_match_modproc): Set attribute mod_proc. * gfortran.h (symbol_attribute): Add mod_proc atribute. PR fortran/30081 * resolve.c (resolve_generic_f, resolve_generic_s): Use gfc_intrinsic_name to find out if the function is intrinsic because it does not have to be a generic intrinsic to be overloaded. 2006-12-20 Paul Thomas <pault@gcc.gnu.org> PR fortran/29992 * gfortran.dg/generic_9.f90: New test. PR fortran/30081 * gfortran.dg/generic_10.f90: New test. From-SVN: r120072
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r--gcc/fortran/resolve.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index 33ef748..519d92ab 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1215,9 +1215,9 @@ generic:
goto generic;
}
- /* Last ditch attempt. */
-
- if (!gfc_generic_intrinsic (expr->symtree->n.sym->name))
+ /* Last ditch attempt. See if the reference is to an intrinsic
+ that possesses a matching interface. 14.1.2.4 */
+ if (!gfc_intrinsic_name (sym->name, 0))
{
gfc_error ("There is no specific function for the generic '%s' at %L",
expr->symtree->n.sym->name, &expr->where);
@@ -1675,9 +1675,11 @@ generic:
goto generic;
}
- /* Last ditch attempt. */
+ /* Last ditch attempt. See if the reference is to an intrinsic
+ that possesses a matching interface. 14.1.2.4 */
sym = c->symtree->n.sym;
- if (!gfc_generic_intrinsic (sym->name))
+
+ if (!gfc_intrinsic_name (sym->name, 1))
{
gfc_error
("There is no specific subroutine for the generic '%s' at %L",