From: Ed Schonberg Date: Thu, 24 Dec 2020 01:21:13 +0000 (-0500) Subject: [Ada] Spurious warning about premature use of selected component X-Git-Tag: basepoints/gcc-13~7956 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3fcdd5264de355acf01d30b7af6edd614080f1d3;p=thirdparty%2Fgcc.git [Ada] Spurious warning about premature use of selected component gcc/ada/ * sem_warn.adb (Check_References): Do not emit warning on a selected component when enclosing type has no discriminant and type of component has partial initialization. --- diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb index b5275a8b019d..0be6b39c7960 100644 --- a/gcc/ada/sem_warn.adb +++ b/gcc/ada/sem_warn.adb @@ -1523,6 +1523,17 @@ package body Sem_Warn is -- uninitialized component to get a better message. elsif Nkind (Parent (UR)) = N_Selected_Component then + -- Suppress possibly superfluous warning if component + -- is known to exist and is partially initialized. + + if not Has_Discriminants (Etype (E1)) + and then + Is_Partially_Initialized_Type + (Etype (Parent (UR)), False) + then + goto Continue; + end if; + Error_Msg_Node_2 := Selector_Name (Parent (UR)); if not Comes_From_Source (Parent (UR)) then