https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118709
Bug ID: 118709
Summary: Resolution issue: host associated type should conflict
with local variable
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: anlauf at gcc dot gnu.org
Target Milestone: ---
While working on pr108454, I noticed a resolution issue that happens
independently of COMMON:
module m
implicit none
type t
end type
contains
subroutine s
type(t) :: x
real :: t
end
end
gfortran compiles this silently, while NAG reports:
Error: newbug.f90, line 8: Invalid redeclaration of host symbol T
detected at T@<end-of-statement>
Error: newbug.f90, line 8: Data type given to inappropriate symbol T
detected at T@<end-of-statement>
However, reversing the declarations in subroutine s, I get:
newbug.f90:8:12:
8 | type(t) :: x
| 1
Error: Derived type 't' at (1) is being used before it is defined
Intel:
newbug.f90(8): error #6463: This is not a derived type name. [T]
type(t) :: x
---------^
NAG:
Fatal Error: newbug.f90, line 8: T is not a derived type name
detected at (@T
While the result of resolution may depend on the order because of the conflict,
we should at least see it every time.
Similarly for class(t) instead of type(t).