(j3.2006) Parent component of extension of abstract type
Bill Long
longb
Thu Nov 12 17:31:23 EST 2015
On Nov 12, 2015, at 4:20 PM, Van Snyder <Van.Snyder at jpl.nasa.gov> wrote:
> On Thu, 2015-11-12 at 22:13 +0000, Bill Long wrote:
>> On Nov 12, 2015, at 3:32 PM, Van Snyder <Van.Snyder at jpl.nasa.gov> wrote:
>>
>>> It seems a bit strange that I can't access the parent component of an
>>> object of a type that is an extension of an abstract type, but I can
>>> access components of the parent component. Is this what we intended?
>>
>> You?re not allowed to declare an object of an abstract type. So it
>> would seem odd to allow a designator for an object of an abstract
>> type.
>
> According to the definition of type extension, an extension of an
> abstract type has a component of abstract type. But it can't be
> accessed as a whole. But its components can be accessed even if its
> name appears in the <data-ref>.
But those components are not of abstract type, so it seems ok.
>
> Maybe we should allow to instantiate nonpolymorphic objects of abstract
> type, but prohibit invoking deferred type-bound procedures using one as
> the <data-ref>.
Deferred usually means ?doesn?t exist yet?. So, I agree that invoking a deferred tbp is a not a good idea.
If you want to instantiate objects of the abstract type, just don?t make the type abstract.
Cheers,
Bill
>
>> Cheers,
>> Bill
>>
>>>
>>> program P
>>>
>>> type, abstract :: T0
>>> integer :: N = 42
>>> end type T0
>>>
>>> type, extends(t0) :: T1
>>> end type T1
>>>
>>> type(t1) :: V1, V2
>>>
>>> print '(a,i0)', 'V1 ', v1
>>> print '(a,i0)', 'V1%T0 ', v1%t0 ! Prohibited
>>> print '(a,i0)', 'V1%T0%n ', v1%t0%n
>>>
>>> v2 = v1
>>> v2%t0 = v1%t0 ! Prohibited
>>> v2%t0%n = v1%t0%n
>>>
>>> end program P
>>>
>>>
>>> _______________________________________________
>>> J3 mailing list
>>> J3 at mailman.j3-fortran.org
>>> http://mailman.j3-fortran.org/mailman/listinfo/j3
>>
>> Bill Long longb at cray.com
>> Fortran Technical Support & voice: 651-605-9024
>> Bioinformatics Software Development fax: 651-605-9142
>> Cray Inc./ Cray Plaza, Suite 210/ 380 Jackson St./ St. Paul, MN 55101
>>
>>
>
>
> _______________________________________________
> J3 mailing list
> J3 at mailman.j3-fortran.org
> http://mailman.j3-fortran.org/mailman/listinfo/j3
Bill Long longb at cray.com
Fortran Technical Support & voice: 651-605-9024
Bioinformatics Software Development fax: 651-605-9142
Cray Inc./ Cray Plaza, Suite 210/ 380 Jackson St./ St. Paul, MN 55101
More information about the J3
mailing list