|
26 | 26 |
|
27 | 27 | #include "gtest/gtest.h" |
28 | 28 |
|
| 29 | +#include <memory> |
| 30 | + |
29 | 31 | using namespace lldb; |
30 | 32 | using namespace lldb_private; |
31 | 33 |
|
@@ -589,25 +591,25 @@ TEST_P(DemanglingPartsTestFixture, DemanglingParts) { |
589 | 591 |
|
590 | 592 | ASSERT_NE(nullptr, Root); |
591 | 593 |
|
592 | | - TrackingOutputBuffer OB; |
593 | | - Root->print(OB); |
594 | | - auto demangled = std::string_view(OB); |
| 594 | + auto OB = std::unique_ptr<TrackingOutputBuffer, TrackingOutputBufferDeleter>( |
| 595 | + new TrackingOutputBuffer()); |
| 596 | + Root->print(*OB); |
| 597 | + auto demangled = std::string_view(*OB); |
595 | 598 |
|
596 | | - ASSERT_EQ(OB.NameInfo.hasBasename(), valid_basename); |
| 599 | + ASSERT_EQ(OB->NameInfo.hasBasename(), valid_basename); |
597 | 600 |
|
598 | | - EXPECT_EQ(OB.NameInfo.BasenameRange, info.BasenameRange); |
599 | | - EXPECT_EQ(OB.NameInfo.ScopeRange, info.ScopeRange); |
600 | | - EXPECT_EQ(OB.NameInfo.ArgumentsRange, info.ArgumentsRange); |
601 | | - EXPECT_EQ(OB.NameInfo.QualifiersRange, info.QualifiersRange); |
| 601 | + EXPECT_EQ(OB->NameInfo.BasenameRange, info.BasenameRange); |
| 602 | + EXPECT_EQ(OB->NameInfo.ScopeRange, info.ScopeRange); |
| 603 | + EXPECT_EQ(OB->NameInfo.ArgumentsRange, info.ArgumentsRange); |
| 604 | + EXPECT_EQ(OB->NameInfo.QualifiersRange, info.QualifiersRange); |
602 | 605 |
|
603 | 606 | auto get_part = [&](const std::pair<size_t, size_t> &loc) { |
604 | 607 | return demangled.substr(loc.first, loc.second - loc.first); |
605 | 608 | }; |
606 | 609 |
|
607 | | - EXPECT_EQ(get_part(OB.NameInfo.BasenameRange), basename); |
608 | | - EXPECT_EQ(get_part(OB.NameInfo.ScopeRange), scope); |
609 | | - EXPECT_EQ(get_part(OB.NameInfo.QualifiersRange), qualifiers); |
610 | | - std::free(OB.getBuffer()); |
| 610 | + EXPECT_EQ(get_part(OB->NameInfo.BasenameRange), basename); |
| 611 | + EXPECT_EQ(get_part(OB->NameInfo.ScopeRange), scope); |
| 612 | + EXPECT_EQ(get_part(OB->NameInfo.QualifiersRange), qualifiers); |
611 | 613 | } |
612 | 614 |
|
613 | 615 | INSTANTIATE_TEST_SUITE_P(DemanglingPartsTests, DemanglingPartsTestFixture, |
@@ -635,44 +637,42 @@ TEST_P(DemanglingInfoCorrectnessTestFixutre, Correctness) { |
635 | 637 |
|
636 | 638 | ASSERT_NE(nullptr, Root); |
637 | 639 |
|
638 | | - TrackingOutputBuffer OB; |
639 | | - Root->print(OB); |
| 640 | + auto OB = std::unique_ptr<TrackingOutputBuffer, TrackingOutputBufferDeleter>( |
| 641 | + new TrackingOutputBuffer()); |
| 642 | + Root->print(*OB); |
640 | 643 |
|
641 | 644 | // Filter out cases which would never show up in frames. We only care about |
642 | 645 | // function names. |
643 | 646 | if (Root->getKind() != |
644 | 647 | llvm::itanium_demangle::Node::Kind::KFunctionEncoding && |
645 | | - Root->getKind() != llvm::itanium_demangle::Node::Kind::KDotSuffix) { |
646 | | - std::free(OB.getBuffer()); |
| 648 | + Root->getKind() != llvm::itanium_demangle::Node::Kind::KDotSuffix) |
647 | 649 | return; |
648 | | - } |
649 | 650 |
|
650 | | - ASSERT_TRUE(OB.NameInfo.hasBasename()); |
651 | | - |
652 | | - auto tracked_name = llvm::StringRef(OB); |
653 | | - |
654 | | - auto return_left = tracked_name.slice(0, OB.NameInfo.ScopeRange.first); |
655 | | - auto scope = tracked_name.slice(OB.NameInfo.ScopeRange.first, |
656 | | - OB.NameInfo.ScopeRange.second); |
657 | | - auto basename = tracked_name.slice(OB.NameInfo.BasenameRange.first, |
658 | | - OB.NameInfo.BasenameRange.second); |
659 | | - auto template_args = tracked_name.slice(OB.NameInfo.BasenameRange.second, |
660 | | - OB.NameInfo.ArgumentsRange.first); |
661 | | - auto args = tracked_name.slice(OB.NameInfo.ArgumentsRange.first, |
662 | | - OB.NameInfo.ArgumentsRange.second); |
663 | | - auto return_right = tracked_name.slice(OB.NameInfo.ArgumentsRange.second, |
664 | | - OB.NameInfo.QualifiersRange.first); |
665 | | - auto qualifiers = tracked_name.slice(OB.NameInfo.QualifiersRange.first, |
666 | | - OB.NameInfo.QualifiersRange.second); |
667 | | - auto suffix = tracked_name.slice(OB.NameInfo.QualifiersRange.second, |
| 651 | + ASSERT_TRUE(OB->NameInfo.hasBasename()); |
| 652 | + |
| 653 | + auto tracked_name = llvm::StringRef(*OB); |
| 654 | + |
| 655 | + auto return_left = tracked_name.slice(0, OB->NameInfo.ScopeRange.first); |
| 656 | + auto scope = tracked_name.slice(OB->NameInfo.ScopeRange.first, |
| 657 | + OB->NameInfo.ScopeRange.second); |
| 658 | + auto basename = tracked_name.slice(OB->NameInfo.BasenameRange.first, |
| 659 | + OB->NameInfo.BasenameRange.second); |
| 660 | + auto template_args = tracked_name.slice(OB->NameInfo.BasenameRange.second, |
| 661 | + OB->NameInfo.ArgumentsRange.first); |
| 662 | + auto args = tracked_name.slice(OB->NameInfo.ArgumentsRange.first, |
| 663 | + OB->NameInfo.ArgumentsRange.second); |
| 664 | + auto return_right = tracked_name.slice(OB->NameInfo.ArgumentsRange.second, |
| 665 | + OB->NameInfo.QualifiersRange.first); |
| 666 | + auto qualifiers = tracked_name.slice(OB->NameInfo.QualifiersRange.first, |
| 667 | + OB->NameInfo.QualifiersRange.second); |
| 668 | + auto suffix = tracked_name.slice(OB->NameInfo.QualifiersRange.second, |
668 | 669 | llvm::StringRef::npos); |
669 | 670 |
|
670 | 671 | auto reconstructed_name = |
671 | 672 | llvm::join_items("", return_left, scope, basename, template_args, args, |
672 | 673 | return_right, qualifiers, suffix); |
673 | 674 |
|
674 | 675 | EXPECT_EQ(reconstructed_name, demangled); |
675 | | - std::free(OB.getBuffer()); |
676 | 676 | } |
677 | 677 |
|
678 | 678 | INSTANTIATE_TEST_SUITE_P( |
|
0 commit comments