Skip to content

Commit 7637c50

Browse files
committed
Eliminate diff-noisy line/col-based generated names
Using ordinals for variables and the actual labels for loops is more diff-stable Using the actual labels for loops is more readable
1 parent 4f5eb6f commit 7637c50

12 files changed

+95
-76
lines changed

regression-tests/test-results/mixed-out-destruction.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,18 @@ int main() {
5757
#line 1 "mixed-out-destruction.cpp2"
5858

5959
#line 22 "mixed-out-destruction.cpp2"
60-
auto f00() -> void { C auto_22_28 {"f00"}; cpp2::deferred_init<X> x; f01(cpp2::out(&x));}
60+
auto f00() -> void { C auto_1 {"f00"}; cpp2::deferred_init<X> x; f01(cpp2::out(&x));}
6161
#line 23 "mixed-out-destruction.cpp2"
62-
auto f01(cpp2::out<X> x) -> void{C auto_23_28 {"f01"}; x.construct();throw_1();}
62+
auto f01(cpp2::out<X> x) -> void{C auto_1 {"f01"}; x.construct();throw_1();}
6363

6464
#line 27 "mixed-out-destruction.cpp2"
65-
auto f10() -> void { C auto_27_28 {"f10"}; cpp2::deferred_init<X> x; f11(cpp2::out(&x));}
65+
auto f10() -> void { C auto_1 {"f10"}; cpp2::deferred_init<X> x; f11(cpp2::out(&x));}
6666
#line 28 "mixed-out-destruction.cpp2"
67-
auto f11(cpp2::out<X> x) -> void{C auto_28_28 {"f11"}; f12(cpp2::out(&x));}
67+
auto f11(cpp2::out<X> x) -> void{C auto_1 {"f11"}; f12(cpp2::out(&x));}
6868
#line 29 "mixed-out-destruction.cpp2"
69-
auto f12(cpp2::out<X> x) -> void{C auto_29_28 {"f12"}; f13(cpp2::out(&x));throw_1();}
69+
auto f12(cpp2::out<X> x) -> void{C auto_1 {"f12"}; f13(cpp2::out(&x));throw_1();}
7070
#line 30 "mixed-out-destruction.cpp2"
71-
auto f13(cpp2::out<X> x) -> void{C auto_30_28 {"f13"}; f14(cpp2::out(&x));}
71+
auto f13(cpp2::out<X> x) -> void{C auto_1 {"f13"}; f14(cpp2::out(&x));}
7272
#line 31 "mixed-out-destruction.cpp2"
73-
auto f14(cpp2::out<X> x) -> void{C auto_31_28 {"f14"}; x.construct();}
73+
auto f14(cpp2::out<X> x) -> void{C auto_1 {"f14"}; x.construct();}
7474

regression-tests/test-results/pure2-break-continue.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -85,10 +85,10 @@ auto while_continue_inner() -> void
8585
#line 26 "pure2-break-continue.cpp2"
8686
std::cout << i << j << " ";
8787
if (j == 1) {
88-
goto CONTINUE_25_9;
88+
goto CONTINUE_inner;
8989
}
9090
std::cout << "inner ";
91-
} CPP2_CONTINUE_BREAK(25_9) }
91+
} CPP2_CONTINUE_BREAK(inner) }
9292
#line 32 "pure2-break-continue.cpp2"
9393
std::cout << "outer ";
9494
}
@@ -104,12 +104,12 @@ auto while_continue_outer() -> void
104104
for( ; cpp2::cmp_less(j,3); ++j ) {
105105
std::cout << i << j << " ";
106106
if (j == 1) {
107-
goto CONTINUE_39_5;
107+
goto CONTINUE_outer;
108108
}
109109
std::cout << "inner ";
110110
}
111111
std::cout << "outer ";
112-
} CPP2_CONTINUE_BREAK(39_5) }
112+
} CPP2_CONTINUE_BREAK(outer) }
113113
#line 50 "pure2-break-continue.cpp2"
114114
}
115115

