From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM autolearn=unavailable autolearn_force=no version=3.4.4 X-Received: by 10.70.131.66 with SMTP id ok2mr21206041pdb.9.1431383840371; Mon, 11 May 2015 15:37:20 -0700 (PDT) X-Received: by 10.140.102.172 with SMTP id w41mr157419qge.40.1431383840089; Mon, 11 May 2015 15:37:20 -0700 (PDT) Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!news.glorb.com!m20no2154766iga.0!news-out.google.com!t92ni323qga.1!nntp.google.com!z60no6737614qgd.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: comp.lang.ada Date: Mon, 11 May 2015 15:37:19 -0700 (PDT) Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=108.44.154.41; posting-account=vk6_JwoAAABkMyHO1YfdP69Hm3CpbdGR NNTP-Posting-Host: 108.44.154.41 User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <830c0323-a06c-4884-9214-89f3ee6f17b5@googlegroups.com> Subject: Incomplete types used with generics From: Jeremiah Injection-Date: Mon, 11 May 2015 22:37:20 +0000 Content-Type: text/plain; charset=ISO-8859-1 Xref: news.eternal-september.org comp.lang.ada:25817 Date: 2015-05-11T15:37:19-07:00 List-Id: One of the things I read about with ada2012 is the ability to use incomplete types as generic parameters. However, I am having some trouble implementing them. I'm using GNAT GPL 2014 and have the following dumbed down packages: generic type Item_Type is tagged limited private; type Item_Access is access Item_Type; package Test_Generic is type Test is tagged record Ref : Item_Access := null; end record; end Test_Generic; with Test_Generic; package Test_Nodes is type Node3_ptr is null record; type Node1_Type is tagged record value : Integer := 0; end record; type Node1_Access is access Node1_Type; package N1 is new Test_Generic(Node1_Type,Node1_Access); type Node2_Type is tagged; type Node2_Access is access Node2_Type; package N2 is new Test_Generic(Node2_Type,Node2_Access); type Node2_Type is tagged record value : Integer := 1; Test : N2.Test; end record; end Test_Nodes; However, the line package N2 is new Test_Generic(Node2_Type,Node2_Access); fails with: premature use of incomplete type I *think* the generic parameter "type Item_Type is tagged limited private;" is considered incomplete as is "type Node2_Type is tagged;". What am I missing? Ada2012 incomplete types with generics reference: http://www.ada-auth.org/standards/12rat/html/Rat12-4-3.html