Rate This Document
Findability
Accuracy
Completeness
Readability

Polymorphisms of Parameterized Derived Extension Types Are Not Recommended

Polymorphisms of parameterized derived extension types are not recommended. They may cause problems in some cases.

For example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
module test
    implicit none
    type :: ty(a, b)
        integer, len :: a, b
        real(4) :: r1(b)
    end type
    type, extends (ty) :: ty1(c)
        Integer, len :: c
        real(4) :: r2(c)
    end type
end module
 
program main
    use test
    implicit none
    type (ty1(:, :, :)), allocatable :: x
    allocate (ty1(3, 2, 20) :: x)
    x%r1 = 1.0
    x%r2 = 2.0
end program