@@ -123,10 +123,10 @@ auto while_break_inner() -> void
123123
#line 58 "pure2-break-continue.cpp2"
124124
std::cout << i << j << " ";
125125
if (j == 1) {
126-
goto BREAK_57_9;
126+
goto BREAK_inner;
127127
}
128128
std::cout << "inner ";
129-
} CPP2_CONTINUE_BREAK(57_9) }
129+
} CPP2_CONTINUE_BREAK(inner) }
130130
#line 64 "pure2-break-continue.cpp2"
131131
std::cout << "outer ";
132132
}
@@ -142,12 +142,12 @@ auto while_break_outer() -> void
142142
for( ; cpp2::cmp_less(j,3); ++j ) {
143143
std::cout << i << j << " ";
144144
if (j == 1) {
145-
goto BREAK_71_5;
145+
goto BREAK_outer;
146146
}
147147
std::cout << "inner ";
148148
}
149149
std::cout << "outer ";
150-
} CPP2_CONTINUE_BREAK(71_5) }
150+
} CPP2_CONTINUE_BREAK(outer) }
151151
#line 82 "pure2-break-continue.cpp2"
152152
}
153153

@@ -161,10 +161,10 @@ auto do_continue_inner() -> void
161161
#line 90 "pure2-break-continue.cpp2"
162162
std::cout << i << j << " ";
163163
if (j == 1) {
164-
goto CONTINUE_89_9;
164+
goto CONTINUE_inner;
165165
}
166166
std::cout << "inner ";
167-
} CPP2_CONTINUE_BREAK(89_9) }
167+
} CPP2_CONTINUE_BREAK(inner) }
168168
#line 89 "pure2-break-continue.cpp2"
169169
while ( [&]{
170170

@@ -186,14 +186,14 @@ auto do_continue_outer() -> void
186186
do {
187187
std::cout << i << j << " ";
188188
if (j == 1) {
189-
goto CONTINUE_106_5;
189+
goto CONTINUE_outer;
190190
}
191191
std::cout << "inner ";
192192
} while ( [&]{
193193
++j ; return true; }() && cpp2::cmp_less(j,3));
194194

195195
std::cout << "outer ";
196-
} CPP2_CONTINUE_BREAK(106_5) }
196+
} CPP2_CONTINUE_BREAK(outer) }
197197
#line 106 "pure2-break-continue.cpp2"
198198
while ( [&]{
199199

@@ -211,10 +211,10 @@ auto do_break_inner() -> void
211211
#line 128 "pure2-break-continue.cpp2"
212212
std::cout << i << j << " ";
213213
if (j == 1) {
214-
goto BREAK_127_9;
214+
goto BREAK_inner;
215215
}
216216
std::cout << "inner ";
217-
} CPP2_CONTINUE_BREAK(127_9) }
217+
} CPP2_CONTINUE_BREAK(inner) }
218218
#line 127 "pure2-break-continue.cpp2"
219219
while ( [&]{
220220

@@ -236,14 +236,14 @@ auto do_break_outer() -> void
236236
do {
237237
std::cout << i << j << " ";
238238
if (j == 1) {
239-
goto BREAK_144_5;
239+
goto BREAK_outer;
240240
}
241241
std::cout << "inner ";
242242
} while ( [&]{
243243
++j ; return true; }() && cpp2::cmp_less(j,3));
244244

245245
std::cout << "outer ";
246-
} CPP2_CONTINUE_BREAK(144_5) }
246+
} CPP2_CONTINUE_BREAK(outer) }
247247
#line 144 "pure2-break-continue.cpp2"
248248
while ( [&]{
249249

@@ -261,10 +261,10 @@ auto for_continue_inner() -> void
261261
#line 166 "pure2-break-continue.cpp2"
262262
std::cout << i << j << " ";
263263
if (j == 1) {
264-
goto CONTINUE_165_9;
264+
goto CONTINUE_inner;
265265
}
266266
std::cout << "inner ";
267-
} CPP2_CONTINUE_BREAK(165_9) }
267+
} CPP2_CONTINUE_BREAK(inner) }
268268

