[Ada] Crash on expression function and tagged types
authorEd Schonberg <schonberg@adacore.com>
Tue, 21 Aug 2018 14:49:42 +0000 (14:49 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Tue, 21 Aug 2018 14:49:42 +0000 (14:49 +0000)
commit084e3bd183b1b7253f1216b5b165bde7bfbf6bf6
tree15c1266f3c0df930ae6ce191b1a33c0e4c9831dc
parent0db1c3863d5167dd47e5a0ab4a714ace875a9202
[Ada] Crash on expression function and tagged types

This patch fixes a compiler abort on an expression function whose
expression includes tagged types that have not been frozen before the
generated body of the function is analyzed, even though that body is
inserted at the end of the current declarative part.

2018-08-21  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_ch6.adb (Analyze_Subprogram_Body_Helper, Mask_Type):
Refine the handling of freezing types for expression functions
that are not completions, when analyzing the generated body for
the function: the body is inserted at the end of the enclosing
declarative part, and its analysis may freeze types declared in
the same scope that have not been frozen yet.

gcc/testsuite/

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

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