aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/intrinsic.c
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2006-12-31 06:55:16 +0000
committerPaul Thomas <pault@gcc.gnu.org>2006-12-31 06:55:16 +0000
commit7fcafa718da6cb8e072bcadde5eab440df5898d0 (patch)
tree6103da430695e877961c11f0de7a098d90d6f0c2 /gcc/fortran/intrinsic.c
parente7e9c63d558d1e7a564d7542038615b980710272 (diff)
downloadgcc-7fcafa718da6cb8e072bcadde5eab440df5898d0.zip
gcc-7fcafa718da6cb8e072bcadde5eab440df5898d0.tar.gz
gcc-7fcafa718da6cb8e072bcadde5eab440df5898d0.tar.bz2
re PR fortran/23060 (%VAL, %REF and %DESCR constructs not implemented)
2006-12-31 Paul Thomas <pault@gcc.gnu.org> PR fortran/23060 * intrinsic.c (compare_actual_formal ): Distinguish argument list functions from keywords. * intrinsic.c (sort_actual): If formal is NULL, the presence of an argument list function actual is an error. * trans-expr.c (conv_arglist_function) : New function to implement argument list functions %VAL, %REF and %LOC. (gfc_conv_function_call): Call it. * resolve.c (resolve_actual_arglist): Add arg ptype and check argument list functions. (resolve_function, resolve_call): Set value of ptype before calls to resolve_actual_arglist. * primary.c (match_arg_list_function): New function. (gfc_match_actual_arglist): Call it before trying for a keyword argument. 2006-12-31 Paul Thomas <pault@gcc.gnu.org> PR fortran/23060 * gfortran.dg/c_by_val.c: Called by c_by_val_1.f. * gfortran.dg/c_by_val_1.f: New test. * gfortran.dg/c_by_val_2.f: New test. * gfortran.dg/c_by_val_3.f: New test. From-SVN: r120295
Diffstat (limited to 'gcc/fortran/intrinsic.c')
-rw-r--r--gcc/fortran/intrinsic.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gcc/fortran/intrinsic.c b/gcc/fortran/intrinsic.c
index 2ed4291..5cdf80d 100644
--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -2864,7 +2864,11 @@ keywords:
if (f == NULL)
{
- gfc_error ("Can't find keyword named '%s' in call to '%s' at %L",
+ if (a->name[0] == '%')
+ gfc_error ("Argument list function at %L is not allowed in this "
+ "context", where);
+ else
+ gfc_error ("Can't find keyword named '%s' in call to '%s' at %L",
a->name, name, where);
return FAILURE;
}