From: Mart van de Wege <mvdwege@gmail.com>
Subject: Re: Can't access record attribute in derived type
Date: Wed, 08 Mar 2017 22:12:07 +0100
Date: 2017-03-08T22:12:07+01:00 [thread overview]
Message-ID: <8660jj4gns.fsf@gaheris.avalon.lan> (raw)
In-Reply-To: o9pob6$ogc$1@franka.jacob-sparre.dk
"Randy Brukardt" <randy@rrsoftware.com> writes:
> I suspect we'll need to see a more complete example to definitively say what
> the problem is.
>
The full code lives at https://github.com/mvdwege/pendragon
Note that some stuff is in incomplete branches, and I still have some
locally committed changes that are not in the github repo. The code that
was throwing errors among them.
> But if I had to guess, I'd suggest that you've run afoul of the "sibling
> inheritance problem". The rule for visibility for child components is that
> *all* of components of the *all* of the ancestors have to be visible at the
> point of declaration of the child type. If even one of the ancestors is not
> visible (as happens when deriving from a type defined in a sibling child
> package), then the components aren't visible, either.
>
It appears that that is it. While Knights is a descendant of Person, the
Knights package is indeed a sibling of Persons, not a child.
I failed to let my package design keep up with the actual design of the
objects.
The problem went away when I moved the Knights definition into the
Persons package. Now I know why.
(In fact, my original design had a wild growth of child packages which I
was in the process of pruning back as being excessively complex. Which
probably caused my confusion above).
> Note that in such a case, if you have visiblity on some but not all of the
> ancestors, you can type convert the object to make them visible. In your
> example above:
>
> return Creature(K).Parents.First_Element;
Yes, using conversions in my unit tests suppressed other errors I
couldn't get, and now I understand why those conversions were
necessary.
Mart
--
"We will need a longer wall when the revolution comes."
--- AJS, quoting an uncertain source.
next prev parent reply other threads:[~2017-03-08 21:12 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-08 14:15 Can't access record attribute in derived type Mart van de Wege
2017-03-08 14:24 ` G.B.
2017-03-08 15:06 ` Mart van de Wege
2017-03-08 19:30 ` Niklas Holsti
2017-03-08 21:05 ` Mart van de Wege
2017-03-08 20:08 ` Randy Brukardt
2017-03-08 21:06 ` Mart van de Wege
2017-03-08 21:12 ` Mart van de Wege [this message]
2017-03-08 21:25 ` Mart van de Wege
2017-03-08 21:50 ` Simon Wright
2017-03-08 22:35 ` Mart van de Wege
2017-03-08 21:03 ` Shark8
2017-03-08 21:16 ` Mart van de Wege
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox