[Ada] Spurious error on Ghost null procedure
authorHristian Kirtchev <kirtchev@adacore.com>
Wed, 14 Nov 2018 11:42:21 +0000 (11:42 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Wed, 14 Nov 2018 11:42:21 +0000 (11:42 +0000)
commita2c54c951479b2eb5315f859a7035f48a3256c50
tree402862c69eea358bd107637f10eb9391ceb19504
parentb5f581cdbba4f24c762f9e7d9741b7488bf752d7
[Ada] Spurious error on Ghost null procedure

This patch modifies the analysis (which is really expansion) of null
procedures to set the Ghost mode of the spec when the null procedure
acts as a completion.  This ensures that all nodes and entities
generated by the expansion are marked as Ghost, and provide a proper
context for references to Ghost entities.

2018-11-14  Hristian Kirtchev  <kirtchev@adacore.com>

gcc/ada/

* sem_ch6.adb (Analyze_Null_Procedure): Capture Ghost and
SPARK-related global state at the start of the routine. Set the
Ghost mode of the completed spec if any.  Restore the saved
Ghost and SPARK-related global state on exit from the routine.

gcc/testsuite/

* gnat.dg/ghost1.adb, gnat.dg/ghost1.ads: New testcase.

From-SVN: r266132
gcc/ada/ChangeLog
gcc/ada/sem_ch6.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/ghost1.adb [new file with mode: 0644]
gcc/testsuite/gnat.dg/ghost1.ads [new file with mode: 0644]