[Ada] Reject junk expressions in attribute Update

Message ID 20200619082833.GA31292@adacore.com
State New
Headers show
  • [Ada] Reject junk expressions in attribute Update
Related show

Commit Message

Pierre-Marie de Rodat June 19, 2020, 8:28 a.m.
Attribute Update only makes sense with named component associations. The
positional component associations were silently ignored by both
analysis, resolution and expansion; now they are rejected as illegal.

Tested on x86_64-pc-linux-gnu, committed on trunk

2020-06-19  Piotr Trojanek  <trojanek@adacore.com>


	* sem_attr.adb (Analyze_Attribute): Reject illegal positional
	component associations; fix syntax in comment about named
	component associations.


--- gcc/ada/sem_attr.adb
+++ gcc/ada/sem_attr.adb
@@ -6836,7 +6836,7 @@  package body Sem_Attr is
             --  Verify the consistency of types when the current component is
             --  part of a miltiple component update.
-            --    Comp_1, ..., Comp_N => <value>
+            --    Comp_1 | ... | Comp_N => <value>
             if Present (Etype (Comp)) then
                Base_Typ := Base_Type (Etype (Comp));
@@ -6877,6 +6877,11 @@  package body Sem_Attr is
          elsif Nkind (E1) /= N_Aggregate then
             Error_Attr ("attribute % requires component association list", N);
+         elsif Present (Expressions (E1)) then
+            Error_Attr ("attribute % requires named component associations",
+                        First (Expressions (E1)));
          end if;
          --  Inspect the update aggregate, looking at all the associations and