From 34c71b0472f8d3d681adffc100b054be0cb14a15 Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Thu, 23 Mar 2023 21:00:54 +0100 Subject: [PATCH] ada: Cleanup expansion of membership operators into attribute Valid Code cleanup; semantics is unaffected. gcc/ada/ * exp_ch4.adb (Is_OK_Object_Reference): Replace loop with a call to Unqual_Conv; consequently, change object from variable to constant; replace an IF statement with an AND THEN expression. --- gcc/ada/exp_ch4.adb | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb index 48692c06f010..438cd45ef0ee 100644 --- a/gcc/ada/exp_ch4.adb +++ b/gcc/ada/exp_ch4.adb @@ -6492,34 +6492,16 @@ package body Exp_Ch4 is ---------------------------- function Is_OK_Object_Reference (Nod : Node_Id) return Boolean is - Obj_Ref : Node_Id; + Obj_Ref : constant Node_Id := Original_Node (Nod); + -- The original operand begin - -- Inspect the original operand - - Obj_Ref := Original_Node (Nod); - -- The object reference must be a source construct, otherwise the -- codefix suggestion may refer to nonexistent code from a user -- perspective. - if Comes_From_Source (Obj_Ref) then - loop - if Nkind (Obj_Ref) in - N_Type_Conversion | - N_Unchecked_Type_Conversion | - N_Qualified_Expression - then - Obj_Ref := Expression (Obj_Ref); - else - exit; - end if; - end loop; - - return Is_Object_Reference (Obj_Ref); - end if; - - return False; + return Comes_From_Source (Obj_Ref) + and then Is_Object_Reference (Unqual_Conv (Obj_Ref)); end Is_OK_Object_Reference; -- Start of processing for Substitute_Valid_Test -- 2.47.2