diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2006-12-20 13:48:06 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2006-12-20 13:48:06 +0000 |
commit | 71f77fd790b55c7d6b831d76665bdf26a65fad2b (patch) | |
tree | 006a73693cd6f5f41909b3e2d5aff9801697221d /gcc/fortran/resolve.c | |
parent | 0550e7b7aa95d5edd861932b4301a659266f0d0a (diff) | |
download | gcc-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.c | 12 |
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", |