From: charlet Date: Mon, 18 Apr 2016 10:27:19 +0000 (+0000) Subject: 2016-04-18 Hristian Kirtchev X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=86d6ea22c28fd6b6fe82e510c2a111d8405556d0;p=thirdparty%2Fgcc.git 2016-04-18 Hristian Kirtchev * sem_ch3.adb (Analyze_Object_Declaration): Do not consider internally generated expressions when trying to determine whether a formal parameter of a tagged type subject to Extensions_Visible False is used to initialize an object. * sem_ch4.adb (Analyze_Type_Conversion): Do not consider internally generated expressions when trying to determine whether a formal parameter of a tagged type subject to Extensions_Visible False is used in a type conversion. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235117 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index fd8d79ada767..11833965241f 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,14 @@ +2016-04-18 Hristian Kirtchev + + * sem_ch3.adb (Analyze_Object_Declaration): Do not consider + internally generated expressions when trying to determine whether + a formal parameter of a tagged type subject to Extensions_Visible + False is used to initialize an object. + * sem_ch4.adb (Analyze_Type_Conversion): Do not consider + internally generated expressions when trying to determine whether + a formal parameter of a tagged type subject to Extensions_Visible + False is used in a type conversion. + 2016-04-18 Hristian Kirtchev * sem_res.adb (Is_Protected_Operation_Call): diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index d401bd181a3d..56e8a74f2bff 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -3776,9 +3776,13 @@ package body Sem_Ch3 is -- A formal parameter of a specific tagged type whose related -- subprogram is subject to pragma Extensions_Visible with value -- "False" cannot be implicitly converted to a class-wide type by - -- means of an initialization expression (SPARK RM 6.1.7(3)). + -- means of an initialization expression (SPARK RM 6.1.7(3)). Do + -- not consider internally generated expressions. - if Is_Class_Wide_Type (T) and then Is_EVF_Expression (E) then + if Is_Class_Wide_Type (T) + and then Comes_From_Source (E) + and then Is_EVF_Expression (E) + then Error_Msg_N ("formal parameter with Extensions_Visible False cannot be " & "implicitly converted to class-wide type", E); diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb index d84ef6638db3..bdcf0e112e15 100644 --- a/gcc/ada/sem_ch4.adb +++ b/gcc/ada/sem_ch4.adb @@ -5158,9 +5158,13 @@ package body Sem_Ch4 is -- A formal parameter of a specific tagged type whose related subprogram -- is subject to pragma Extensions_Visible with value "False" cannot - -- appear in a class-wide conversion (SPARK RM 6.1.7(3)). + -- appear in a class-wide conversion (SPARK RM 6.1.7(3)). Do not check + -- internally generated expressions. - if Is_Class_Wide_Type (Typ) and then Is_EVF_Expression (Expr) then + if Is_Class_Wide_Type (Typ) + and then Comes_From_Source (Expr) + and then Is_EVF_Expression (Expr) + then Error_Msg_N ("formal parameter with Extensions_Visible False cannot be " & "converted to class-wide type", Expr); @@ -6602,7 +6606,7 @@ package body Sem_Ch4 is -- Boolean, then we know that the other operand cannot resolve to -- Boolean (since we got no interpretations), but in that case we -- pretty much know that the other operand should be Boolean, so - -- resolve it that way (generating an error) + -- resolve it that way (generating an error). elsif Nkind_In (N, N_Op_And, N_Op_Or, N_Op_Xor) then if Etype (L) = Standard_Boolean then