269269
#line 173 "pure2-break-continue.cpp2"
270270
std::cout << "outer ";
@@ -281,13 +281,13 @@ auto for_continue_outer() -> void
281281
for ( auto const& j : vj ) {
282282
std::cout << i << j << " ";
283283
if (j == 1) {
284-
goto CONTINUE_180_5;
284+
goto CONTINUE_outer;
285285
}
286286
std::cout << "inner ";
287287
}
288288

289289
std::cout << "outer ";
290-
} CPP2_CONTINUE_BREAK(180_5) }
290+
} CPP2_CONTINUE_BREAK(outer) }
291291
#line 192 "pure2-break-continue.cpp2"
292292
}
293293

@@ -301,10 +301,10 @@ auto for_break_inner() -> void
301301
#line 200 "pure2-break-continue.cpp2"
302302
std::cout << i << j << " ";
303303
if (j == 1) {
304-
goto BREAK_199_9;
304+
goto BREAK_inner;
305305
}
306306
std::cout << "inner ";
307-
} CPP2_CONTINUE_BREAK(199_9) }
307+
} CPP2_CONTINUE_BREAK(inner) }
308308

309309
#line 207 "pure2-break-continue.cpp2"
310310
std::cout << "outer ";
@@ -321,13 +321,13 @@ auto for_break_outer() -> void
321321
for ( auto const& j : vj ) {
322322
std::cout << i << j << " ";
323323
if (j == 1) {
324-
goto BREAK_214_5;
324+
goto BREAK_outer;
325325
}
326326
std::cout << "inner ";
327327
}
328328

329329
std::cout << "outer ";
330-
} CPP2_CONTINUE_BREAK(214_5) }
330+
} CPP2_CONTINUE_BREAK(outer) }
331331
#line 226 "pure2-break-continue.cpp2"
332332
}
333333

regression-tests/test-results/pure2-bugfix-for-ufcs-arguments.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -50,23 +50,23 @@ extern t m;
5050
extern t const n;
5151
template<typename UnnamedTypeParam1, typename U> auto inline constexpr a = n;
5252

53-
extern cpp2::i32 auto_25_1;
54-
extern cpp2::i32 auto_26_1;
55-
extern cpp2::i32 auto_27_1;
56-
extern cpp2::i32 auto_28_1;
57-
extern cpp2::i32 auto_29_1;
58-
extern cpp2::i32 auto_30_1;
59-
extern cpp2::i32 auto_31_1;
60-
extern cpp2::i32 auto_32_1;
61-
extern cpp2::i32 auto_33_1;
62-
extern cpp2::i32 auto_34_1;
63-
extern cpp2::i32 auto_35_1;
53+
extern cpp2::i32 auto_1;
54+
extern cpp2::i32 auto_2;
55+
extern cpp2::i32 auto_3;
56+
extern cpp2::i32 auto_4;
57+
extern cpp2::i32 auto_5;
58+
extern cpp2::i32 auto_6;
59+
extern cpp2::i32 auto_7;
60+
extern cpp2::i32 auto_8;
61+
extern cpp2::i32 auto_9;
62+
extern cpp2::i32 auto_10;
63+
extern cpp2::i32 auto_11;
6464

6565
auto main() -> int;
6666

6767
#line 55 "pure2-bugfix-for-ufcs-arguments.cpp2"
6868
// _: i32 = 0.std::min<int>(0);
69-
extern cpp2::i32 auto_56_1;
69+
extern cpp2::i32 auto_12;
7070

