]> git.ipfire.org Git - thirdparty/gcc.git/commit
[Ada] Do not freeze subprogram body without spec too early
authorEric Botcazou <ebotcazou@adacore.com>
Mon, 9 May 2022 06:56:27 +0000 (08:56 +0200)
committerPierre-Marie de Rodat <derodat@adacore.com>
Wed, 1 Jun 2022 08:43:19 +0000 (08:43 +0000)
commit4e8310b33c37d1eaaa4ffd08aca404a787252cf5
treea22b706c4c8350c6f8962a9cd87ef66daaef7eed
parentce0bbf28fb11b75ebc7d0140ccc38857c03303d9
[Ada] Do not freeze subprogram body without spec too early

This fixes a small oddity whereby a subprogram body declared without a spec
would be frozen before its entity is fully processed as an overloaded name.
Now the latter step computes useful information, for example whether the
body is a (late) primitive of a tagged type, which can be required during
the freezing process.  The change also adjusts Check_Dispatching_Operation
accordingly.  No functional changes.

gcc/ada/

* sem_ch6.adb (Analyze_Subprogram_Body_Helper): For the case where
there is no previous declaration, freeze the body entity only after
it has been processed as a new overloaded name.
Use Was_Expression_Function to recognize expression functions.
* sem_disp.adb (Check_Dispatching_Operation): Do not require a body
which is the last primitive to be frozen here.
gcc/ada/sem_ch6.adb
gcc/ada/sem_disp.adb