re PR fortran/32095 (Accepts invalid character(len(a)),dimension(1) :: a)
authorDaniel Kraft <d@domob.eu>
Fri, 22 Aug 2008 07:13:25 +0000 (09:13 +0200)
committerDaniel Kraft <domob@gcc.gnu.org>
Fri, 22 Aug 2008 07:13:25 +0000 (09:13 +0200)
commitf37e928ca481ce81aeae79ae9fb9504f2d13b3a1
tree7eadcf3647d5b38792adf1c288e5c984abfbad59
parent6b7387327a09e13e7b7ae2fd5f0371b0f88189e9
re PR fortran/32095 (Accepts invalid character(len(a)),dimension(1) :: a)

2008-08-22  Daniel Kraft  <d@domob.eu>

PR fortran/32095
PR fortran/34228
* gfortran.h (in_prefix): New global.
(gfc_check_symbol_typed), (gfc_check_expr_typed): New methods.
* array.c (match_array_element_spec): Check that bounds-expressions
don't have symbols not-yet-typed in them.
* decl.c (var_element): Check that variable used is already typed.
(char_len_param_value): Check that expression does not contain
not-yet-typed symbols.
(in_prefix): New global.
(gfc_match_prefix): Record using `in_prefix' if we're at the moment
parsing a prefix or not.
* expr.c (gfc_expr_check_typed): New method.
* parse.c (verify_st_order): New argument to disable error output.
(check_function_result_typed): New helper method.
(parse_spec): Check that the function-result declaration, if given in
a prefix, contains no not-yet-typed symbols when the IMPLICIT rules are
parsed.
* symbol.c (gfc_check_symbol_typed): Check that a symbol already has
a type associated to it, otherwise use the IMPLICIT rules or signal
an error.

2008-08-22  Daniel Kraft  <d@domob.eu>

PR fortran/32095
PR fortran/34228
* gfortran.dg/used_before_typed_1.f90: New test.
* gfortran.dg/used_before_typed_2.f90: New test.
* gfortran.dg/used_before_typed_3.f90: New test.
* gfortran.dg/array_constructor_26.f03: Add -std=gnu to not enable
legacy-behaviour for the new check.
* gfortran.dg/array_constructor_27.f03: Ditto.
* gfortran.dg/blockdata_4.f90: Ditto.
* gfortran.dg/bound_2.f90: Reordered declarations to satisfy the check.
* gfortran.dg/result_in_spec_1.f90: Ditto.
* gfortran.dg/argument_checking_7.f90: Adapted expected error messages.

From-SVN: r139425
17 files changed:
gcc/fortran/ChangeLog
gcc/fortran/array.c
gcc/fortran/decl.c
gcc/fortran/expr.c
gcc/fortran/gfortran.h
gcc/fortran/parse.c
gcc/fortran/symbol.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/argument_checking_7.f90
gcc/testsuite/gfortran.dg/array_constructor_26.f03
gcc/testsuite/gfortran.dg/array_constructor_27.f03
gcc/testsuite/gfortran.dg/blockdata_4.f90
gcc/testsuite/gfortran.dg/bound_2.f90
gcc/testsuite/gfortran.dg/result_in_spec_1.f90
gcc/testsuite/gfortran.dg/used_before_typed_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/used_before_typed_2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/used_before_typed_3.f90 [new file with mode: 0644]