ada: Spurious error on class-wide preconditions
The compiler reports an spurious error when a class-wide precondition expression has a class-wide type conversion. gcc/ada/ * sem_res.adb (Resolve_Type_Conversion): Do not warn on conversion to class-wide type on internally build helpers of class-wide preconditions.
This commit is contained in:
parent
c5f673dbc2
commit
3ad67df218
1 changed files with 12 additions and 0 deletions
|
@ -12455,6 +12455,18 @@ package body Sem_Res is
|
|||
elsif Orig_T = Base_Type (Standard_Long_Long_Integer) then
|
||||
null;
|
||||
|
||||
-- Do not warn on conversion to class-wide type on helpers of
|
||||
-- class-wide preconditions because in this context the warning
|
||||
-- would be spurious (since the class-wide precondition has been
|
||||
-- installed in the return statement of the helper, which has a
|
||||
-- class-wide formal type instead of a regular tagged type).
|
||||
|
||||
elsif Is_Class_Wide_Type (Orig_T)
|
||||
and then Is_Subprogram_Or_Generic_Subprogram (Current_Scope)
|
||||
and then Present (Class_Preconditions_Subprogram (Current_Scope))
|
||||
then
|
||||
null;
|
||||
|
||||
-- Here we give the redundant conversion warning. If it is an
|
||||
-- entity, give the name of the entity in the message. If not,
|
||||
-- just mention the expression.
|
||||
|
|
Loading…
Add table
Reference in a new issue