comp.lang.ada
 help / color / mirror / Atom feed
* expression functions and raise expressions
@ 2018-03-03 18:39 Jere
  2018-03-03 20:03 ` Jeffrey R. Carter
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Jere @ 2018-03-03 18:39 UTC (permalink / 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.  

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-03-07 22:39 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-03 18:39 expression functions and raise expressions Jere
2018-03-03 20:03 ` 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox