@@ -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
From: Piotr Trojanek <trojanek@adacore.com> 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. Tested on x86_64-pc-linux-gnu, committed on master. --- gcc/ada/exp_ch4.adb | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-)