IBM Support

LI79021: ERROR FROM UNLIMITED POLYMORPHIC DUMMY ARGUMENT IN CLASS HIERARCHY

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • In a class hierarchy contained in 2 separate modules, when a
    procedure that uses an unlimited polymorphic dummy argument is
    overridden, an invalid error message is output.
    
    In the following example, A_Set is overridden by B_Set, and an
    unlimited polymorphic argument (class(*)) is used.
    
    The error doesn't appear if the parent and child classes
    are declared in the same module.
    
    
       === TEST CASE ===
    
    module A
    implicit none
    type, abstract :: Type_A
    contains
        procedure :: Set => A_Set
    end type
    
    contains
        subroutine A_Set(this, Value)
            class(Type_A), intent(IN)  :: this
            class(*),      intent(Out) :: Value
            select type(Value)
                type is(integer)
                    Value = 1
            end select
        end subroutine
    end module
    
    module B
    use A
    implicit none
    type, extends(Type_A) :: Type_B
    contains
        procedure :: Set => B_Set
    end type
    
    contains
        subroutine B_Set(this, Value)
            class(Type_B), intent(IN)  :: this
            class(*),      intent(Out) :: Value
            select type(Value)
                type is(integer)
                    Value = 2
            end select
        end subroutine
    end module
    
    
    $ xlf2003 -c test.f03
    ** a   === End of Compilation 1 ===
    "test.f03", line 24.18: 1514-670 (S) Dummy argument value of
    overridden binding set and the corresponding dummy argument of
    overriding binding set must have the same type and type
    parameters.
    ** b   === End of Compilation 2 ===
    1501-511  Compilation failed for file test.f03.
    $
    

Local fix

  • N/A
    

Problem summary

  • PROBLEM DESCRIPTION:
    When a binding is overridden, the types and type parameters of
    all corresponding non-passed object dummy arguments have to
    match between the overriding binding and the overridden
    binding.  When the corresponding dummy arguments are both
    unlimited polymorphic, XL Fortran was incorrectly flagging them
    as mismatched.
    
    USERS AFFECTED:
    Users of XL Fortran who try to override a binding that has an
    unlimited polymorphic dummy argument.
    

Problem conclusion

  • The problem has been fixed
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI79021

  • Reported component name

    XL FORTRAN FOR

  • Reported component ID

    5799AH100

  • Reported release

    E10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2016-04-22

  • Closed date

    2016-05-16

  • Last modified date

    2016-05-16

  • APAR is sysrouted FROM one or more of the following:

    LI78881

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    XL FORTRAN FOR

  • Fixed component ID

    5799AH100

Applicable component levels

  • RE10 PSY

       UP

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SS2MB5","label":"XL Fortran for Blue Gene\/Q"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"ALL VERSIONS","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
16 May 2016