From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7871) id 3CAD93858D3C; Tue, 8 Nov 2022 08:41:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3CAD93858D3C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1667896875; bh=70GfI98OKHZde9ckk0kHfoIfFaVctfRECQQ8vg4zE8M=; h=From:To:Subject:Date:From; b=Z4a7bUrVkMPgXbe/rfeq7C8nNoXQ0Y9zoRJkVcwk2LxjreNwWJIXiObxaSDSTY8/Y DJ1/VcoI1+abFUz6ZKwfz4ZBqEU2dcPHU7TralxmcH5dryOtUUg5LWoYTv0mXJcO/v +j/YZjdDM82W6m1jXnYvECGlrdWvF6WBlTLxODrk= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Marc Poulhi?s To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-3786] ada: Preanalyze classwide contracts as spec expressions X-Act-Checkin: gcc X-Git-Author: Ronan Desplanques X-Git-Refname: refs/heads/master X-Git-Oldrev: c2596d4533389b8898516b444f8464a1720711af X-Git-Newrev: 788e5f06d4e804dcc9e255fa448ba0c3db1586c4 Message-Id: <20221108084115.3CAD93858D3C@sourceware.org> Date: Tue, 8 Nov 2022 08:41:15 +0000 (GMT) List-Id: https://gcc.gnu.org/g:788e5f06d4e804dcc9e255fa448ba0c3db1586c4 commit r13-3786-g788e5f06d4e804dcc9e255fa448ba0c3db1586c4 Author: Ronan Desplanques Date: Mon Oct 17 12:00:09 2022 +0200 ada: Preanalyze classwide contracts as spec expressions Classwide contracts are "spec expressions" as defined in the documentation in sem.ads. Before this patch, the instances of classwide contracts that are destined to class conditions merging were not preanalyzed as spec expressions. That caused preanalysis to emit spurious errors in some cases. gcc/ada/ * contracts.adb (Preanalyze_Condition): Use Preanalyze_Spec_Expression. Diff: --- gcc/ada/contracts.adb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/ada/contracts.adb b/gcc/ada/contracts.adb index a300d739eff..21f438f90f3 100644 --- a/gcc/ada/contracts.adb +++ b/gcc/ada/contracts.adb @@ -42,13 +42,13 @@ with Nmake; use Nmake; with Opt; use Opt; with Sem; use Sem; with Sem_Aux; use Sem_Aux; +with Sem_Ch3; use Sem_Ch3; with Sem_Ch6; use Sem_Ch6; with Sem_Ch8; use Sem_Ch8; with Sem_Ch12; use Sem_Ch12; with Sem_Ch13; use Sem_Ch13; with Sem_Disp; use Sem_Disp; with Sem_Prag; use Sem_Prag; -with Sem_Res; use Sem_Res; with Sem_Type; use Sem_Type; with Sem_Util; use Sem_Util; with Sinfo; use Sinfo; @@ -4755,7 +4755,7 @@ package body Contracts is Install_Formals (Subp); Inside_Class_Condition_Preanalysis := True; - Preanalyze_And_Resolve (Expr, Standard_Boolean); + Preanalyze_Spec_Expression (Expr, Standard_Boolean); Inside_Class_Condition_Preanalysis := False; Remove_Formals (Subp);