comp.lang.ada
 help / color / mirror / Atom feed
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.  

             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