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=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Georg Bauhaus Newsgroups: comp.lang.ada Subject: Re: Generic instantiation before actual subprogram body Date: Thu, 04 Dec 2014 11:40:43 +0100 Organization: A noiseless patient Spider Message-ID: References: Reply-To: nonlegitur@futureapps.de Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Thu, 4 Dec 2014 10:40:27 +0000 (UTC) Injection-Info: mx02.eternal-september.org; posting-host="b96887e80893c84a90c3007226ca0d1c"; logging-data="11570"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19Tra3AAvAT8UoF7WpatA1xXFlYiGWn2Zk=" User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 In-Reply-To: Cancel-Lock: sha1:Lc7E3yqGuOgwyxPxuMtfDfuNA2s= Xref: news.eternal-september.org comp.lang.ada:23859 Date: 2014-12-04T11:40:43+01:00 List-Id: On 04.12.14 11:03, Natasha Kerensikova wrote: > package body Which_Does_Not_Raise_Program_Error is > > procedure Local_Procedure; > > procedure Local_Procedure is > begin > > end Local_Procedure; > > procedure Instantiated is new Generic_Procedure (Local_Procedure); > > procedure Public_Procedure is > begin > Instantiated; > end Public_Procedure; > > end Which_Does_Not_Raise_Program_Error; While the following does not answer the question, Ada's "separate" facility can provide for some source text reordering. It can keeping bodies out of sight when they are not needed to be seen by the reader. Maybe this helps: package body Which_Does_Not_Raise_Program_Error is procedure Local_Procedure; -- or drop this procedure Local_Procedure is separate; procedure Instantiated is new Generic_Procedure (Local_Procedure); procedure Public_Procedure is begin Instantiated; end Public_Procedure; end Which_Does_Not_Raise_Program_Error; separate (Which_Does_Not_Raise_Program_Error) procedure Local_Procedure is begin null; end Local_Procedure;