sem_cat.adb (Validate_Remote_Types_Type_Conversion): Perform check to forbid conversion of a local access-to-subprogram type to a...
2005-03-29 Thomas Quinot <quinot@adacore.com> * sem_cat.adb (Validate_Remote_Types_Type_Conversion): Perform check to forbid conversion of a local access-to-subprogram type to a remote one. * sem_util.adb (Wrong_Type): For a record type that is the expanded equivalent type for a remote access-to-subprogram type, go back to the original RAS entity when displaying an error message, so the casing is the original source casing. From-SVN: r97182
This commit is contained in:
parent
73e69194b5
commit
6332d8420e
@ -6,7 +6,7 @@
|
||||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1992-2004, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1992-2005, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
@ -1529,13 +1529,22 @@ package body Sem_Cat is
|
||||
if Is_Remote_Access_To_Subprogram_Type (E)
|
||||
and then not Is_Remote_Access_To_Subprogram_Type (S)
|
||||
then
|
||||
Error_Msg_N ("incorrect conversion of remote operand", N);
|
||||
Error_Msg_N
|
||||
("incorrect conversion of remote operand to local type", N);
|
||||
return;
|
||||
|
||||
elsif not Is_Remote_Access_To_Subprogram_Type (E)
|
||||
and then Is_Remote_Access_To_Subprogram_Type (S)
|
||||
then
|
||||
Error_Msg_N
|
||||
("incorrect conversion of local operand to remote type", N);
|
||||
return;
|
||||
|
||||
elsif Is_Remote_Access_To_Class_Wide_Type (E)
|
||||
and then not Is_Remote_Access_To_Class_Wide_Type (S)
|
||||
then
|
||||
Error_Msg_N ("incorrect conversion of remote operand", N);
|
||||
Error_Msg_N
|
||||
("incorrect conversion of remote operand to local type", N);
|
||||
return;
|
||||
end if;
|
||||
|
||||
|
@ -6770,16 +6770,20 @@ package body Sem_Util is
|
||||
Found_Scope := Scope (Found_Scope);
|
||||
|
||||
exit when Expec_Scope = Standard_Standard
|
||||
or else
|
||||
Found_Scope = Standard_Standard
|
||||
or else
|
||||
not Comes_From_Source (Expec_Scope)
|
||||
or else
|
||||
not Comes_From_Source (Found_Scope);
|
||||
or else Found_Scope = Standard_Standard
|
||||
or else not Comes_From_Source (Expec_Scope)
|
||||
or else not Comes_From_Source (Found_Scope);
|
||||
end loop;
|
||||
end;
|
||||
|
||||
Error_Msg_NE ("expected}!", Expr, Expec_Type);
|
||||
if Is_Record_Type (Expec_Type)
|
||||
and then Present (Corresponding_Remote_Type (Expec_Type))
|
||||
then
|
||||
Error_Msg_NE ("expected}!", Expr,
|
||||
Corresponding_Remote_Type (Expec_Type));
|
||||
else
|
||||
Error_Msg_NE ("expected}!", Expr, Expec_Type);
|
||||
end if;
|
||||
|
||||
if Is_Entity_Name (Expr)
|
||||
and then Is_Package (Entity (Expr))
|
||||
|
Loading…
Reference in New Issue
Block a user