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-Thread: a07f3367d7,158ce2376534c35d X-Google-Attributes: gida07f3367d7,public,usenet X-Google-NewGroupId: yes X-Google-Language: ENGLISH,ASCII-7-bit Path: g2news1.google.com!news3.google.com!feeder.news-service.com!85.214.198.2.MISMATCH!eternal-september.org!feeder.eternal-september.org!.POSTED!not-for-mail From: Simon Wright Newsgroups: comp.lang.ada Subject: Re: Derived private interface Date: Wed, 06 Jul 2011 14:28:48 +0100 Organization: A noiseless patient Spider Message-ID: References: <27656578-65aa-48b9-9f89-4ebd4e0cb02a@glegroupsg2000goo.googlegroups.com> <0fe3b0f8-c064-444d-899d-640e891b58c3@w4g2000yqm.googlegroups.com> <128d8eb5-1cc6-47e3-a09b-b53a5ef289ce@m10g2000yqd.googlegroups.com> <4e141501$0$6629$9b4e6d93@newsspool2.arcor-online.net> <4b2728fc-6127-45d8-a314-9fc491701c26@g12g2000yqd.googlegroups.com> <4e145c3a$0$6542$9b4e6d93@newsspool4.arcor-online.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: mx04.eternal-september.org; posting-host="dFCm8HWntFqmDIilBLqEJQ"; logging-data="2039"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18jODxt7uWQBHXDGgSp5yUTHuMDaSzwsSU=" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (darwin) Cancel-Lock: sha1:mCwXhtvMmaljfx5qgjnjcCm0zT4= sha1:W8eJ/2CkszT9W4cfIXNykFFxkuc= Xref: g2news1.google.com comp.lang.ada:20091 Date: 2011-07-06T14:28:48+01:00 List-Id: Georg Bauhaus writes: > (The error message at L.26 and L.37, taken together, are---per > se---confusing, aren't they?) > 22. package C1 is > 23. > 24. type T1 is private; > 25. not overriding -- E! `Op` overrides invisibly (in private part) > 26. procedure Op (X : in out T1); > | > >>> subprogram "Op" overrides inherited operation at line 29 > > 27. > 28. private > 29. type T1 is new P1.T1 with null record; > 30. end C1; > 31. > 32. > 33. package C2 is > 34. > 35. type T1 is private; > 36. overriding -- E! Overriding? Yes, but privately > 37. procedure Op (X : in out T1); > | > >>> subprogram "Op" is not overriding > > 38. > 39. private > 40. type T1 is new P1.T1 with null record; > 41. end C2; The compiler does seem to be a bit confused, but I wonder whether a human reader might not be confused too? It might be good at least to say "type T1 is tagged private;" (though it makes no difference to the reported problem).