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 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,b1ebf2068074538a,start X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2001-11-24 09:42:03 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!newsfeeds.belnet.be!news.belnet.be!colt.net!dispose.news.demon.net!news.demon.co.uk!demon!pogner.demon.co.uk!zap!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Legality: formal packages with controlled types Date: 24 Nov 2001 17:39:46 +0000 Organization: Pushface Message-ID: NNTP-Posting-Host: localhost X-NNTP-Posting-Host: pogner.demon.co.uk:158.152.70.98 X-Trace: news.demon.co.uk 1006623707 nnrp-01:12070 NO-IDENT pogner.demon.co.uk:158.152.70.98 X-Complaints-To: abuse@demon.net NNTP-Posting-Date: 24 Nov 2001 17:39:46 GMT X-Newsreader: Gnus v5.7/Emacs 20.7 Xref: archiver1.google.com comp.lang.ada:16934 Date: 2001-11-24T17:39:46+00:00 List-Id: The code below fails on OA 7.2 with bug.ada: Error: line 21 col 42 LRM:3.9.1(3), The accessibility level of a record extension shall not exceed that of its parent; this also applies in a generic instantiation (In instance of generic base at bug.ada: line 7 col 7) and similar code fails similarly on OA 7.2.1 and AdaMULTI v3.1 I'm told. Presumably they all share a front end. The code compiles OK if Base.Container isn't derived from Controlled. Is it really the case that it's legal to instantiate a generic package with a package that contains a controlled type but illegal to instantiate a generic subprogram? ======================================================== with ada.finalization; generic type item is private; package base is type container is tagged private; private type container is new ada.finalization.controlled with record the_item : item; end record; end base; with base; generic type item is private; with package New_Base is new base (item); -- <==== ok package Generic_package is end Generic_package; with base; generic type item is private; with package new_base is new base (item); -- <==== failure procedure Generic_Procedure; procedure generic_procedure is begin null; end generic_procedure;