exp_disp.adb (Expand_Interface_Conversion): If the target type is a tagged synchronized type, use corresponding record type.

2008-08-01  Ed Schonberg  <schonberg@adacore.com>

	* exp_disp.adb (Expand_Interface_Conversion): If the target type is a
	tagged synchronized type, use corresponding record type.

From-SVN: r138463
This commit is contained in:
Ed Schonberg 2008-08-01 09:38:45 +02:00 committed by Arnaud Charlet
parent 3d2e1f1213
commit 0f300ef506
1 changed files with 7 additions and 0 deletions

View File

@ -766,6 +766,13 @@ package body Exp_Disp is
Iface_Typ := Root_Type (Iface_Typ);
end if;
-- If the target type is a tagged synchronized type, the dispatch table
-- info is in the correspondoing record type.
if Is_Concurrent_Type (Iface_Typ) then
Iface_Typ := Corresponding_Record_Type (Iface_Typ);
end if;
pragma Assert (not Is_Static
or else (not Is_Class_Wide_Type (Iface_Typ)
and then Is_Interface (Iface_Typ)));