From: Gary Dismukes Date: Thu, 31 Jul 2008 13:53:55 +0000 (+0200) Subject: 2008-07-31 Gary Dismukes X-Git-Tag: releases/gcc-4.4.0~3556 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eff332d9a543eca97da3214564b0e91913980ebd;p=thirdparty%2Fgcc.git 2008-07-31 Gary Dismukes * sem_aggr.adb: (Resolve_Record_Aggregate): Bypass error that a type without components must have a "null record" aggregate when compiling for Ada 2005, since it's legal to give an aggregate of form (others => <>) for such a type. From-SVN: r138412 --- diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb index 4f50dc017898..d16b7d6b8c46 100644 --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -2770,7 +2770,17 @@ package body Sem_Aggr is Error_Msg_N ("record aggregate cannot be null", N); return; - elsif No (First_Entity (Typ)) then + -- If the type has no components, then the aggregate should either + -- have "null record", or in Ada 2005 it could instead have a single + -- component association given by "others => <>". For Ada 95 we flag + -- an error at this point, but for Ada 2005 we proceed with checking + -- the associations below, which will catch the case where it's not + -- an aggregate with "others => <>". Note that the legality of a <> + -- aggregate for a null record type was established by AI05-016. + + elsif No (First_Entity (Typ)) + and then Ada_Version < Ada_05 + then Error_Msg_N ("record aggregate must be null", N); return; end if;