From patchwork Wed May 18 08:43:14 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pierre-Marie de Rodat X-Patchwork-Id: 54134 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 9F6633858D3C for ; Wed, 18 May 2022 08:56:57 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 9F6633858D3C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1652864217; bh=7qkg86o/bHQKTDSbLOrDy2y4eX2ZXBSDPKObx+envyc=; h=Date:To:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=XD/+xEMIVbskR9WUdUkBYxyd1+Hy+mZUsu/bIVTSjV5sprEHk+p3PhdqcyN63LBT5 ndK31lRFS1NDQfpj36UqRg2ZTMNcKV822Dhb8uUwP6Q4mkadsm5cLTp7FG5f8c5d0d wEg5HoJKGkXtoV5eDP3mZNhe0KLzMAD5sFg+6+Ac= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by sourceware.org (Postfix) with ESMTPS id 1533B3857C50 for ; Wed, 18 May 2022 08:43:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1533B3857C50 Received: by mail-wr1-x42d.google.com with SMTP id u27so816374wru.8 for ; Wed, 18 May 2022 01:43:17 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:mime-version :content-disposition; bh=7qkg86o/bHQKTDSbLOrDy2y4eX2ZXBSDPKObx+envyc=; b=GDI86kZBGSHQ7+x6sUmDQnXXpEG3K+Hsbcgmy4H10jQeEeM1Jb6kceYIuoh215y0pE uLYoinZB4VDqa+Cl6exZunYTrhBZfb78y+nVzYCmdfWyAyt4gHlr+XkZQ+7ci4jVL2P2 ZlhV7wnAESapdTjtmGEONlkNSq7gcDo5qF1sxMkvY6zPrtPL6zdmDZCKftBiOVjQyFLq DFXb39M/biFcg8Wn027AHMwtOAEVjEvSqORdVW25eMcfJKNFJRNAlcJtJTROW4SqbeZB Ulj3k9Q0L0LaAlYa4v2pJOtPWRqsUHlHoRDziimH1Lc663PGirOQTqq7uyzKJoEzf1Yd CQZw== X-Gm-Message-State: AOAM531pYnm7AH2uM+5+bWmvBC8XwqqhWZiG3uTyXzwR4+FaIffiVlDJ tl9cLe/6BF2ZcJi03U53CIHDUu0SymOGcQ== X-Google-Smtp-Source: ABdhPJytuWrttx2mp2NtslSVJ/PB1SuwVomsPFdmwspcLvZg5tuPqSmVCr4Xoeoo9rTVEXZer2n9tg== X-Received: by 2002:adf:e849:0:b0:20d:129c:6a2d with SMTP id d9-20020adfe849000000b0020d129c6a2dmr7906869wrn.533.1652863395870; Wed, 18 May 2022 01:43:15 -0700 (PDT) Received: from adacore.com ([45.147.211.82]) by smtp.gmail.com with ESMTPSA id n10-20020a5d6b8a000000b0020c5253d8dfsm1283763wrx.43.2022.05.18.01.43.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 May 2022 01:43:15 -0700 (PDT) Date: Wed, 18 May 2022 08:43:14 +0000 To: gcc-patches@gcc.gnu.org Subject: [Ada] Fix the parsing for delta aggregate Message-ID: <20220518084314.GA3334590@adacore.com> MIME-Version: 1.0 Content-Disposition: inline X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Pierre-Marie de Rodat via Gcc-patches From: Pierre-Marie de Rodat Reply-To: Pierre-Marie de Rodat Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" In Ada 2022, delta aggregate must use parentheses not square brackets except array delta aggregates. Tested on x86_64-pc-linux-gnu, committed on trunk gcc/ada/ * gen_il-gen-gen_nodes.adb (Gen_IL.Gen.Gen_Nodes): Add Is_Homogeneous_Aggregate field for N_Delta_Aggregate nodes. * par-ch4.adb (P_Aggregate_Or_Paren_Expr): Minor reformatting. * sem_aggr.adb (Resolve_Delta_Aggregate): Reject square brackets for record aggregate. (Resolve_Record_Aggregate): Uniformise error message. diff --git a/gcc/ada/gen_il-gen-gen_nodes.adb b/gcc/ada/gen_il-gen-gen_nodes.adb --- a/gcc/ada/gen_il-gen-gen_nodes.adb +++ b/gcc/ada/gen_il-gen-gen_nodes.adb @@ -509,6 +509,7 @@ begin -- Gen_IL.Gen.Gen_Nodes Cc (N_Delta_Aggregate, N_Subexpr, (Sy (Expression, Node_Id, Default_Empty), + Sy (Is_Homogeneous_Aggregate, Flag), Sy (Component_Associations, List_Id, Default_No_List))); Cc (N_Extension_Aggregate, N_Subexpr, diff --git a/gcc/ada/par-ch4.adb b/gcc/ada/par-ch4.adb --- a/gcc/ada/par-ch4.adb +++ b/gcc/ada/par-ch4.adb @@ -1682,6 +1682,7 @@ package body Ch4 is case Start_Token is when Tok_Left_Bracket => + Set_Component_Associations (Aggregate_Node, Assoc_List); Set_Is_Homogeneous_Aggregate (Aggregate_Node); T_Right_Bracket; diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb --- a/gcc/ada/sem_aggr.adb +++ b/gcc/ada/sem_aggr.adb @@ -3291,6 +3291,15 @@ package body Sem_Aggr is if Is_Array_Type (Typ) then Resolve_Delta_Array_Aggregate (N, Typ); else + + -- Delta aggregates for record types must use parentheses, + -- not square brackets. + + if Is_Homogeneous_Aggregate (N) then + Error_Msg_N + ("delta aggregates for record types must use (), not '[']", N); + end if; + Resolve_Delta_Record_Aggregate (N, Typ); end if; @@ -4916,7 +4925,7 @@ package body Sem_Aggr is if Nkind (N) = N_Aggregate and then Is_Homogeneous_Aggregate (N) then - Error_Msg_N ("record aggregate must use () and not '[']", N); + Error_Msg_N ("record aggregate must use (), not '[']", N); return; end if;