> Discovered this error when attempting to allocate from a > Root_Storage_Pool_With_Subpools derived type. If the type is derived in the > current compilation unit, and Allocate is not overridden on derivation (as > is typically the case with Root_Storage_Pool_With_Subpools), the entity for > Allocate for the derived type is then an alias to > System.Storage_Pools.Subpools.Allocate. When the allocator is built, > gnat_to_gnu_entity is called with definition == false for the derived > storage pool's allocate operation. An assertion is gnat_to_gnu_entity fails > in this case, since it is not a definition, and Is_Public is false. If the > storage pool type was instead derived in a different compilation unit, this > assertion is not triggered since the aliased entity has the Public property.
We need a testcase here, we cannot relax assertions without testcases. > This patch adds an extra check in the assertion (decl.c: gnat_to_gnu_entity) > that the entity has the Aliased property. Also included a comment that > describes the special case as per the description above. I don't really understand the new condition, did you forget to test Is_Public? -- Eric Botcazou