comp.lang.ada
 help / color / mirror / Atom feed
From: Mehdi Saada <00120260a@gmail.com>
Subject: representation clauses ok in generics when the formal type in tagged with known ancestor, but not ok when only know to be tagged ? ... said the compiler.
Date: Sat, 24 Mar 2018 10:16:15 -0700 (PDT)
Date: 2018-03-24T10:16:15-07:00	[thread overview]
Message-ID: <d24fd816-10f4-48b3-b584-fe6589d38a62@googlegroups.com> (raw)

This is a translation from fr.c.l.a.

I wonder why in some cases where a generic formal type is a tagged type and has a known ancestor, one can alter the representation:

package AAA is
   type Type_A is tagged
      record
         INT: INTEGER;
      end record;
end AAA;
with AAA; use AAA;
generic
   type NT is new type_A with private;
package TENTATIVE is
   type B_Type is new Nt with null record with SIZE => 300;
   procedure P1 (B : B_Type) is NULL;
end TENTATIVE;
with AAA, TENTATIVE; use AAA;
procedure MAIN is
package TEST is new TENTATIVE(Type_A);
begin Null; end; 

It only gives me "main.adb:3:01: warning: in instantiation at tentative.ads:5
main.adb:3:01: warning: 172 bits of "B_Type" unused"

It compiles, while when the contract states that NT has only to be tagged, it failed.
To change "type NT is new TYPE_A with private" into "type NT is tagged private" gives "tentative.ads:5:48: representation item not allowed for generic type"

JPRosen couldn't help on this, and said you Randy could saw to it better ;-)


             reply	other threads:[~2018-03-24 17:16 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-24 17:16 Mehdi Saada [this message]
2018-03-26 22:31 ` representation clauses ok in generics when the formal type in tagged with known ancestor, but not ok when only know to be tagged ? ... said the compiler Randy Brukardt
2018-03-27 13:57   ` Jean-Claude Rostaing
2018-03-27 23:59     ` Randy Brukardt
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox