mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-21 16:39:48 +08:00
re PR fortran/30973 ([4.1, 4.2 only] undetected name conflict: variables may be named like modules)
2007-03-08 Tobias Burnus <burnus@net-b.de> PR fortran/30973 * module.c (read_module): Always import module name as symbol. (gfc_match_use): Disallow module name in the only clause of a use statement. 2007-03-08 Tobias Burnus <burnus@net-b.de> PR fortran/30973 * gfortran.dg/use_4.f90: New test. * gfortran.dg/used_dummy_types_7.f90: Correct ambiguous symbol. From-SVN: r122696
This commit is contained in:
parent
9eaa999637
commit
ac497e6a6e
@ -1,9 +1,16 @@
|
||||
2007-03-08 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31011
|
||||
* expr.c (find_array_section): Correct arithmetic for section
|
||||
size.
|
||||
|
||||
2007-07-08 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/30973
|
||||
* module.c (read_module): Always import module name as symbol.
|
||||
(gfc_match_use): Disallow module name in the only clause of
|
||||
a use statement.
|
||||
|
||||
2007-03-08 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31011
|
||||
* expr.c (find_array_section): Correct arithmetic for section
|
||||
size.
|
||||
|
||||
2007-03-07 Brooks Moses <brooks.moses@codesourcery.com>
|
||||
|
||||
* iresolve.c (gfc_resolve_ishftc): Correct s_kind value.
|
||||
|
@ -619,6 +619,14 @@ gfc_match_use (void)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (strcmp (new->use_name, module_name) == 0
|
||||
|| strcmp (new->local_name, module_name) == 0)
|
||||
{
|
||||
gfc_error ("The name '%s' at %C has already been used as "
|
||||
"an external module name.", module_name);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case INTERFACE_USER_OP:
|
||||
@ -3438,6 +3446,9 @@ read_module (void)
|
||||
/* Get the jth local name for this symbol. */
|
||||
p = find_use_name_n (name, &j);
|
||||
|
||||
if (p == NULL && strcmp (name, module_name) == 0)
|
||||
p = name;
|
||||
|
||||
/* Skip symtree nodes not in an ONLY clause, unless there
|
||||
is an existing symtree loaded from another USE
|
||||
statement. */
|
||||
|
@ -1,7 +1,13 @@
|
||||
2007-03-08 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31011
|
||||
* gfortran.dg/parameter_array_section_2.f90: New test.
|
||||
2007-03-08 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/30973
|
||||
* gfortran.dg/use_4.f90: New test.
|
||||
* gfortran.dg/used_dummy_types_7.f90: Correct ambiguous symbol.
|
||||
|
||||
2007-03-08 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/31011
|
||||
* gfortran.dg/parameter_array_section_2.f90: New test.
|
||||
|
||||
2007-03-08 Volker Reichelt <reichelt@netcologne.de>
|
||||
|
||||
|
33
gcc/testsuite/gfortran.dg/use_4.f90
Normal file
33
gcc/testsuite/gfortran.dg/use_4.f90
Normal file
@ -0,0 +1,33 @@
|
||||
! { dg-do "compile" }
|
||||
! PR fortran/30973
|
||||
! Using symbols with the name of the module
|
||||
|
||||
module foo
|
||||
integer :: i
|
||||
end module foo
|
||||
|
||||
module bar
|
||||
integer :: j
|
||||
end module bar
|
||||
|
||||
module test
|
||||
use foo, only:
|
||||
integer :: foo ! { dg-error "cannot have a type" }
|
||||
end module test
|
||||
|
||||
module test2
|
||||
use bar, only: foo => j
|
||||
use foo ! ok, unless foo is accessed
|
||||
end module test2
|
||||
|
||||
module test3
|
||||
use bar, only: foo => j
|
||||
use foo ! ok, unless foo is accessed
|
||||
foo = 5 ! { dg-error "is an ambiguous reference to 'j'" }
|
||||
end module test3
|
||||
|
||||
program test_foo
|
||||
use foo, only: foo ! { dg-error "been used as an external module name" }
|
||||
use foo, only: i => foo! { dg-error "been used as an external module name" }
|
||||
use foo, only: foo => i! { dg-error "been used as an external module name" }
|
||||
end program
|
@ -33,12 +33,12 @@ END MODULE
|
||||
|
||||
MODULE list
|
||||
INTERFACE
|
||||
SUBROUTINE dummy_atom_list_insert(this, atom)
|
||||
SUBROUTINE dummy_atom_list_insert(this, atom2)
|
||||
USE types, ONLY: dummy_atom_list
|
||||
USE atom, ONLY: dummy_atom
|
||||
|
||||
TYPE(dummy_atom_list), INTENT(inout) :: this
|
||||
TYPE(dummy_atom), INTENT(in) :: atom
|
||||
TYPE(dummy_atom), INTENT(in) :: atom2
|
||||
END SUBROUTINE
|
||||
END INTERFACE
|
||||
END MODULE
|
||||
|
Loading…
Reference in New Issue
Block a user