[Ada] Spurious error on dependent expression that is an array
authorEd Schonberg <schonberg@adacore.com>
Mon, 3 Dec 2018 15:49:50 +0000 (15:49 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 3 Dec 2018 15:49:50 +0000 (15:49 +0000)
commitcddd902d35bfef2bf6cea89b63d6dea23e0babed
treeed5a5e86f58663c1b86be9c8be960cae4e38edd0
parent2e8f79193221a772798265b238b11c0549fb9e40
[Ada] Spurious error on dependent expression that is an array

This patch fixes a spurious error on a array expression that is a
dependent expression of an if-expression, when the length of the array
matches that imposed by the context, but the bounds of both differ, in
particular when the expression and the context are both null arrays with
different bounds.

2018-12-03  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

* sem_res.adb (Apply_Check): For array types, apply a length
check rather than a qualification, to avoid spurious errors when
the value of a dependend expression has a matching length but
different bounds from those of the type of the contect.

gcc/testsuite/

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

From-SVN: r266758
gcc/ada/ChangeLog
gcc/ada/sem_res.adb
gcc/testsuite/ChangeLog
gcc/testsuite/gnat.dg/array33.adb [new file with mode: 0644]