7171
namespace ns {
7272
template<int T, int U> class t {
@@ -120,17 +120,17 @@ t m {};
120120
t const n {};
121121

122122
#line 25 "pure2-bugfix-for-ufcs-arguments.cpp2"
123-
cpp2::i32 auto_25_1 {CPP2_UFCS_NONLOCAL(f)(m)};
124-
cpp2::i32 auto_26_1 {CPP2_UFCS_NONLOCAL(f)(m, 0)};
125-
cpp2::i32 auto_27_1 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t>)(m)};
126-
cpp2::i32 auto_28_1 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t>)(m, 0)};
127-
cpp2::i32 auto_29_1 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t,t>)(m, 0, 0)};
128-
cpp2::i32 auto_30_1 {CPP2_UFCS_NONLOCAL(f)(n)};
129-
cpp2::i32 auto_31_1 {CPP2_UFCS_NONLOCAL(f)(n, 0)};
130-
cpp2::i32 auto_32_1 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t>)(n)};
131-
cpp2::i32 auto_33_1 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t>)(n, 0)};
132-
cpp2::i32 auto_34_1 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t,t>)(n, 0, 0)};
133-
cpp2::i32 auto_35_1 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t,t>)(a<t,t>, 0, 0)};
123+
cpp2::i32 auto_1 {CPP2_UFCS_NONLOCAL(f)(m)};
124+
cpp2::i32 auto_2 {CPP2_UFCS_NONLOCAL(f)(m, 0)};
125+
cpp2::i32 auto_3 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t>)(m)};
126+
cpp2::i32 auto_4 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t>)(m, 0)};
127+
cpp2::i32 auto_5 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t,t>)(m, 0, 0)};
128+
cpp2::i32 auto_6 {CPP2_UFCS_NONLOCAL(f)(n)};
129+
cpp2::i32 auto_7 {CPP2_UFCS_NONLOCAL(f)(n, 0)};
130+
cpp2::i32 auto_8 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t>)(n)};
131+
cpp2::i32 auto_9 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t>)(n, 0)};
132+
cpp2::i32 auto_10 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t,t>)(n, 0, 0)};
133+
cpp2::i32 auto_11 {CPP2_UFCS_TEMPLATE_NONLOCAL(f<t,t>)(a<t,t>, 0, 0)};
134134

