I am trying to extend some abstract user defined types.
But I am having some difficulties in 11.6 and 11.7.
When I tried to extend two different types which are also derived from some superclass, in the same program I get following messages;
PGF90-S-0155-Incompatible PASS argument in set_index_2d_class_from_ij (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in set_index_2d_class_from_index_2d (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in get_ij_from_indexnumber (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in get_index_2d_from_indexnumber (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in get_indexnumber_from_ij (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in get_indexnumber_from_index_2d (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in is_same_class_as (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in get_indexnumber_from_index_wrapper (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in get_indexnumber_from_ijk_wrapper (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in get_index_from_indexnumber_wrapper (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in set_index_class_wrapper (test.f03: 9)
PGF90-S-0155-Incompatible PASS argument in set_index_3d_class_from_ijk (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in set_index_3d_class_from_index_3d (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in get_ijk_from_indexnumber (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in get_index_3d_from_indexnumber (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in get_indexnumber_from_ijk (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in get_indexnumber_from_index_3d (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in is_same_class_as (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in get_indexnumber_from_index_wrapper (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in get_indexnumber_from_ijk_wrapper (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in get_index_from_indexnumber_wrapper (test.f03: 12)
PGF90-S-0155-Incompatible PASS argument in set_index_class_wrapper (test.f03: 12)
Interface part of the index module is;
TYPE,PUBLIC,ABSTRACT :: Index_Class
Integer :: NumberOfIndexes = 0
Contains
Generic :: Set_Index => Set_Index_Class_Wrapper
Generic :: Get_Index => Get_Index_from_IndexNumber_Wrapper
Generic :: Get_IndexNumber => Get_IndexNumber_from_IJK_Wrapper, Get_IndexNumber_from_Index_Wrapper
Procedure,Pass :: Set_Index_Class_Wrapper
Procedure,Pass :: Get_Index_from_IndexNumber_Wrapper
Procedure,Pass :: Get_IndexNumber_from_IJK_Wrapper
Procedure,Pass :: Get_IndexNumber_from_Index_Wrapper
Procedure,Pass :: Is_Same_Class_As
END type Index_Class
TYPE,PUBLIC,ABSTRACT,EXTENDS(Index_Class) :: Index_1D_Class
Integer :: I
Contains
Generic :: Set_Index_1D => Set_Index_1D_Class_from_i, Set_Index_1D_Class_from_Index_1D
Generic :: Get_Index_1D => Get_Index_1D_from_IndexNumber
Generic :: Get_I => Get_I_from_IndexNumber
Generic :: Get_IndexNumber_1D => Get_IndexNumber_from_i, Get_IndexNumber_from_Index_1D
Procedure,Pass :: Set_Index_1D_Class_from_i
Procedure,Pass :: Set_Index_1D_Class_from_Index_1D
Procedure,Pass :: Get_I_from_IndexNumber
Procedure,Pass :: Get_Index_1D_from_IndexNumber
Procedure,Pass :: Get_IndexNumber_from_i
Procedure,Pass :: Get_IndexNumber_from_Index_1D
END type Index_1D_Class
TYPE,PUBLIC,ABSTRACT,EXTENDS(Index_Class) :: Index_2D_Class
Integer :: I,J
Contains
Generic :: Set_Index_2D => Set_Index_2D_Class_from_ij, Set_Index_2D_Class_from_Index_2D
Generic :: Get_IJ => Get_IJ_from_IndexNumber
Generic :: Get_Index_2D => Get_Index_2D_from_IndexNumber
Generic :: Get_IndexNumber_2D => Get_IndexNumber_from_ij, Get_IndexNumber_from_Index_2D
Procedure,Pass :: Set_Index_2D_Class_from_ij
Procedure,Pass :: Set_Index_2D_Class_from_Index_2D
Procedure,Pass :: Get_IJ_from_IndexNumber
Procedure,Pass :: Get_Index_2D_from_IndexNumber
Procedure,Pass :: Get_IndexNumber_from_ij
Procedure,Pass :: Get_IndexNumber_from_Index_2D
END type Index_2D_Class
TYPE,PUBLIC,ABSTRACT,EXTENDS(Index_Class) :: Index_3D_Class
Integer :: I,J,K
Contains
Generic :: Set_Index_3D => Set_Index_3D_Class_from_ijk, Set_Index_3D_Class_from_Index_3D
Generic :: Get_IJK => Get_IJK_from_IndexNumber
Generic :: Get_Index_3D => Get_Index_3D_from_IndexNumber
Generic :: Get_IndexNumber_3D => Get_IndexNumber_from_ijk, Get_IndexNumber_from_Index_3D
Procedure,Pass :: Set_Index_3D_Class_from_ijk
Procedure,Pass :: Set_Index_3D_Class_from_Index_3D
Procedure,Pass :: Get_IJK_from_IndexNumber
Procedure,Pass :: Get_Index_3D_from_IndexNumber
Procedure,Pass :: Get_IndexNumber_from_ijk
Procedure,Pass :: Get_IndexNumber_from_Index_3D
END type Index_3D_Class
And definition part of the test program is;
TYPE,EXTENDS(Index_2D_Class):: IndexMatrix2
integer::Matrix(5,7)
End type IndexMatrix2 (line 9)
Type,Extends(Index_2D_Class):: index2D
end type index2D (line 12)
TYPE,EXTENDS(Index_3D_Class):: IndexMatrix3
integer::Matrix(5,5,10)
End type IndexMatrix3
Type,Extends(Index_3D_Class):: index3d
end type index3d
Intresting part of the problem is; this extensions were working in the 11.3
And also if I try to extend this types with a more complex data types I get following error;
pgfortran-Fatal-/opt/pgi/linux86-64/11.7/bin/pgf902 TERMINATED by signal 11
Arguments to /opt/pgi/linux86-64/11.7/bin/pgf902
/opt/pgi/linux86-64/11.7/bin/pgf902 /tmp/pgfortranwUYcty7bfdH.ilm -fn material-t.f03 -opt 1 -terse 1 -inform warn -x 51 0x20 -x 119 0xa10000 -x 122 0x40 -x 123 0x1000 -x 127 4 -x 127 17 -x 19 0x400000 -x 28 0x40000 -x 120 0x10000000 -x 70 0x8000 -x 122 1 -x 125 0x20000 -quad -x 59 4 -x 59 4 -tp shanghai -x 120 0x1000 -x 124 0x1400 -y 15 2 -x 57 0x3b0000 -x 58 0x48000000 -x 49 0x100 -x 120 0x200 -astype 0 -x 124 1 -cmdline ‘+pgfortran material-t.f03 -c’ -asm /tmp/pgfortranMUYYXWqxMzn.s
I didn’t give the full codes since they are very long, but if you want a can send them via e-mail.
Thanks in advance…