https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124179

--- Comment #3 from Liam Powell <liam at liampwll dot com> ---
I think I saw the error message and then went looking at the RM with the
preconception that procedures in general were already allowed there. I didn't
really think about the "or (a view of) a primitive subprogram of a limited
interface" which explains why the Dynamic Semantics rule is actually there.
Obviously we can not know at compile time if a call dispatches to an entry or a
procedure as a task or protected type can implement an interface so we have to
account for both.

There's also a hole in ACATS testing here (and GNAT as a whole) in that there's
no test to ensure that the abortable region never starts when an interface is
implemented by a procedure, or just limited interfaces in asynchronous_select
at all, however that does appear to work as expected based on poking at it for
a few minutes. As an aside, my patch broke interfaces implemented by tasks.

Reply via email to