https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104750

            Bug ID: 104750
           Summary: Parameterized derived type extension from outside the
                    host module
           Product: gcc
           Version: 10.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: a.shahmoradi at gmail dot com
  Target Milestone: ---

Created attachment 52543
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=52543&action=edit
sample source code

The following code is standard-compliant but does not compile with gfortran 10,
11, or the latest GNU trunk.

```
module amat

    type :: amatrix(k,c,r)   
        integer, kind :: k = 4 
        integer, len :: r = 1 
        integer, len :: c = 1
    end type amatrix

end module

program test_PDT_extension

    use amat

    type, extends(amatrix) :: imatrix(key)     ! valid
        integer, kind :: key  
        integer(kind=k) :: m(c,r)
    end type imatrix

end
```
It returns the error:
```
Error: Parameter 'k' at (1) has not been declared or is a variable, which does
not reduce to a constant expression
```
which is incorrect, because `k` is declared in the parent type.
This code compiles with ifort >2021 and possibly older versions. Attached is a
copy of the source code. 

The code can be readily tested with all versions of GNU and Intel compilers
here: https://godbolt.org/z/xsz4Eb4qa

Reply via email to