diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/interface.c | 14 |
2 files changed, 9 insertions, 11 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 86b0282..6446e95 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2007-01-21 Tobias Burnus <burnus@net-b.de> + + PR fortran/34901 + * interface.c (compare_parameter): Improved error message + for arguments of same type and mismatched kinds. + 2008-01-20 Paul Thomas <pault@gcc.gnu.org> PR fortran/34861 diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index 8b1f5db..ef63984 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -1470,18 +1470,10 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual, if ((actual->expr_type != EXPR_NULL || actual->ts.type != BT_UNKNOWN) && !gfc_compare_types (&formal->ts, &actual->ts)) { - if (where && actual->ts.type == BT_DERIVED - && formal->ts.type == BT_DERIVED) - gfc_error ("Type mismatch in argument '%s' at %L; passed type(%s) to " - "type(%s)", formal->name, &actual->where, - actual->ts.derived->name, formal->ts.derived->name); - else if (where) + if (where) gfc_error ("Type mismatch in argument '%s' at %L; passed %s to %s", - formal->name, &actual->where, - actual->ts.type == BT_DERIVED ? "derived type" - : gfc_basic_typename (actual->ts.type), - formal->ts.type == BT_DERIVED ? "derived type" - : gfc_basic_typename (formal->ts.type)); + formal->name, &actual->where, gfc_typename (&actual->ts), + gfc_typename (&formal->ts)); return 0; } |