Skip to content

Commit 0827bab

Browse files
committed
Allow non-literal strings (incl. interpolations) in contract violation messages
Closes #751
1 parent b81c80f commit 0827bab

17 files changed

+85
-82
lines changed

include/cpp2util.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,9 @@ struct String
387387
// and so in<T> will pass it by const& and really it should be by value
388388
#define CPP2_MESSAGE_PARAM char const*
389389

390+
auto contract_message( CPP2_MESSAGE_PARAM msg ) -> CPP2_MESSAGE_PARAM { return msg; }
391+
auto contract_message( std::string const& msg ) -> CPP2_MESSAGE_PARAM { return msg.c_str(); }
392+
390393
class contract_group {
391394
public:
392395
using handler = void (*)(CPP2_MESSAGE_PARAM msg CPP2_SOURCE_LOCATION_PARAM);

regression-tests/pure2-contracts.cpp2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ main: () = {
1717
assert<Type>( test_condition_evaluation(2), "type" ); // evaluated: prints "2"
1818
cpp2::Type.set_handler();
1919
// Type does not have a handler
20-
assert<Type>( test_condition_evaluation(3), "type" ); // not evaluated
20+
assert<Type>( test_condition_evaluation(3), "1 == (1)$" ); // not evaluated
2121

2222
// Bounds has a handler, and audit is true
2323
assert<Bounds, audit>( test_condition_evaluation(4), "type" ); // evaluated: prints "4"

regression-tests/pure2-print.cpp2

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ outer: @print type = {
3232

3333
private h: (s: std::string, inout m: std::map<const int,std::string> ) -> std::string
3434
pre( m.empty() == false || false, "message" )
35-
pre<Bounds, testing_enabled>( 0 < m.ssize() < 100 && true != false )
35+
pre<Bounds, testing_enabled>( 0 < m.ssize() < 100 && true != false, "size is (m.ssize())$" )
3636
= {
3737
a := :()={};
3838
b := :()={};
Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,118 @@
11
mixed-bugfix-for-ufcs-non-local.cpp2:13:12: error: a lambda expression cannot appear in this context
22
template<t<CPP2_UFCS_NONLOCAL(f)(o)> _> bool inline constexpr v0 = false;// Fails on GCC ([GCC109781][]) and Clang 12 (a lambda expression cannot appear in this context)
33
^
4-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
4+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
55
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
66
^
7-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
7+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
88
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
99
^
1010
mixed-bugfix-for-ufcs-non-local.cpp2:15:3: error: a lambda expression cannot appear in this context
1111
t<CPP2_UFCS_NONLOCAL(f)(o)> inline constexpr v1 = t<true>();// Fails on Clang 12 (lambda in unevaluated context).
1212
^
13-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
13+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
1414
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
1515
^
16-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
16+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
1717
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
1818
^
1919
mixed-bugfix-for-ufcs-non-local.cpp2:21:12: error: a lambda expression cannot appear in this context
2020
template<t<CPP2_UFCS_NONLOCAL(f)(o)> _> auto g() -> void;
2121
^
22-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
22+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
2323
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
2424
^
25-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
25+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
2626
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
2727
^
2828
mixed-bugfix-for-ufcs-non-local.cpp2:23:36: error: a lambda expression cannot appear in this context
2929
auto g([[maybe_unused]] cpp2::in<t<CPP2_UFCS_NONLOCAL(f)(o)>> unnamed_param_1) -> void;
3030
^
31-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
31+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
3232
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
3333
^
34-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
34+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
3535
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
3636
^
3737
mixed-bugfix-for-ufcs-non-local.cpp2:27:29: error: a lambda expression cannot appear in this context
3838
[[nodiscard]] auto h() -> t<CPP2_UFCS_NONLOCAL(f)(o)>;
3939
^
40-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
40+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
4141
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
4242
^
43-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
43+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
4444
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
4545
^
4646
mixed-bugfix-for-ufcs-non-local.cpp2:31:12: error: a lambda expression cannot appear in this context
4747
template<t<CPP2_UFCS_NONLOCAL(f)(o)> _> using a = bool;// Fails on GCC ([GCC109781][]) and Clang 12 (a lambda expression cannot appear in this context)
4848
^
49-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
49+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
5050
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
5151
^
52-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
52+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
5353
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
5454
^
5555
mixed-bugfix-for-ufcs-non-local.cpp2:33:12: error: a lambda expression cannot appear in this context
5656
template<t<CPP2_UFCS_NONLOCAL(f)(o)> _> auto inline constexpr b = false;// Fails on GCC ([GCC109781][]).
5757
^
58-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
58+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
5959
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
6060
^
61-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
61+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
6262
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
6363
^
6464
mixed-bugfix-for-ufcs-non-local.cpp2:35:13: error: a lambda expression cannot appear in this context
6565
using c = t<CPP2_UFCS_NONLOCAL(f)(o)>;// Fails on Clang 12 (lambda in unevaluated context) and Clang 12 (a lambda expression cannot appear in this context)
6666
^
67-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
67+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
6868
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
6969
^
70-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
70+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
7171
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
7272
^
7373
mixed-bugfix-for-ufcs-non-local.cpp2:37:29: error: a lambda expression cannot appear in this context
7474
auto inline constexpr d = t<CPP2_UFCS_NONLOCAL(f)(o)>();// Fails on Clang 12 (lambda in unevaluated context).
7575
^
76-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
76+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
7777
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
7878
^
79-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
79+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
8080
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
8181
^
8282
mixed-bugfix-for-ufcs-non-local.cpp2:21:12: error: a lambda expression cannot appear in this context
8383
template<t<CPP2_UFCS_NONLOCAL(f)(o)> _> auto g() -> void{}// Fails on GCC ([GCC109781][]) and Clang 12 (a lambda expression cannot appear in this context)
8484
^
85-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
85+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
8686
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
8787
^
88-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
88+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
8989
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
9090
^
9191
mixed-bugfix-for-ufcs-non-local.cpp2:23:36: error: a lambda expression cannot appear in this context
9292
auto g([[maybe_unused]] cpp2::in<t<CPP2_UFCS_NONLOCAL(f)(o)>> unnamed_param_1) -> void{}// Fails on Clang 12 (lambda in unevaluated context).
9393
^
94-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
94+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
9595
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
9696
^
97-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
97+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
9898
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
9999
^
100100
mixed-bugfix-for-ufcs-non-local.cpp2:27:29: error: a lambda expression cannot appear in this context
101101
[[nodiscard]] auto h() -> t<CPP2_UFCS_NONLOCAL(f)(o)> { return o; }// Fails on Clang 12 (lambda in unevaluated context).
102102
^
103-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
103+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
104104
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
105105
^
106-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
106+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
107107
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
108108
^
109109
mixed-bugfix-for-ufcs-non-local.cpp2:41:79: error: lambda expression in an unevaluated operand
110110
inline CPP2_CONSTEXPR bool u::c = [](cpp2::in<std::type_identity_t<decltype(CPP2_UFCS_NONLOCAL(f)(o))>> x) mutable -> auto { return x; }(true);// Fails on Clang 12 (lambda in unevaluated context).
111111
^
112-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
112+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
113113
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
114114
^
115-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
115+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
116116
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
117117
^
118118
13 errors generated.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
pure2-bugfix-for-ufcs-noexcept.cpp2:5:26: error: lambda expression in an unevaluated operand
22
static_assert(noexcept(CPP2_UFCS(swap)(t(), t())));// Fails on Clang 12 (lambda in unevaluated context) and GCC 10 (static assertion failed)
33
^
4-
../../../include/cpp2util.h:857:59: note: expanded from macro 'CPP2_UFCS'
4+
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS'
55
#define CPP2_UFCS(...) CPP2_UFCS_(&,(),,__VA_ARGS__)
66
^
7-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
7+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
88
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
99
^
1010
1 error generated.
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
pure2-bugfix-for-ufcs-sfinae.cpp2:1:78: error: lambda expression in an unevaluated operand
22
template<typename T> [[nodiscard]] auto f() -> std::type_identity_t<decltype(CPP2_UFCS_NONLOCAL(a)(T()))>;
33
^
4-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
4+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
55
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
66
^
7-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
7+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
88
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
99
^
1010
pure2-bugfix-for-ufcs-sfinae.cpp2:1:78: error: lambda expression in an unevaluated operand
1111
template<typename T> [[nodiscard]] auto f() -> std::type_identity_t<decltype(CPP2_UFCS_NONLOCAL(a)(T()))>{}// Fails on Clang 12 (lambda in unevaluated context).
1212
^
13-
../../../include/cpp2util.h:860:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
13+
../../../include/cpp2util.h:863:59: note: expanded from macro 'CPP2_UFCS_NONLOCAL'
1414
#define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
1515
^
16-
../../../include/cpp2util.h:841:53: note: expanded from macro 'CPP2_UFCS_'
16+
../../../include/cpp2util.h:844:53: note: expanded from macro 'CPP2_UFCS_'
1717
#define CPP2_UFCS_(LAMBDADEFCAPT,QUALID,TEMPKW,...) \
1818
^
1919
2 errors generated.
Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,41 @@
11
In file included from mixed-bugfix-for-ufcs-non-local.cpp:6:
2-
../../../include/cpp2util.h:842:1: error: lambda-expression in template parameter type
3-
842 | [LAMBDADEFCAPT]< \
2+
../../../include/cpp2util.h:845:1: error: lambda-expression in template parameter type
3+
845 | [LAMBDADEFCAPT]< \
44
| ^
5-
../../../include/cpp2util.h:860:59: note: in expansion of macro ‘CPP2_UFCS_’
6-
860 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
5+
../../../include/cpp2util.h:863:59: note: in expansion of macro ‘CPP2_UFCS_’
6+
863 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
77
| ^~~~~~~~~~
88
mixed-bugfix-for-ufcs-non-local.cpp2:13:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’
99
mixed-bugfix-for-ufcs-non-local.cpp2:13:36: error: template argument 1 is invalid
10-
../../../include/cpp2util.h:842:1: error: lambda-expression in template parameter type
11-
842 | [LAMBDADEFCAPT]< \
10+
../../../include/cpp2util.h:845:1: error: lambda-expression in template parameter type
11+
845 | [LAMBDADEFCAPT]< \
1212
| ^
13-
../../../include/cpp2util.h:860:59: note: in expansion of macro ‘CPP2_UFCS_’
14-
860 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
13+
../../../include/cpp2util.h:863:59: note: in expansion of macro ‘CPP2_UFCS_’
14+
863 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
1515
| ^~~~~~~~~~
1616
mixed-bugfix-for-ufcs-non-local.cpp2:21:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’
1717
mixed-bugfix-for-ufcs-non-local.cpp2:21:36: error: template argument 1 is invalid
18-
../../../include/cpp2util.h:842:1: error: lambda-expression in template parameter type
19-
842 | [LAMBDADEFCAPT]< \
18+
../../../include/cpp2util.h:845:1: error: lambda-expression in template parameter type
19+
845 | [LAMBDADEFCAPT]< \
2020
| ^
21-
../../../include/cpp2util.h:860:59: note: in expansion of macro ‘CPP2_UFCS_’
22-
860 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
21+
../../../include/cpp2util.h:863:59: note: in expansion of macro ‘CPP2_UFCS_’
22+
863 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
2323
| ^~~~~~~~~~
2424
mixed-bugfix-for-ufcs-non-local.cpp2:31:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’
2525
mixed-bugfix-for-ufcs-non-local.cpp2:31:36: error: template argument 1 is invalid
26-
../../../include/cpp2util.h:842:1: error: lambda-expression in template parameter type
27-
842 | [LAMBDADEFCAPT]< \
26+
../../../include/cpp2util.h:845:1: error: lambda-expression in template parameter type
27+
845 | [LAMBDADEFCAPT]< \
2828
| ^
29-
../../../include/cpp2util.h:860:59: note: in expansion of macro ‘CPP2_UFCS_’
30-
860 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
29+
../../../include/cpp2util.h:863:59: note: in expansion of macro ‘CPP2_UFCS_’
30+
863 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
3131
| ^~~~~~~~~~
3232
mixed-bugfix-for-ufcs-non-local.cpp2:33:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’
3333
mixed-bugfix-for-ufcs-non-local.cpp2:33:36: error: template argument 1 is invalid
34-
../../../include/cpp2util.h:842:1: error: lambda-expression in template parameter type
35-
842 | [LAMBDADEFCAPT]< \
34+
../../../include/cpp2util.h:845:1: error: lambda-expression in template parameter type
35+
845 | [LAMBDADEFCAPT]< \
3636
| ^
37-
../../../include/cpp2util.h:860:59: note: in expansion of macro ‘CPP2_UFCS_’
38-
860 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
37+
../../../include/cpp2util.h:863:59: note: in expansion of macro ‘CPP2_UFCS_’
38+
863 | #define CPP2_UFCS_NONLOCAL(...) CPP2_UFCS_(,(),,__VA_ARGS__)
3939
| ^~~~~~~~~~
4040
mixed-bugfix-for-ufcs-non-local.cpp2:21:12: note: in expansion of macro ‘CPP2_UFCS_NONLOCAL’
4141
mixed-bugfix-for-ufcs-non-local.cpp2:21:36: error: template argument 1 is invalid

regression-tests/test-results/mixed-initialization-safety-3-contract-violation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ auto fill(
6161
) -> void
6262

6363
{
64-
if (cpp2::Default.has_handler() && !(cpp2::cmp_greater_eq(CPP2_UFCS(ssize)(value),count)) ) { cpp2::Default.violation("fill: value must contain at least count elements"); }
64+
if (cpp2::Default.has_handler() && !(cpp2::cmp_greater_eq(CPP2_UFCS(ssize)(value),count)) ) { cpp2::Default.violation(cpp2::contract_message("fill: value must contain at least count elements")); }
6565
#line 25 "mixed-initialization-safety-3-contract-violation.cpp2"
6666
x.construct(CPP2_UFCS(substr)(value, 0, count));
6767
}

regression-tests/test-results/mixed-initialization-safety-3.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ auto fill(
5555
) -> void
5656

5757
{
58-
if (cpp2::Default.has_handler() && !(cpp2::cmp_greater_eq(CPP2_UFCS(ssize)(value),count)) ) { cpp2::Default.violation("fill: value must contain at least count elements"); }
58+
if (cpp2::Default.has_handler() && !(cpp2::cmp_greater_eq(CPP2_UFCS(ssize)(value),count)) ) { cpp2::Default.violation(cpp2::contract_message("fill: value must contain at least count elements")); }
5959
#line 23 "mixed-initialization-safety-3.cpp2"
6060
x.construct(CPP2_UFCS(substr)(value, 0, count));
6161
}

0 commit comments

Comments
 (0)