From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.ibt.lt (mail.ibt.lt [158.129.170.60]) by sourceware.org (Postfix) with ESMTP id 1C8403858C62 for ; Fri, 1 Dec 2023 08:07:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1C8403858C62 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=ibt.lt Authentication-Results: sourceware.org; spf=none smtp.mailfrom=ibt.lt ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1C8403858C62 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=158.129.170.60 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701418029; cv=none; b=b1accrZh4/8gkpd44vriM5FEpJGZmWa87jpHhWQKhNc/4AHlmj5fKrTvbfB/kZUEb14Y+hfYwf+5GRrEjuKKCRiusKFx0EC0j+U1ZOLEk5kR5RLqyT5fMtmq6HSYh3yLRcb/8z1qJi37Cz7YgHio8YaSgLyOxvekX+jvxKPt48w= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1701418029; c=relaxed/simple; bh=8j+UpzBVsTFV0Oi3yM50/BL5sk76zNszwoJcMJQ9YzQ=; h=Message-ID:Date:MIME-Version:To:From:Subject; b=VWUwSdUssMS9PkPeSYgxcMnjJnF6yPQMMgJuZaxF6Eoe/YYxOLyaNr9vLOukXu+5XzixM9uqZ4Qae5k+/Zh4q9BbCskxFV/sWMnJcGfSE81efPLTpCEdzI4N+RF9HkZvxLLSLr3rJHIJypf6XKXHT8TyIGi48jMq7QmFp/JZZDk= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from [158.129.170.73] (unknown [158.129.170.73]) by mail.ibt.lt (Postfix) with ESMTPSA id 6D25190206 for ; Fri, 1 Dec 2023 10:31:02 +0200 (EET) Content-Type: multipart/mixed; boundary="------------PJKZB9dYBBlFXDIEqkDdLblX" Message-ID: <324e44c3-fac4-4c0f-a459-d5ebd441dd21@ibt.lt> Date: Fri, 1 Dec 2023 10:07:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: gcc-help@gcc.gnu.org Content-Language: en-GB, lt, ru-RU From: =?UTF-8?Q?Saulius_Gra=C5=BEulis?= Subject: Ada RM compliance of the GNAT/gcc? Autocrypt: addr=grazulis@ibt.lt; keydata= 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 mYIPpQu8DMyKCa1SKNhW6Pm3WWs8ypW9xZuc X-IBT-MailScanner-Information: Please contact the ISP for more information X-IBT-MailScanner-ID: 6D25190206.A93C5 X-IBT-MailScanner: Found to be clean X-IBT-MailScanner-SpamScore: s X-IBT-MailScanner-From: grazulis@ibt.lt X-Spam-Status: No, score=-0.1 required=5.0 tests=BAYES_00,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_INFOUSMEBIZ,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------PJKZB9dYBBlFXDIEqkDdLblX Content-Type: multipart/alternative; boundary="------------Lhebw5jwCtLt0CbLj64tMwCT" --------------Lhebw5jwCtLt0CbLj64tMwCT Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Hi folks, I am writing an Ada package (an option processing package) that requires to pass an anonymous access to function type to a procedure, which will then store it in an array to be called later. I have stumbled into a strange behaviour of the GNAT compiler (gnat --version: GNAT 12.2.0, Copyright (C) 1996-2022, Free Software Foundation, Inc.; installed using 'alr install --prefix=~/install/gnat-alire/gnat-alire-12.2' with alr 2.0-dev on Ubuntu-20.04): 1) when I compile the code (the 'process_options.adb' main procedure that uses the 'Get_Options' package) with the 'Is_Present' and other fields explicitly initialised ('Is_Present => False' at get_options.adb:24), everything compiles and runs as expected; 2) when I instead change to default initialisation ('Is_Present =><>' at get_options.adb:24, or remove the line altogether to rely on the 'others => <>' statement), I get the following error message from the compiler: > gcc -c -Iprograms/ -Isrc -gnata -I- -o > /home/saulius/tests/ada/ada-pass-access-function/.obj/get_options.o > /home/saulius/tests/ada/ada-pass-access-function/src/get_options.adb > get_options.adb:20:29: error: illegal attempt to store anonymous > access to subprogram > get_options.adb:20:29: error: value has deeper accessibility than any > master (RM 3.10.2 (13)) > get_options.adb:20:29: error: use named access type for "Processor" > instead of access parameter > gnatmake: > "/home/saulius/tests/ada/ada-pass-access-function/src/get_options.adb" > compilation error Is the behaviour of the GNAT compiler correct in both cases? If yes, why the legality of the anonymous access procedure type assignment depends on the initialisation code of /other/ fields? If not, which case is correct and will be retained in the future? (I have a bad feeling that the behaviour in (2) is correct and (1) is a compiler bug, although the behaviour in (1) fits neatly my purpose and seems to be totally safe in this particular case :) ...). I attach what I see as a minimal working example abstracted from my code. I will be grateful for any explanations, or any hint as to where to seek information (the mailing lists mentioned at http://sigada.org/resources.html#Google%20Groups are unfortunately mostly filled with spam and/or advertisements, seem to be unmoderated and unused). Sincerely yours, Saulius -- Dr. Saulius Gražulis Vilnius University Institute of Biotechnology, Saulėtekio al. 7 LT-10257 Vilnius, Lietuva (Lithuania) fax: (+370-5)-2234367 / phone (office): (+370-5)-2234353 mobile: (+370-684)-49802, (+370-614)-36366 -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. --------------Lhebw5jwCtLt0CbLj64tMwCT-- --------------PJKZB9dYBBlFXDIEqkDdLblX Content-Type: text/x-adasrc; charset=UTF-8; name="get_options.adb" Content-Disposition: attachment; filename="get_options.adb" Content-Transfer-Encoding: base64 d2l0aCBUZXh0X0lPOyB1c2UgVGV4dF9JTzsKCnBhY2thZ2UgYm9keSBHZXRf T3B0aW9ucyBpcwogICAKICAgcHJvY2VkdXJlIEhlbHAgKE9wdGlvbl9TdHJp bmcgOiBTdHJpbmc7IFBvcyA6IFBvc2l0aXZlKSBpcwogICBiZWdpbgogICAg ICBQdXRfTGluZSAoIlRoaXMgaXMgYSBoZWxwIGZyb20gdGhlIHBhY2thZ2Ug Li4uIik7CiAgIGVuZDsKICAgCiAgIGZ1bmN0aW9uIE9wdGlvbgogICAgICgK ICAgICAgU2hvcnRfT3B0aW9uIDogU3RyaW5nOwogICAgICBQcm9jZXNzb3Ig OiBhY2Nlc3MgcHJvY2VkdXJlCiAgICAgICAgKE9wdGlvbl9TdHJpbmcgOiBT dHJpbmc7IFBvc2l0aW9uIDogUG9zaXRpdmUpCiAgICAgKSByZXR1cm4gT3B0 aW9uX1R5cGUgaXMKICAgYmVnaW4KICAgICAgcmV0dXJuCiAgICAgICAgKAog ICAgICAgICBTaG9ydF9PcHRpb24gPT4gU2hvcnRfT3B0aW9uIChTaG9ydF9P cHRpb24nRmlyc3QgKyAxKSwKICAgICAgICAgVmFsdWVfUHJvY2Vzc29yID0+ IFByb2Nlc3NvciwKICAgICAgICAgLS0gRmFpbHMgdG8gY29tcGlsZSBpZiB0 aGUgZm9sb3dpbmcgbGluZSwgJ0lzX1ByZXNlbnQgPT4KICAgICAgICAgLS0g IEZhbHNlLCcsIGlzIGNvbW1lbnRlZCBvdXQgb3IgY2hhbmdlZCB0byB1c2Ug dGhlIGRlZmF1bHQKICAgICAgICAgLS0gIGluaXRpYWxpc2F0aW9uICgnSXNf UHJlc2VudCA9PiA8PicpOgogICAgICAgICBJc19QcmVzZW50ID0+IDw+LAog ICAgICAgICBvdGhlcnMgPT4gPD4KICAgICAgICApOwogICBlbmQ7CiAgIApl bmQgR2V0X09wdGlvbnM7Cg== --------------PJKZB9dYBBlFXDIEqkDdLblX Content-Type: text/x-adasrc; charset=UTF-8; name="get_options.ads" Content-Disposition: attachment; filename="get_options.ads" Content-Transfer-Encoding: base64 cGFja2FnZSBHZXRfT3B0aW9ucyBpcwogICAKICAgdHlwZSBPcHRpb25fUHJv Y2Vzc29yX1R5cGUgaXMgYWNjZXNzIHByb2NlZHVyZQogICAgIChPcHRpb25f U3RyaW5nIDogU3RyaW5nOyBQb3NpdGlvbiA6IFBvc2l0aXZlKTsKCiAgIHR5 cGUgT3B0aW9uX1R5cGUgaXMgcmVjb3JkCiAgICAgIFNob3J0X09wdGlvbiA6 IENoYXJhY3RlcjsKICAgICAgVmFsdWVfUHJvY2Vzc29yIDogT3B0aW9uX1By b2Nlc3Nvcl9UeXBlOwogICAgICBJc19QcmVzZW50IDogQm9vbGVhbiA6PSBG YWxzZTsKICAgZW5kIHJlY29yZDsKICAgCiAgIHR5cGUgT3B0aW9uX0FycmF5 IGlzIGFycmF5IChQb3NpdGl2ZSByYW5nZSA8Pikgb2YgT3B0aW9uX1R5cGU7 CiAgIAogICBwcm9jZWR1cmUgSGVscCAoT3B0aW9uX1N0cmluZyA6IFN0cmlu ZzsgUG9zIDogUG9zaXRpdmUpOwogICAKICAgZnVuY3Rpb24gT3B0aW9uCiAg ICAgKAogICAgICBTaG9ydF9PcHRpb24gOiBTdHJpbmc7CiAgICAgIFByb2Nl c3NvciA6IGFjY2VzcyBwcm9jZWR1cmUKICAgICAgICAoT3B0aW9uX1N0cmlu ZyA6IFN0cmluZzsgUG9zaXRpb24gOiBQb3NpdGl2ZSkKICAgICApIHJldHVy biBPcHRpb25fVHlwZTsKICAgCmVuZCBHZXRfT3B0aW9uczsK --------------PJKZB9dYBBlFXDIEqkDdLblX Content-Type: text/x-adasrc; charset=UTF-8; name="process_options.adb" Content-Disposition: attachment; filename="process_options.adb" Content-Transfer-Encoding: base64 cHJhZ21hIEFkYV8yMDIyOwoKd2l0aCBUZXh0X0lPOyB1c2UgVGV4dF9JTzsK d2l0aCBHZXRfT3B0aW9uczsgdXNlIEdldF9PcHRpb25zOwoKcHJvY2VkdXJl IFByb2Nlc3NfT3B0aW9ucyBpcwogICAKICAgcHJvY2VkdXJlIEhlbHAgKE9w dGlvbl9TdHJpbmcgOiBTdHJpbmc7IFBvcyA6IFBvc2l0aXZlKSBpcwogICBi ZWdpbgogICAgICBQdXRfTGluZSAoIlRoaXMgaXMgYSBoZWxwIGZyb20gdGhl IG1haW4gcHJvZ3JhbSAuLi4iKTsKICAgZW5kOwogICAKICAgT3B0aW9ucyA6 IE9wdGlvbl9BcnJheSA6PQogICAgICgKICAgICAgT3B0aW9uICgiLWgiLCBI ZWxwJ0FjY2VzcyksCiAgICAgIE9wdGlvbiAoIi1IIiwgR2V0X09wdGlvbnMu SGVscCdBY2Nlc3MpCiAgICAgKTsgICAKICAgCmJlZ2luCiAgIAogICAtLSBP cHRpb25zICgxKS5WYWx1ZV9Qcm9jZXNzb3IgOj0gR2V0X09wdGlvbnMuSGVs cCdBY2Nlc3M7IC0tIGNvbXBpbGVzIGFuZCB3b3JrcwogICAtLSBPcHRpb25z ICgxKS5WYWx1ZV9Qcm9jZXNzb3IgOj0gSGVscCdBY2Nlc3M7IC0tIGZhaWxz IGF0IGNvbXBpbGUgdGltZQogICAKICAgZm9yIE8gb2YgT3B0aW9ucyBsb29w CiAgICAgIFB1dF9MaW5lIChPLlNob3J0X09wdGlvbidJbWFnZSk7CiAgICAg IFB1dF9MaW5lIChPLklzX1ByZXNlbnQnSW1hZ2UpOwogICAgICBQdXRfTGlu ZSAoTy5WYWx1ZV9Qcm9jZXNzb3InSW1hZ2UpOwogICAgICBpZiBPLlZhbHVl X1Byb2Nlc3NvciAvPSBudWxsIHRoZW4KICAgICAgICAgTy5WYWx1ZV9Qcm9j ZXNzb3IgKCItLW9uZSIsIDEpOwogICAgICBlbmQgaWY7CiAgIGVuZCBsb29w OwogICAKZW5kOwo= --------------PJKZB9dYBBlFXDIEqkDdLblX--