From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2122) id 8331B3858D37; Fri, 21 Oct 2022 01:23:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8331B3858D37 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1666315426; bh=HYP/xKCD3V1e2zl6Mrz02a6vrU90oqrXgk14eoYYPHk=; h=From:To:Subject:Date:From; b=rm5RW4JRk2srM4R222hWbTtSpdaEKOremusH/PjR4sQTtvB280OuXD2dqI0cEY+c8 MW3d0dg/icu6A76+QW8KrquPxS+As9jzWrn5iToeRi2KdJDXcaCSdAGjPijxftbWyW 4Hw5uahWXJ/iq+9lTLPd8ADRzlafnj9AOSgvPG4E= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Jason Merrill To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc/devel/c++-contracts] libstdc++: contracts uint_least32_t lineno X-Act-Checkin: gcc X-Git-Author: Jason Merrill X-Git-Refname: refs/heads/devel/c++-contracts X-Git-Oldrev: 704294a049802609e24839cdacd99054654d8f2f X-Git-Newrev: fcce3a45f0c6625dcc45dc7d83fdb1b836016bbe Message-Id: <20221021012346.8331B3858D37@sourceware.org> Date: Fri, 21 Oct 2022 01:23:46 +0000 (GMT) List-Id: https://gcc.gnu.org/g:fcce3a45f0c6625dcc45dc7d83fdb1b836016bbe commit fcce3a45f0c6625dcc45dc7d83fdb1b836016bbe Author: Jason Merrill Date: Tue Oct 18 13:04:09 2022 -0400 libstdc++: contracts uint_least32_t lineno As specified in N4820. libstdc++-v3/ChangeLog: * include/experimental/contract: line_number() returns uint_least32_t. gcc/testsuite/ChangeLog: * g++.dg/contracts/contracts14.C: Cast line_number to int. * g++.dg/contracts/contracts15.C * g++.dg/contracts/contracts16.C: Likewise. Diff: --- gcc/testsuite/g++.dg/contracts/contracts14.C | 2 +- gcc/testsuite/g++.dg/contracts/contracts15.C | 2 +- gcc/testsuite/g++.dg/contracts/contracts16.C | 2 +- libstdc++-v3/include/experimental/contract | 5 +++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/gcc/testsuite/g++.dg/contracts/contracts14.C b/gcc/testsuite/g++.dg/contracts/contracts14.C index bda392a1f9d..cca1e79964f 100644 --- a/gcc/testsuite/g++.dg/contracts/contracts14.C +++ b/gcc/testsuite/g++.dg/contracts/contracts14.C @@ -20,7 +20,7 @@ void handle_contract_violation(const std::contract_violation &violation) { << " " << violation.line_number() << " " << violation.file_name() << std::endl; - throw -violation.line_number(); + throw -(int)violation.line_number(); } int fun() { diff --git a/gcc/testsuite/g++.dg/contracts/contracts15.C b/gcc/testsuite/g++.dg/contracts/contracts15.C index 8110876286c..fefafdfa66e 100644 --- a/gcc/testsuite/g++.dg/contracts/contracts15.C +++ b/gcc/testsuite/g++.dg/contracts/contracts15.C @@ -20,7 +20,7 @@ void handle_contract_violation(const std::contract_violation &violation) { << " " << violation.line_number() << " " << violation.file_name() << std::endl; - throw -violation.line_number(); + throw -(int)violation.line_number(); } int fun() noexcept { diff --git a/gcc/testsuite/g++.dg/contracts/contracts16.C b/gcc/testsuite/g++.dg/contracts/contracts16.C index 26172281767..d80cda46501 100644 --- a/gcc/testsuite/g++.dg/contracts/contracts16.C +++ b/gcc/testsuite/g++.dg/contracts/contracts16.C @@ -10,7 +10,7 @@ void handle_contract_violation(const std::contract_violation &violation) { << " " << violation.line_number() << " " << violation.file_name() << std::endl; - throw -violation.line_number(); + throw -(int)violation.line_number(); } int fun() { diff --git a/libstdc++-v3/include/experimental/contract b/libstdc++-v3/include/experimental/contract index 611d9c6db82..8d49bf751da 100644 --- a/libstdc++-v3/include/experimental/contract +++ b/libstdc++-v3/include/experimental/contract @@ -39,6 +39,7 @@ #include #include +#include namespace std _GLIBCXX_VISIBILITY(default) { @@ -49,7 +50,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; class contract_violation { - int _M_line; // FIXME uint_least32_t + uint_least32_t _M_line; const char* _M_file; const char* _M_function; const char* _M_comment; @@ -62,7 +63,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION contract_violation_continuation_mode __m) : _M_line(__l), _M_file(__f), _M_function(__fn), _M_comment(__c), _M_level(__lv), _M_role(__r), _M_continue(__m) { } - int line_number() const noexcept { return _M_line; } + uint_least32_t line_number() const noexcept { return _M_line; } string_view file_name() const noexcept { return _M_file; } string_view function_name() const noexcept { return _M_function; } string_view comment() const noexcept { return _M_comment; }