[Ada] Missing error on illegal categorization dependency
authorHristian Kirtchev <kirtchev@adacore.com>
Tue, 22 May 2018 13:17:22 +0000 (13:17 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 22 May 2018 13:17:22 +0000 (13:17 +0000)
commit80f0c69c2c698023f76d0e5db7e2b42e1fd7b637
treebd5e35605e38e6b79c8cb9bf7ab8721a6bbc1cdf
parent440ed9f839a068948c72441eda2ef3da515f4656
[Ada] Missing error on illegal categorization dependency

This patch modifies the analysis of subprogram declarations to ensure that an
aspect which is converted into a categorization pragma is properly taken into
account when verifying the dependencies of a subprogram unit.

------------
-- Source --
------------

--  pack.ads

package Pack is end Pack;

--  proc1.ads

with Pack;

procedure Proc1 with Pure;

--  proc2.ads

with Pack;

procedure Proc2;
pragma Pure (Proc2);

----------------------------
-- Compilation and output --
----------------------------

$ gcc -c proc1.ads
$ gcc -c proc2.ads
proc1.ads:1:06: cannot depend on "Pack" (wrong categorization)
proc1.ads:1:06: pure unit cannot depend on non-pure unit
proc2.ads:1:06: cannot depend on "Pack" (wrong categorization)
proc2.ads:1:06: pure unit cannot depend on non-pure unit

2018-05-22  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* sem_ch6.adb (Analyze_Subprogram_Declaration): Set the proper
categorization of the unit after processing the aspects in case one of
its aspects is converted into a categorization pragma.

From-SVN: r260506
gcc/ada/ChangeLog
gcc/ada/sem_ch6.adb