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 <schonberg@adacore.com>
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
+2018-05-24 Ed Schonberg <schonberg@adacore.com>
+
+ * 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 <amiard@adacore.com>
* libgnat/a-cohama.ads: Add documentation.
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
+2018-05-24 Ed Schonberg <schonberg@adacore.com>
+
+ * gnat.dg/others1.adb: New testcase.
+
2018-05-24 Justin Squirek <squirek@adacore.com>
* gnat.dg/raise_expr.adb: New testcase.
--- /dev/null
+-- { 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;