gfortran.h (gfc_namespace): Add seen_implicit_none field.
fortran/ * gfortran.h (gfc_namespace): Add seen_implicit_none field. * symbol.c (gfc_set_implicit_none): Give error if there's a previous IMPLICIT NONE, set seen_implicit_none. (gfc_merge_new_implicit): Error if there's an IMPLICIT NONE statement. testsuite/ * gfortran.dg/implicit_4.f90: New test. From-SVN: r98952
This commit is contained in:
parent
dd2778f346
commit
438e142878
@ -1,3 +1,10 @@
|
||||
2005-04-29 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
|
||||
|
||||
* gfortran.h (gfc_namespace): Add seen_implicit_none field.
|
||||
* symbol.c (gfc_set_implicit_none): Give error if there's a previous
|
||||
IMPLICIT NONE, set seen_implicit_none.
|
||||
(gfc_merge_new_implicit): Error if there's an IMPLICIT NONE statement.
|
||||
|
||||
2005-04-28 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
|
||||
|
||||
* gfortran.h (gfc_gsymbol): Make name a const char *.
|
||||
|
@ -106,6 +106,14 @@ gfc_set_implicit_none (void)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (gfc_current_ns->seen_implicit_none)
|
||||
{
|
||||
gfc_error ("Duplicate IMPLICIT NONE statement at %C");
|
||||
return;
|
||||
}
|
||||
|
||||
gfc_current_ns->seen_implicit_none = 1;
|
||||
|
||||
for (i = 0; i < GFC_LETTERS; i++)
|
||||
{
|
||||
gfc_clear_ts (&gfc_current_ns->default_type[i]);
|
||||
@ -160,6 +168,12 @@ gfc_merge_new_implicit (gfc_typespec * ts)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (gfc_current_ns->seen_implicit_none)
|
||||
{
|
||||
gfc_error ("Cannot specify IMPLICIT at %C after IMPLICIT NONE");
|
||||
return FAILURE;
|
||||
}
|
||||
|
||||
for (i = 0; i < GFC_LETTERS; i++)
|
||||
{
|
||||
if (new_flag[i])
|
||||
|
@ -1,9 +1,13 @@
|
||||
2004-04-28 Bob Wilson <bob.wilson@acm.org>
|
||||
2005-04-29 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
|
||||
|
||||
* gfortran.dg/implicit_4.f90: New test.
|
||||
|
||||
2005-04-28 Bob Wilson <bob.wilson@acm.org>
|
||||
|
||||
* lib/target-supports.exp (check_profiling_available): Return
|
||||
false for xtensa-*-elf.
|
||||
|
||||
2004-04-29 David Billinghurst (David.Billinghurst@riotinto.com)
|
||||
2005-04-29 David Billinghurst (David.Billinghurst@riotinto.com)
|
||||
|
||||
* lib/fortran-torture.exp (fortran-torture.exp): Catch
|
||||
error if file cannot be deleted.
|
||||
|
21
gcc/testsuite/gfortran.dg/implicit_4.f90
Normal file
21
gcc/testsuite/gfortran.dg/implicit_4.f90
Normal file
@ -0,0 +1,21 @@
|
||||
! { dg-do compile }
|
||||
! Verify error diagnosis for invalid combinations of IMPLICIT statements
|
||||
IMPLICIT NONE
|
||||
IMPLICIT NONE ! { dg-error "Duplicate" }
|
||||
END
|
||||
|
||||
SUBROUTINE a
|
||||
IMPLICIT REAL(b-j) ! { dg-error "cannot follow" }
|
||||
implicit none ! { dg-error "cannot follow" }
|
||||
END SUBROUTINE a
|
||||
|
||||
subroutine b
|
||||
implicit none
|
||||
implicit real(g-k) ! { dg-error "Cannot specify" }
|
||||
end subroutine b
|
||||
|
||||
subroutine c
|
||||
implicit real(a-b)
|
||||
implicit integer (b-c) ! { dg-error "already" }
|
||||
implicit real(d-f), complex(f-g) ! { dg-error "already" }
|
||||
end subroutine c
|
Loading…
Reference in New Issue
Block a user