[Ada] Spurious error passing access to class-wide interface type
authorJavier Miranda <miranda@adacore.com>
Mon, 22 Jul 2019 13:58:09 +0000 (13:58 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 22 Jul 2019 13:58:09 +0000 (13:58 +0000)
commit137dabdd82648ccd5f0adedea2fbb8504f6c7485
treec887c30fcdaabe5e2a8c2dee4cc5a8f7bd1c647f
parent2f8313ce5a14700907822a4f8c0dc18649276136
[Ada] Spurious error passing access to class-wide interface type

The compiler reports an spurious error when the formal parameter of a
subprogram is an access to a class wide interface type and the actual
parameter is an allocator of an object covering such interface type.

2019-07-22  Javier Miranda  <miranda@adacore.com>

gcc/ada/

* sem_res.adb (Resolve_Actuals): Replace code that displaces the
pointer to an allocated object to reference its secondary
dispatch table by a type conversion (which takes care of
handling all cases).

gcc/testsuite/

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

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