(j3.2006) About extending abstract types with deferred bindings
Van Snyder
Van.Snyder
Thu Sep 8 21:24:10 EDT 2016
On Fri, 2016-09-09 at 10:05 +0900, Cohen Malcolm wrote:
> Right, and instantiating it is not allowed.
>
> There is no conjecture here.
> It is actively prohibited.
>
> You are not allowed to instantiate it ever, whether that is in the context
> of a tbp invocation or not!!! Instantiating it *ever* would allow the
> deferred tbp to be eventually invoked. That's why we do not allow that.
This seems to prevent ever instantiating an object of a type that is an
extension of an abstract type, because such an object has a parent
component of abstract type.
> Any constraint on invocation would be completely and utterly ineffective.
> Or at best redundant.
>
> -----Original Message-----
> From: Van Snyder
> Sent: Friday, September 9, 2016 3:26 AM
> To: j3 at mailman.j3-fortran.org
> Subject: Re: (j3.2006) About extending abstract types with deferred bindings
>
> On Thu, 2016-09-08 at 17:28 +0900, Cohen Malcolm wrote:
> > Your ancestor component *IS* an object of abstract type.
>
> Right, but it *IS* instantiated. We can't rely on the conjecture that
> it's impossible to instantiate an object of abstract type to prevent
> invoking deferred procedures bound to their types. We need actively to
> prohibit using them. Is there a constraint that does this? I haven't
> found it yet.
>
> >
> > -----Original Message-----
> > From: Van Snyder
> > Sent: Thursday, September 8, 2016 5:22 PM
> > To: j3 at mailman.j3-fortran.org
> > Subject: Re: (j3.2006) About extending abstract types with deferred
> > bindings
> >
> > On Thu, 2016-09-08 at 17:15 +0900, Cohen Malcolm wrote:
> > > <<<
> > > Is there a prohibition against invoking an accessible deferred
> > > procedure
> > > binding using an abstract ancestor component of a non-abstract object?
> > > >>>
> > >
> > > In effect. The rules prevent instantiating an object of abstract type
> > > in
> > > the first place.
> >
> > You don't need an object of abstract type to do this. An ancestor
> > component of abstract type, of an object of concrete type, is of
> > abstract type. The object of concrete type can be instantiated.
> >
> > type, abstract :: T1
> > ...
> > contains
> > procedure(...), deferred :: P1
> > end type T1
> >
> > type, extends(t1) :: T2
> > ...
> > contains
> > procedure(...) :: P1
> > end type T2
> >
> > type(t2) :: X
> >
> > call x%t1%p1
> >
> >
> > _______________________________________________
> > J3 mailing list
> > J3 at mailman.j3-fortran.org
> > http://mailman.j3-fortran.org/mailman/listinfo/j3
> >
> > ________________________________________________________________________
> > This e-mail has been scanned for all viruses by Star.
> > ________________________________________________________________________
> >
>
>
> _______________________________________________
> J3 mailing list
> J3 at mailman.j3-fortran.org
> http://mailman.j3-fortran.org/mailman/listinfo/j3
>
> ________________________________________________________________________
> This e-mail has been scanned for all viruses by Star.
> ________________________________________________________________________
>
More information about the J3
mailing list