(j3.2006) Should the PUBLIC attribute on derived type definition make generic that has the same name also public when default is private?
Daniel C Chen
cdchen
Mon Jul 14 22:29:41 EDT 2014
.Thanks John, Van. It is also clear to me now.
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
From: Van Snyder <van.snyder at jpl.nasa.gov>
To: j3 at mailman.j3-fortran.org,
Date: 07/10/2014 16:57
Subject: Re: (j3.2006) Should the PUBLIC attribute on derived type
definition make generic that has the same name also public when
default is private?
Sent by: j3-bounces at mailman.j3-fortran.org
Subclause 5.3.2 makes it clear, to me at least, that the PUBLIC
attribute applies to the identifier, not the entity or entities
identified by that identifier.
Van
On Thu, 2014-07-10 at 20:09 +0000, john.reid at stfc.ac.uk wrote:
> Daniel,
>
> I think that this is a valid program. 5.3.2, para 2, says: "Identifiers
that are specified in a module or accessible in that module by use
association have either the PUBLIC attribute or PRIVATE attribute."
>
> Here we have the identifier base_type and it has the PUBLIC attribute. It
identifies both the type and the generic procedure.
>
> Howsever, some clarification in 4.5.2.2 would be helpful. It talks of
types having either the PUBLIC or PRIVATE attribute without saying anything
about the effect on a generic identifier with the same name.
>
> Cheers,
>
> John.
> ________________________________________
> From: Daniel C Chen [cdchen at ca.ibm.com]
> Sent: 10 July 2014 17:28
> To: j3 at mailman.j3-fortran.org
> Subject: (j3.2006) Should the PUBLIC attribute on derived type definition
make generic that has the same name also public when default is private?
>
> Hello all,
>
> Is the following test case standard conforming? The default accessibility
of module 'base_mod' is private. The derived type 'base_type' is public
because of the PUBLIC attribute on the type definition. Does it make the
generic name 'base_type" also public so that the access to the generic in
the program 'test' is legal?
> My understanding is that the following test case is illegal as the PUBLIC
attribute on the derived type definition only makes the type 'base_type'
public, not the generic name 'base_type', but I couldn't find anything in
the standard says either way.
>
> Any response will be highly appreciated!
>
> module base_mod
> implicit none
> private
>
> type, public :: base_type
> private
> character(len=20) :: name
> end type
>
> interface base_type
> module procedure constructor
> end interface
>
> contains
>
> type(base_type) function constructor(set_name) result(this)
> character(len=*), intent(in) :: set_name
> this%name = trim(set_name)
> end function
>
> end module base_mod
>
> !-------------------------------------------------------------
> ! Top-level program.
> !-------------------------------------------------------------
>
> program test
> use base_mod, only: base_type
> implicit none
>
> type(base_type) :: my_base
>
> my_base = base_type(set_name='fish')
>
> end program test
>
> 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
>
_______________________________________________
J3 mailing list
J3 at mailman.j3-fortran.org
http://mailman.j3-fortran.org/mailman/listinfo/j3
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.j3-fortran.org/pipermail/j3/attachments/20140714/bc8b866a/attachment.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
Url : http://mailman.j3-fortran.org/pipermail/j3/attachments/20140714/bc8b866a/attachment.gif
More information about the J3
mailing list