From: Ed Schonberg Date: Thu, 24 May 2018 13:05:49 +0000 (+0000) Subject: [Ada] Add warning on redundant others_clause in array aggregate X-Git-Tag: upstream/12.2.0~31568 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=861e589e8b957713fb02b5db0773c39bed2dcc61;p=platform%2Fupstream%2Fgcc.git [Ada] Add warning on redundant others_clause in array aggregate This patch adds a warning on a redundant others_clause in an array aggregate when all index positions are already specified in previous positional or named associations. The warning is emitted when Warn_On_Redundant_Constructs is enabled. 2018-05-24 Ed Schonberg gcc/ada/ * exp_aggr.adb (Flatten): Add a warning on an others clause in an array aggregate with static bounds when named associations cover all index positions and the others clause is redundant. gcc/testsuite/ * gnat.dg/others1.adb: New testcase. From-SVN: r260657 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index b30baad..2e80976 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,9 @@ +2018-05-24 Ed Schonberg + + * exp_aggr.adb (Flatten): Add a warning on an others clause in an array + aggregate with static bounds when named associations cover all index + positions and the others clause is redundant. + 2018-05-24 Raphael Amiard * libgnat/a-cohama.ads: Add documentation. diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb index 356686e..81d3553 100644 --- a/gcc/ada/exp_aggr.adb +++ b/gcc/ada/exp_aggr.adb @@ -4581,6 +4581,12 @@ package body Exp_Aggr is end if; end loop; + if Rep_Count = 0 + and then Warn_On_Redundant_Constructs + then + Error_Msg_N ("there are no others?r?", Elmt); + end if; + exit Component_Loop; -- Case of a subtype mark, identifier or expanded name diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ad047a4..6ab7157 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2018-05-24 Ed Schonberg + + * gnat.dg/others1.adb: New testcase. + 2018-05-24 Justin Squirek * gnat.dg/raise_expr.adb: New testcase. diff --git a/gcc/testsuite/gnat.dg/others1.adb b/gcc/testsuite/gnat.dg/others1.adb new file mode 100644 index 0000000..59393fa --- /dev/null +++ b/gcc/testsuite/gnat.dg/others1.adb @@ -0,0 +1,13 @@ +-- { dg-do compile } +-- { dg-options "-gnatwr" } + +procedure Others1 is + type Ar is Array (1..10) of Natural; + function five return integer is (5); + THing : Ar; +begin + Thing := (1..5 => 22, 6 ..10 => 111, others => Five); -- { dg-warning "there are no others" } + if Thing (1) /= thing (5) then + raise Program_Error; + end if; +end;