[Ada] Error message on invalid conversion involving limited views
authorEd Schonberg <schonberg@adacore.com>
Mon, 21 May 2018 14:52:05 +0000 (14:52 +0000)
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>
Mon, 21 May 2018 14:52:05 +0000 (14:52 +0000)
commit516057d379930306bc240b7b2b4eedb2c9bb1aeb
treecc70f2f649a9342809957071fbb75959fdf5cf0c
parentdef6e435f48990bcf8aebe9432b9b1aea593e4e9
[Ada] Error message on invalid conversion involving limited views

A type conversion may be illegal if the expression in the conversion has a
limited view of a type. This patch expands the error report to indicate the
presence of a limited view, and when the context is a package body it suggests
the addition of a regular with-clause to make the full view available.

Compiling client.adb must yield:

   client.adb:6:16: invalid conversion, not compatible with limited view
      of type "Map_Type" defined at maps.ads:2
   client.adb:6:16: add with_clause for "Maps" to current unit

----
package Maps is
  type Map_Type is null record;
end;
----
limited with Maps;
package Payloads is
  function Get_Map return access Maps.Map_Type;
end;
----
with Maps;
package Maps2 is
  type New_Map_Type is new Maps.Map_Type;
end;
----
with Maps2;
package Client is
  procedure Foo (Map : Maps2.New_Map_Type) is null;
  procedure Bar;
end;
----
with Payloads;
package body Client is
  procedure Bar is
  begin
     Foo (Maps2.New_Map_Type (Payloads.Get_Map.all));
  end;
end;

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

gcc/ada/

* sem_res.adb (Valid_Conversion): Improve error message on an illegal
type conversion whose expression has a limited view of a type.

From-SVN: r260466
gcc/ada/ChangeLog
gcc/ada/sem_res.adb