(j3.2006) Should parent component have the accessibility of the parent type?

Daniel C Chen cdchen
Thu Jan 21 21:26:52 EST 2016



Hello,

Consider the following code:

Module A
private
  Type A_t
    Integer i
  End type
Public A_t
End module

Module B
Use A
private
  Type, extends(A_t) :: B_t
  End type
Public B_t
End module

Module C
Use B
  Type, extends(B_t) :: C_t
  End type
Contains
  Subroutine sub(this)
    Type(C_t) :: this
    This%B_t%A_t%i = 4     !! NOT allowed
    This%B_t%i = 4         !! Allowed
  End
End module

The standard states that the parent component has the accessibility of the
parent type as follows: [16-007-p80: 2-6]
"An extended type has a scalar, nonpointer, nonallocatable, parent
component with the type and type parameters
of the parent type. The name of this component is the parent type name. It
has the accessibility of the parent
type. Components of the parent component are inheritance associated (16.5.4
) with the corresponding components
inherited from the parent type. An ancestor component of a type is the
parent component of the type or an
ancestor component of the parent component."

In the above example, "This%B_t%A_t%i" is not allowed because the parent
component "A_t" of "This%B_t" has the accessibility of type A_t, which is
private in Module B so not accessible in module C. On the other hand,
"This%B_t%i" seems fine.

Is it the intention of the standard to disallow "This%B_t%A_t%i"?

Thanks,

Daniel

XL Fortran Development - IBM Toronto Software Lab
Phone: 905-413-3056
Tie: 969-3056
Email: cdchen at ca.ibm.com
http://www.ibm.com/software/awdtools/fortran/xlfortran
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.j3-fortran.org/pipermail/j3/attachments/20160121/bc033ac5/attachment-0001.html 



More information about the J3 mailing list