From: Jere <jhb.chat@gmail.com>
Subject: expression functions and raise expressions
Date: Sat, 3 Mar 2018 10:39:40 -0800 (PST)
Date: 2018-03-03T10:39:40-08:00 [thread overview]
Message-ID: <60f20df9-4b33-4f29-829e-2fccb89a650a@googlegroups.com> (raw)
I wanted to double check if I am reading the RM correctly.
From 6.8 2/4, I see that a function expression can consist entirely
of an (expression)
Section 4.4 2 says that an expression can be made up of a single
(relation)
Section 4.4 3/4 further says a relation can be a raise expression.
Given that, I expect that the following declaration/definition is correct:
function Reference
(Container : aliased in out Container_Type;
Cursor : Cursor_Type)
return Reference_Type
is (raise My_Exception
with "Reference not supported for Ordered_Sets")
with Inline;
GNAT GPL 2017 accepts it, but FSF GNAT 7.2 for mingw64 on Win10
gives some errors:
test.ads:328:11: (Ada 2005) cannot copy object of a limited type (RM-2005 6.5(5.5/2))
test.ads:328:11: return by reference not permitted in Ada 2005
NOTE: Reference_Type is untagged limited discriminated null
record with Implicit_Dereference defined. Also note that a similar
function that returns an aggregate initialization compiles fine
on both versions.
I am compiling with Ada2012 mode (-gnat12 option)
I believe this to be a bug in GCC 7.2 for mingw64, but wanted to
make sure I wasn't misreading the RM.
next reply other threads:[~2018-03-03 18:39 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-03 18:39 Jere [this message]
2018-03-03 20:03 ` expression functions and raise expressions Jeffrey R. Carter
2018-03-03 22:53 ` Jere
2018-03-03 20:54 ` Simon Wright
2018-03-03 22:54 ` Jere
2018-03-05 20:21 ` Randy Brukardt
2018-03-07 22:39 ` Jere
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox