libstdc++: Improve output of default contract violation handler [PR107792]
authorArsen Arsenović <arsen@aarsen.me>
Thu, 22 Dec 2022 11:03:06 +0000 (12:03 +0100)
committerJason Merrill <jason@redhat.com>
Fri, 23 Dec 2022 00:48:40 +0000 (19:48 -0500)
commit8ec5fcb6fc79e5bcca23c3fecbaf09d4566cb1d5
tree2242d6f9d2afba1d801dd6be7847352202aa9a79
parente70380f4545e96bfd1d4ee071fcdd8d46a5ba824
libstdc++: Improve output of default contract violation handler [PR107792]

Make the output more readable. Don't output anything unless verbose
termination is enabled at configure-time.

The testsuite change was almost entirely mechanical.  Save for two files
which had very short matches, these changes were produced by two seds and a
Perl script, for the more involved cases.  The latter will be added in a
subsequent commit.  The former are as follows:

    sed -E -i "/dg-output/s/default std::handle_contract_violation called: \
    (\S+) (\S+) (\S+(<[A-Za-z0-9, ]*)?>?)\
    /contract violation in function \3 at \1:\2: /" *.C
    sed -i '/dg-output/s/  */ /g'

Whichever files remained failing after the above changes were checked-out,
re-ran, with output extracted, and ran through dg-out-generator.pl.

Co-Authored-By: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:

PR libstdc++/107792
PR libstdc++/107778
* src/experimental/contract.cc (handle_contract_violation): Make
output more readable.

gcc/testsuite/ChangeLog:

* g++.dg/contracts/contracts-access1.C: Convert to new default
violation handler.
* g++.dg/contracts/contracts-assume2.C: Ditto.
* g++.dg/contracts/contracts-config1.C: Ditto.
* g++.dg/contracts/contracts-constexpr1.C: Ditto.
* g++.dg/contracts/contracts-ctor-dtor1.C: Ditto.
* g++.dg/contracts/contracts-deduced2.C: Ditto.
* g++.dg/contracts/contracts-friend1.C: Ditto.
* g++.dg/contracts/contracts-multiline1.C: Ditto.
* g++.dg/contracts/contracts-post3.C: Ditto.
* g++.dg/contracts/contracts-pre10.C: Ditto.
* g++.dg/contracts/contracts-pre2.C: Ditto.
* g++.dg/contracts/contracts-pre2a2.C: Ditto.
* g++.dg/contracts/contracts-pre3.C: Ditto.
* g++.dg/contracts/contracts-pre4.C: Ditto.
* g++.dg/contracts/contracts-pre5.C: Ditto.
* g++.dg/contracts/contracts-pre7.C: Ditto.
* g++.dg/contracts/contracts-pre9.C: Ditto.
* g++.dg/contracts/contracts-redecl3.C: Ditto.
* g++.dg/contracts/contracts-redecl4.C: Ditto.
* g++.dg/contracts/contracts-redecl6.C: Ditto.
* g++.dg/contracts/contracts-redecl7.C: Ditto.
* g++.dg/contracts/contracts-tmpl-spec1.C: Ditto.
* g++.dg/contracts/contracts-tmpl-spec2.C: Ditto.
* g++.dg/contracts/contracts-tmpl-spec3.C: Ditto.
* g++.dg/contracts/contracts10.C: Ditto.
* g++.dg/contracts/contracts14.C: Ditto.
* g++.dg/contracts/contracts15.C: Ditto.
* g++.dg/contracts/contracts16.C: Ditto.
* g++.dg/contracts/contracts17.C: Ditto.
* g++.dg/contracts/contracts19.C: Ditto.
* g++.dg/contracts/contracts25.C: Ditto.
* g++.dg/contracts/contracts3.C: Ditto.
* g++.dg/contracts/contracts35.C: Ditto.
* g++.dg/contracts/contracts5.C: Ditto.
* g++.dg/contracts/contracts7.C: Ditto.
* g++.dg/contracts/contracts9.C: Ditto.
37 files changed:
gcc/testsuite/g++.dg/contracts/contracts-access1.C
gcc/testsuite/g++.dg/contracts/contracts-assume2.C
gcc/testsuite/g++.dg/contracts/contracts-config1.C
gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
gcc/testsuite/g++.dg/contracts/contracts-ctor-dtor1.C
gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
gcc/testsuite/g++.dg/contracts/contracts-friend1.C
gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
gcc/testsuite/g++.dg/contracts/contracts-post3.C
gcc/testsuite/g++.dg/contracts/contracts-pre10.C
gcc/testsuite/g++.dg/contracts/contracts-pre2.C
gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
gcc/testsuite/g++.dg/contracts/contracts-pre3.C
gcc/testsuite/g++.dg/contracts/contracts-pre4.C
gcc/testsuite/g++.dg/contracts/contracts-pre5.C
gcc/testsuite/g++.dg/contracts/contracts-pre7.C
gcc/testsuite/g++.dg/contracts/contracts-pre9.C
gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
gcc/testsuite/g++.dg/contracts/contracts10.C
gcc/testsuite/g++.dg/contracts/contracts14.C
gcc/testsuite/g++.dg/contracts/contracts15.C
gcc/testsuite/g++.dg/contracts/contracts16.C
gcc/testsuite/g++.dg/contracts/contracts17.C
gcc/testsuite/g++.dg/contracts/contracts19.C
gcc/testsuite/g++.dg/contracts/contracts25.C
gcc/testsuite/g++.dg/contracts/contracts3.C
gcc/testsuite/g++.dg/contracts/contracts35.C
gcc/testsuite/g++.dg/contracts/contracts5.C
gcc/testsuite/g++.dg/contracts/contracts7.C
gcc/testsuite/g++.dg/contracts/contracts9.C
libstdc++-v3/src/experimental/contract.cc