[Ada] Illegal selection of first object in a task type's body not detected
authorGary Dismukes <dismukes@adacore.com>
Wed, 14 Aug 2019 09:50:46 +0000 (09:50 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 14 Aug 2019 09:50:46 +0000 (09:50 +0000)
commit27de857e21ff577d5b478f3c98e4f3a8ca3b51b3
treec163a22dde0f76585b0540f4e0a30a9c9d966784
parentbc1f44ef8f87228591b7ecd74dac324812c0ff47
[Ada] Illegal selection of first object in a task type's body not detected

The compiler was improperly allowing selection of an object declared
within a task body when the prefix was of the task type, specifically in
the case where the object was the very first declared in the body
(selections of later body declarations were being flagged).  The flag
Is_Private_Op was only set at the point of the first "private"
declaration of the type in cases where the first declaration's name
didn't match the selector.

2019-08-14  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

* sem_ch4.adb (Analyze_Selected_Component): In the case where
the prefix is of a concurrent type, and the selected entity
matching the selector is the first private declaration of the
type (such as the first local variable in a task's body), set
Is_Private_Op.

gcc/testsuite/

* gnat.dg/task5.adb: New testcase.

From-SVN: r274446
gcc/ada/ChangeLog
gcc/ada/sem_ch4.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/task5.adb [new file with mode: 0644]