From ebac6d9cb9f255b379fffcff4ba871d5b74d39d7 Mon Sep 17 00:00:00 2001 From: Daniel Kraft Date: Fri, 5 Sep 2008 13:56:23 +0200 Subject: re PR fortran/36746 (Rejects variable which is implictly typed as derived typed with DIMENSION) 2008-09-05 Daniel Kraft PR fortran/36746 * primary.c (gfc_match_rvalue): Removed logic to handle implicit typing to a derived-type if a component reference is found. (gfc_match_varspec): Moved it here. 2008-09-05 Daniel Kraft PR fortran/36746 * gfortran.dg/implicit_derived_type_1.f90: New test. * gfortran.dg/used_before_typed_5.f90: New test. From-SVN: r140034 --- gcc/fortran/ChangeLog | 7 +++++++ gcc/fortran/primary.c | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'gcc/fortran') diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 459aeb9..d9c65ff 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2008-09-05 Daniel Kraft + + PR fortran/36746 + * primary.c (gfc_match_rvalue): Removed logic to handle implicit + typing to a derived-type if a component reference is found. + (gfc_match_varspec): Moved it here. + 2008-09-04 Richard Guenther * trans-array.c (gfc_conv_array_parameter): Use correct types diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index 6689443..04c24eb7 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -1745,6 +1745,10 @@ gfc_match_varspec (gfc_expr *primary, int equiv_flag, bool sub_flag) if (equiv_flag) return MATCH_YES; + if (sym->ts.type == BT_UNKNOWN && gfc_peek_ascii_char () == '%' + && gfc_get_default_type (sym, sym->ns)->type == BT_DERIVED) + gfc_set_default_type (sym, 0, sym->ns); + if (sym->ts.type != BT_DERIVED || gfc_match_char ('%') != MATCH_YES) goto check_substring; @@ -2434,10 +2438,6 @@ gfc_match_rvalue (gfc_expr **result) { case FL_VARIABLE: variable: - if (sym->ts.type == BT_UNKNOWN && gfc_peek_ascii_char () == '%' - && gfc_get_default_type (sym, sym->ns)->type == BT_DERIVED) - gfc_set_default_type (sym, 0, sym->ns); - e = gfc_get_expr (); e->expr_type = EXPR_VARIABLE; -- cgit v1.1