re PR fortran/34657 (program-unit MY_SUB imports symbol MY_SUB)
2011-07-17 Tobias Burnus <burnus@net-b.de> PR fortran/34657 * module.c (check_for_ambiguous): Check whether the name is * matches the current program unit. 2011-07-17 Tobias Burnus <burnus@net-b.de> Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/34657 * gfortran.dg/generic_17.f90: Fix testcase. * gfortran.dg/interface_3.f90: Add dg-error. * gfortran.dg/use_14.f90: New. * gfortran.dg/use_15.f90: New. Co-Authored-By: Thomas Koenig <tkoenig@gcc.gnu.org> From-SVN: r176375
This commit is contained in:
parent
1ff2474966
commit
63523a1fa5
7 changed files with 86 additions and 4 deletions
|
@ -1,3 +1,9 @@
|
|||
2011-07-17 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/34657
|
||||
* module.c (check_for_ambiguous): Check whether the name is matches
|
||||
the current program unit.
|
||||
|
||||
2011-07-17 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/49624
|
||||
|
|
|
@ -4278,6 +4278,13 @@ check_for_ambiguous (gfc_symbol *st_sym, pointer_info *info)
|
|||
module_locus locus;
|
||||
symbol_attribute attr;
|
||||
|
||||
if (st_sym->ns->proc_name && st_sym->name == st_sym->ns->proc_name->name)
|
||||
{
|
||||
gfc_error ("'%s' of module '%s', imported at %C, is also the name of the "
|
||||
"current program unit", st_sym->name, module_name);
|
||||
return true;
|
||||
}
|
||||
|
||||
rsym = info->u.rsym.sym;
|
||||
if (st_sym == rsym)
|
||||
return false;
|
||||
|
|
|
@ -1,3 +1,12 @@
|
|||
2011-07-17 Tobias Burnus <burnus@net-b.de>
|
||||
Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/34657
|
||||
* gfortran.dg/generic_17.f90: Fix testcase.
|
||||
* gfortran.dg/interface_3.f90: Add dg-error.
|
||||
* gfortran.dg/use_14.f90: New.
|
||||
* gfortran.dg/use_15.f90: New.
|
||||
|
||||
2011-07-17 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/pointer_controlled.adb: New test.
|
||||
|
|
|
@ -34,7 +34,7 @@ module foo_mod
|
|||
use d_foo_mod
|
||||
end module foo_mod
|
||||
|
||||
subroutine s_foobar(x)
|
||||
subroutine s_foobar2(x)
|
||||
use foo_mod
|
||||
end subroutine s_foobar
|
||||
end subroutine s_foobar2
|
||||
! { dg-final { cleanup-modules "s_foo_mod d_foo_mod foo_mod" } }
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
!
|
||||
! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
|
||||
!
|
||||
! Modified for PR fortran/34657
|
||||
!
|
||||
module test_mod
|
||||
interface
|
||||
subroutine my_sub (a)
|
||||
|
@ -30,14 +32,14 @@ end module
|
|||
! This is the original PR, excepting that the error requires the symbol
|
||||
! to be referenced.
|
||||
subroutine my_sub (a)
|
||||
use test_mod
|
||||
use test_mod ! { dg-error "is also the name of the current program unit" }
|
||||
real a
|
||||
call my_sub (a) ! { dg-error "ambiguous reference" }
|
||||
print *, a
|
||||
end subroutine
|
||||
|
||||
integer function my_fun (a)
|
||||
use test_mod
|
||||
use test_mod ! { dg-error "is also the name of the current program unit" }
|
||||
real a
|
||||
print *, a
|
||||
my_fun = 1 ! { dg-error "ambiguous reference" }
|
||||
|
|
19
gcc/testsuite/gfortran.dg/use_14.f90
Normal file
19
gcc/testsuite/gfortran.dg/use_14.f90
Normal file
|
@ -0,0 +1,19 @@
|
|||
! { dg-do compile }
|
||||
!
|
||||
! PR fortran/34657
|
||||
!
|
||||
module test_mod
|
||||
interface
|
||||
subroutine my_sub (a)
|
||||
real a
|
||||
end subroutine
|
||||
end interface
|
||||
end module
|
||||
|
||||
subroutine my_sub (a)
|
||||
use test_mod, gugu => my_sub
|
||||
real a
|
||||
print *, a
|
||||
end subroutine
|
||||
|
||||
END
|
39
gcc/testsuite/gfortran.dg/use_15.f90
Normal file
39
gcc/testsuite/gfortran.dg/use_15.f90
Normal file
|
@ -0,0 +1,39 @@
|
|||
! { dg-do compile }
|
||||
!
|
||||
! PR fortran/34657
|
||||
!
|
||||
module test_mod
|
||||
interface
|
||||
subroutine my_sub (a)
|
||||
real a
|
||||
end subroutine
|
||||
end interface
|
||||
end module
|
||||
|
||||
subroutine my_sub (a)
|
||||
use test_mod ! { dg-error "is also the name of the current program unit" }
|
||||
real a
|
||||
print *, a
|
||||
end subroutine
|
||||
|
||||
|
||||
module test_mod2
|
||||
integer :: my_sub2
|
||||
end module
|
||||
|
||||
subroutine my_sub2 (a)
|
||||
use test_mod2 ! { dg-error "is also the name of the current program unit" }
|
||||
real a
|
||||
print *, a
|
||||
end subroutine
|
||||
|
||||
|
||||
subroutine my_sub3 (a)
|
||||
use test_mod2, my_sub3 => my_sub2 ! { dg-error "is also the name of the current program unit" }
|
||||
real a
|
||||
print *, a
|
||||
end subroutine
|
||||
|
||||
END
|
||||
|
||||
! { dg-final { cleanup-modules "test_mod test_mod2" } }
|
Loading…
Add table
Reference in a new issue