135135
#line 37 "pure2-bugfix-for-ufcs-arguments.cpp2"
136136
auto main() -> int{
@@ -152,7 +152,7 @@ auto main() -> int{
152152
}
153153

154154
#line 56 "pure2-bugfix-for-ufcs-arguments.cpp2"
155-
cpp2::i32 auto_56_1 {CPP2_UFCS_QUALIFIED_TEMPLATE_NONLOCAL((ns::t<0,0>::),f<0>)(0)};
155+
cpp2::i32 auto_12 {CPP2_UFCS_QUALIFIED_TEMPLATE_NONLOCAL((ns::t<0,0>::),f<0>)(0)};
156156

157157
namespace ns {
158158

regression-tests/test-results/pure2-print.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ requires (true) inline CPP2_CONSTEXPR T outer::object_alias = 42;
131131

132132
do {} while ( [&]{ b() ; return true; }() && CPP2_UFCS(empty)(s));
133133

134-
for ( [[maybe_unused]] auto const& unnamed_param_1 : m ) { { do {goto CONTINUE_45_13; } while (false); c(); } CPP2_CONTINUE_BREAK(45_13) }
134+
for ( [[maybe_unused]] auto const& unnamed_param_1 : m ) { { do {goto CONTINUE_label; } while (false); c(); } CPP2_CONTINUE_BREAK(label) }
135135

136136
#line 47 "pure2-print.cpp2"
137137
if (cpp2::is(!(CPP2_UFCS(empty)(s)), (true))) {std::move(a)(); }

regression-tests/test-results/pure2-requires-clauses.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ requires (std::same_as<T,cpp2::i32>) T const v {0};
7676

7777
#line 22 "pure2-requires-clauses.cpp2"
7878
auto main() -> int{
79-
X<int,int> auto_23_5 {};
79+
X<int,int> auto_1 {};
8080
std::cout << f<int,int>(2, 5)
8181
<< f(0);
8282
}

regression-tests/test-results/pure2-statement-scope-parameters.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ auto& i{local_int};
4646
#line 14 "pure2-statement-scope-parameters.cpp2"
4747
std::cout << std::move(local_int) << "\n";// prints 43
4848

49-
std::chrono::duration<cpp2::i32> auto_16_5 {0};
49+
std::chrono::duration<cpp2::i32> auto_1 {0};
5050
{
5151
[[maybe_unused]] std::chrono::duration<cpp2::i32> unnamed_param_1{0};
5252
#line 17 "pure2-statement-scope-parameters.cpp2"
5353
{}
5454
}
5555
#line 18 "pure2-statement-scope-parameters.cpp2"
56-
std::in_place_t auto_18_5 {};
56+
std::in_place_t auto_2 {};
5757
{
5858
[[maybe_unused]] std::in_place_t unnamed_param_1{};
5959
#line 19 "pure2-statement-scope-parameters.cpp2"

regression-tests/test-results/pure2-types-basics.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,9 @@ auto main() -> int{
194194
std::cout << ("f2: " + cpp2::to_string(CPP2_UFCS(f2)(x, 2, 2)) + "\n");
195195
std::cout << ("f3: " + cpp2::to_string(CPP2_UFCS_TEMPLATE(f3<3,3>)(x)) + "\n");
196196
std::cout << ("f4: " + cpp2::to_string(CPP2_UFCS_TEMPLATE(f4<4,4>)(x)) + "\n");
197-
N::myclass auto_74_5 {"abracadabra"};
198-
N::myclass auto_75_5 {};
199-
N::myclass auto_76_5 {1, "hair"};
197+
N::myclass auto_1 {"abracadabra"};
198+
N::myclass auto_2 {};
199+
N::myclass auto_3 {1, "hair"};
200200

201201
// Invoke the single-param operator=s as actual assignments
202202
std::cout << "x's state before assignments: ";

regression-tests/test-results/pure2-types-order-independence-and-nesting.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ namespace N {
150150
#line 35 "pure2-types-order-independence-and-nesting.cpp2"
151151
auto X::exx(cpp2::in<int> count) const& -> void{
152152
// Exercise '_' anonymous objects too while we're at it
153-
cpp2::finally auto_37_9 {[&]() mutable -> void { std::cout << ("leaving call to 'why(" + cpp2::to_string(count) + ")'\n"); }};
153+
cpp2::finally auto_1 {[&]() mutable -> void { std::cout << ("leaving call to 'why(" + cpp2::to_string(count) + ")'\n"); }};
154154
if (cpp2::cmp_less(count,5)) {
155155
CPP2_UFCS(why)((*cpp2::assert_not_null(py)), count + 1);// use Y object from X
156156
}

regression-tests/test-results/pure2-types-ordering-via-meta-functions.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,6 @@ auto main() -> int{
134134
std::cout << "more\n";
135135
}
136136

137-
mystruct auto_49_5 {};
137+
mystruct auto_1 {};
138138
}
139139

regression-tests/test-results/pure2-variadics.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ template <typename T, typename ...Args> [[nodiscard]] auto make(Args&& ...args)
6868
#line 22 "pure2-variadics.cpp2"
6969
auto main() -> int
7070
{
71-
x<int,long,std::string> auto_24_5 {};
71+
x<int,long,std::string> auto_1 {};
7272

7373
std::cout << std::string("xyzzy", 3) << "\n";
7474
std::cout << make_string("plugh", cpp2::u8{3}) << "\n";

source/lex.h

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -323,14 +323,17 @@ static_assert (CHAR_BIT == 8);
323323
auto labelized_position(token const* t)
324324
-> std::string
325325
{
326-
auto ret = std::string{};
327-
if (t) {
328-
ret +=
329-
std::to_string(t->position().lineno) +
330-
"_" +
331-
std::to_string(t->position().colno);
332-
}
333-
return ret;
326+
struct label {
327+
std::string text;
328+
label() {
329+
static auto ordinal = 0;
330+
text = std::to_string(++ordinal);
331+
}
332+
};
333+
static auto labels = std::unordered_map<token const*, label const>{};
334+
335+
assert (t);
336+
return labels[t].text;
334337
}
335338

336339

0 commit comments

Comments
 (0)