@@ -55,25 +55,25 @@ class issue_869_0;
55
55
class issue_869_1 ;
56
56
57
57
58
- #line 838 "pure2-last-use.cpp2"
58
+ #line 843 "pure2-last-use.cpp2"
59
59
class cpp2_union ;
60
60
61
61
62
- #line 846 "pure2-last-use.cpp2"
62
+ #line 851 "pure2-last-use.cpp2"
63
63
class my_string ;
64
64
65
65
66
- #line 905 "pure2-last-use.cpp2"
66
+ #line 910 "pure2-last-use.cpp2"
67
67
namespace captures {
68
68
69
- #line 919 "pure2-last-use.cpp2"
69
+ #line 924 "pure2-last-use.cpp2"
70
70
class t ;
71
71
72
72
73
- #line 948 "pure2-last-use.cpp2"
73
+ #line 953 "pure2-last-use.cpp2"
74
74
}
75
75
76
- #line 978 "pure2-last-use.cpp2"
76
+ #line 983 "pure2-last-use.cpp2"
77
77
class types ;
78
78
79
79
@@ -334,18 +334,21 @@ auto issue_888_1([[maybe_unused]] std::string unnamed_param_1, move_only_functio
334
334
auto issue_890 () -> void;
335
335
336
336
#line 789 "pure2-last-use.cpp2"
337
+ auto issue_962 (cpp2::in<::std::string> s) -> void;
338
+
339
+ #line 794 "pure2-last-use.cpp2"
337
340
auto draw () -> void;
338
341
339
- #line 795 "pure2-last-use.cpp2"
342
+ #line 800 "pure2-last-use.cpp2"
340
343
auto enum_0 () -> void;
341
344
342
- #line 800 "pure2-last-use.cpp2"
345
+ #line 805 "pure2-last-use.cpp2"
343
346
auto enum_1 () -> void;
344
347
345
- #line 828 "pure2-last-use.cpp2"
348
+ #line 833 "pure2-last-use.cpp2"
346
349
auto enum_2 () -> void;
347
350
348
- #line 838 "pure2-last-use.cpp2"
351
+ #line 843 "pure2-last-use.cpp2"
349
352
class cpp2_union {
350
353
public: auto destroy () & -> void;
351
354
public: ~cpp2_union () noexcept ;
@@ -354,7 +357,7 @@ class cpp2_union {
354
357
public: auto operator =(cpp2_union const &) -> void = delete ;
355
358
356
359
357
- #line 844 "pure2-last-use.cpp2"
360
+ #line 849 "pure2-last-use.cpp2"
358
361
};
359
362
360
363
class my_string {
@@ -363,58 +366,58 @@ class my_string {
363
366
};
364
367
365
368
using no_pessimizing_move_ret = std::unique_ptr<int >;
366
- #line 851 "pure2-last-use.cpp2"
369
+ #line 856 "pure2-last-use.cpp2"
367
370
[[nodiscard]] auto no_pessimizing_move () -> no_pessimizing_move_ret;
368
371
369
372
auto deferred_non_copyable_0 () -> void;
370
373
371
- #line 859 "pure2-last-use.cpp2"
374
+ #line 864 "pure2-last-use.cpp2"
372
375
[[nodiscard]] auto deferred_non_copyable_1 () -> auto;
373
376
using deferred_non_copyable_2_ret = std::unique_ptr<int >;
374
377
375
378
376
- #line 865 "pure2-last-use.cpp2"
379
+ #line 870 "pure2-last-use.cpp2"
377
380
[[nodiscard]] auto deferred_non_copyable_2 () -> deferred_non_copyable_2_ret;
378
381
379
- #line 869 "pure2-last-use.cpp2"
382
+ #line 874 "pure2-last-use.cpp2"
380
383
auto loops () -> void;
381
384
382
- #line 905 "pure2-last-use.cpp2"
385
+ #line 910 "pure2-last-use.cpp2"
383
386
namespace captures {
384
387
385
388
// Skip non captured name in function expression
386
389
387
390
auto f () -> void;
388
391
389
- #line 917 "pure2-last-use.cpp2"
392
+ #line 922 "pure2-last-use.cpp2"
390
393
int inline constexpr x = 0 ;
391
394
392
395
class t {
393
396
public: std::unique_ptr<int > x;
394
397
public: auto operator ()() && -> void;
395
398
396
- #line 932 "pure2-last-use.cpp2"
399
+ #line 937 "pure2-last-use.cpp2"
397
400
};
398
401
399
402
auto g () -> void;
400
403
401
- #line 948 "pure2-last-use.cpp2"
404
+ #line 953 "pure2-last-use.cpp2"
402
405
}
403
406
404
407
auto loops_and_captures () -> void;
405
408
406
- #line 978 "pure2-last-use.cpp2"
409
+ #line 983 "pure2-last-use.cpp2"
407
410
class types {
408
411
public: std::unique_ptr<int > x;
409
412
public: auto f () && -> void;
410
413
public: auto g () && -> void;
411
414
412
- #line 986 "pure2-last-use.cpp2"
415
+ #line 991 "pure2-last-use.cpp2"
413
416
};
414
417
415
418
auto skip_hidden_names () -> void;
416
419
417
- #line 1038 "pure2-last-use.cpp2"
420
+ #line 1043 "pure2-last-use.cpp2"
418
421
auto main (int const argc_, char ** argv_) -> int;
419
422
420
423
// === Cpp2 function definitions =================================================
@@ -1289,19 +1292,25 @@ auto const& x{cpp2_new<int>(0)};
1289
1292
}
1290
1293
1291
1294
#line 789 "pure2-last-use.cpp2"
1295
+ auto issue_962 (cpp2::in<::std::string> s) -> void{
1296
+ using ::std::string;
1297
+ std::cout << (" A: " + cpp2::to_string (s)) << std::endl;
1298
+ }
1299
+
1300
+ #line 794 "pure2-last-use.cpp2"
1292
1301
auto draw () -> void{
1293
1302
auto pos {0 };
1294
1303
move_only_function<int (int )> vertex {};
1295
1304
static_cast <void >(CPP2_UFCS_MOVE (vertex)((std::move (pos))));
1296
1305
}
1297
1306
1298
- #line 795 "pure2-last-use.cpp2"
1307
+ #line 800 "pure2-last-use.cpp2"
1299
1308
auto enum_0 () -> void{
1300
1309
cpp2::deferred_init<std::string> underlying_type;
1301
1310
if (true ) {}
1302
1311
underlying_type.construct (" " );
1303
1312
}
1304
- #line 800 "pure2-last-use.cpp2"
1313
+ #line 805 "pure2-last-use.cpp2"
1305
1314
auto enum_1 () -> void{
1306
1315
auto max_value {cpp2_new<int >(0 )};
1307
1316
std::reference_wrapper<std::unique_ptr<int > const > min_value {max_value};
@@ -1330,7 +1339,7 @@ auto enum_1() -> void{
1330
1339
f_copy (std::move (v));
1331
1340
} while ( *cpp2::assert_not_null (identity (z)));
1332
1341
}
1333
- #line 828 "pure2-last-use.cpp2"
1342
+ #line 833 "pure2-last-use.cpp2"
1334
1343
auto enum_2 () -> void{
1335
1344
auto umax {cpp2_new<int >(0 )};
1336
1345
if (pred (umax)) {
@@ -1341,41 +1350,41 @@ auto enum_2() -> void{
1341
1350
}}}
1342
1351
}
1343
1352
1344
- #line 839 "pure2-last-use.cpp2"
1353
+ #line 844 "pure2-last-use.cpp2"
1345
1354
auto cpp2_union::destroy () & -> void{}
1346
- #line 840 "pure2-last-use.cpp2"
1355
+ #line 845 "pure2-last-use.cpp2"
1347
1356
cpp2_union::~cpp2_union () noexcept {
1348
1357
destroy ();
1349
1358
static_cast <void >(std::move ((*this )));
1350
1359
}
1351
1360
1352
- #line 851 "pure2-last-use.cpp2"
1361
+ #line 856 "pure2-last-use.cpp2"
1353
1362
[[nodiscard]] auto no_pessimizing_move () -> no_pessimizing_move_ret{
1354
1363
std::unique_ptr<int > ret {};
1355
- #line 852 "pure2-last-use.cpp2"
1364
+ #line 857 "pure2-last-use.cpp2"
1356
1365
return ret; }
1357
- #line 853 "pure2-last-use.cpp2"
1366
+ #line 858 "pure2-last-use.cpp2"
1358
1367
auto deferred_non_copyable_0 () -> void{
1359
1368
cpp2::deferred_init<std::unique_ptr<int >> p;
1360
1369
p.construct ();
1361
1370
f_copy (std::move (p.value ()));
1362
1371
}
1363
1372
1364
- #line 859 "pure2-last-use.cpp2"
1373
+ #line 864 "pure2-last-use.cpp2"
1365
1374
[[nodiscard]] auto deferred_non_copyable_1 () -> auto{
1366
1375
cpp2::deferred_init<std::unique_ptr<int >> p;
1367
1376
p.construct ();
1368
1377
return std::move (p.value ());
1369
1378
}
1370
1379
1371
- #line 865 "pure2-last-use.cpp2"
1380
+ #line 870 "pure2-last-use.cpp2"
1372
1381
[[nodiscard]] auto deferred_non_copyable_2 () -> deferred_non_copyable_2_ret{
1373
1382
cpp2::deferred_init<std::unique_ptr<int >> p;
1374
- #line 866 "pure2-last-use.cpp2"
1383
+ #line 871 "pure2-last-use.cpp2"
1375
1384
p.construct ();
1376
1385
return std::move (p.value ()); }
1377
1386
1378
- #line 869 "pure2-last-use.cpp2"
1387
+ #line 874 "pure2-last-use.cpp2"
1379
1388
auto loops () -> void{
1380
1389
static_cast <void >([]() mutable -> void {
1381
1390
auto x {cpp2_new<int >(0 )};
@@ -1414,7 +1423,7 @@ auto loops() -> void{
1414
1423
1415
1424
namespace captures {
1416
1425
1417
- #line 909 "pure2-last-use.cpp2"
1426
+ #line 914 "pure2-last-use.cpp2"
1418
1427
auto f () -> void{
1419
1428
auto x {cpp2_new<int >(0 )};
1420
1429
f_copy (std::move (x));
@@ -1423,7 +1432,7 @@ auto f() -> void{
1423
1432
if (cpp2::Default.has_handler () && !(&std::move (id)(y) == &y) ) { cpp2::Default.report_violation (" " ); }
1424
1433
}
1425
1434
1426
- #line 921 "pure2-last-use.cpp2"
1435
+ #line 926 "pure2-last-use.cpp2"
1427
1436
auto t::operator ()() && -> void{
1428
1437
f_copy (std::move (*this ).x );
1429
1438
static_cast <void >([&]() mutable -> void {
@@ -1436,7 +1445,7 @@ auto f() -> void{
1436
1445
});
1437
1446
}
1438
1447
1439
- #line 934 "pure2-last-use.cpp2"
1448
+ #line 939 "pure2-last-use.cpp2"
1440
1449
auto g () -> void{
1441
1450
static_cast <void >([]() mutable -> void {
1442
1451
auto x {cpp2_new<int >(0 )};
@@ -1453,7 +1462,7 @@ auto g() -> void{
1453
1462
1454
1463
}
1455
1464
1456
- #line 950 "pure2-last-use.cpp2"
1465
+ #line 955 "pure2-last-use.cpp2"
1457
1466
auto loops_and_captures () -> void{
1458
1467
static_cast <void >([]() mutable -> void {
1459
1468
auto x {cpp2_new<int >(0 )};
@@ -1468,7 +1477,7 @@ auto loops_and_captures() -> void{
1468
1477
f_copy (std::move (x));
1469
1478
for (
1470
1479
1471
- #line 966 "pure2-last-use.cpp2"
1480
+ #line 971 "pure2-last-use.cpp2"
1472
1481
[[maybe_unused]] auto const & unnamed_param_1 : { []() mutable -> auto {using captures::x;return x; } } )
1473
1482
{}
1474
1483
});
@@ -1481,27 +1490,27 @@ auto loops_and_captures() -> void{
1481
1490
});
1482
1491
}
1483
1492
1484
- #line 980 "pure2-last-use.cpp2"
1493
+ #line 985 "pure2-last-use.cpp2"
1485
1494
auto types::f () && -> void { static_cast <void >([&, _1 = std::move (*this ).x ]() mutable -> auto { return *cpp2::assert_not_null (_1); }); }
1486
- #line 981 "pure2-last-use.cpp2"
1495
+ #line 986 "pure2-last-use.cpp2"
1487
1496
auto types::g () && -> void{
1488
1497
for (
1489
1498
[[maybe_unused]] auto const & unnamed_param_1 : { [&, _1 = std::move (*this ).x ]() mutable -> auto { return *cpp2::assert_not_null (_1); } } )
1490
1499
{}
1491
1500
}
1492
1501
1493
- #line 988 "pure2-last-use.cpp2"
1502
+ #line 993 "pure2-last-use.cpp2"
1494
1503
auto skip_hidden_names () -> void{
1495
1504
static_cast <void >([]() mutable -> void {
1496
1505
auto x {cpp2_new<int >(0 )};
1497
1506
f_copy (std::move (x));
1498
1507
{
1499
1508
auto x{cpp2_new<int >(0 )};
1500
1509
1501
- #line 993 "pure2-last-use.cpp2"
1510
+ #line 998 "pure2-last-use.cpp2"
1502
1511
f_copy (std::move (x));
1503
1512
}
1504
- #line 994 "pure2-last-use.cpp2"
1513
+ #line 999 "pure2-last-use.cpp2"
1505
1514
});
1506
1515
1507
1516
static_cast <void >([]() mutable -> void {
@@ -1524,10 +1533,10 @@ auto x{cpp2_new<int>(0)};
1524
1533
{
1525
1534
auto x{cpp2_new<int >(0 )};
1526
1535
1527
- #line 1014 "pure2-last-use.cpp2"
1536
+ #line 1019 "pure2-last-use.cpp2"
1528
1537
f_copy (std::move (x));
1529
1538
}
1530
- #line 1015 "pure2-last-use.cpp2"
1539
+ #line 1020 "pure2-last-use.cpp2"
1531
1540
});
1532
1541
1533
1542
static_cast <void >([]() mutable -> void {
@@ -1551,10 +1560,10 @@ auto x{cpp2_new<int>(0)};
1551
1560
});
1552
1561
}
1553
1562
1554
- #line 1038 "pure2-last-use.cpp2"
1563
+ #line 1043 "pure2-last-use.cpp2"
1555
1564
auto main (int const argc_, char ** argv_) -> int{
1556
1565
auto const args = cpp2::make_args (argc_, argv_);
1557
- #line 1039 "pure2-last-use.cpp2"
1566
+ #line 1044 "pure2-last-use.cpp2"
1558
1567
issue_683 (args);
1559
1568
issue_847_2 (std::vector<std::unique_ptr<int >>());
1560
1569
issue_847_5 (args);
0 commit comments