[lldb] llvm::Optional::value() && => operator*/operator->
authorFangrui Song <i@maskray.me>
Sat, 17 Dec 2022 20:37:13 +0000 (20:37 +0000)
committerFangrui Song <i@maskray.me>
Sat, 17 Dec 2022 20:37:13 +0000 (20:37 +0000)
std::optional::value() has undesired exception checking semantics and is
unavailable in older Xcode (see _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS). The
call sites block std::optional migration.

lldb/source/Commands/CommandObjectFrame.cpp
lldb/source/Commands/CommandObjectMemory.cpp
lldb/source/Plugins/Instruction/RISCV/EmulateInstructionRISCV.cpp
lldb/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp
lldb/source/Target/Thread.cpp
lldb/tools/lldb-test/lldb-test.cpp
lldb/unittests/Host/ConnectionFileDescriptorTest.cpp
lldb/unittests/Utility/StringExtractorGDBRemoteTest.cpp

index 64bd2c3..a09fe64 100644 (file)
@@ -144,10 +144,10 @@ protected:
             "`frame diagnose --address` is incompatible with other arguments.");
         return false;
       }
-      valobj_sp = frame_sp->GuessValueForAddress(m_options.address.value());
+      valobj_sp = frame_sp->GuessValueForAddress(*m_options.address);
     } else if (m_options.reg) {
       valobj_sp = frame_sp->GuessValueForRegisterAndOffset(
-          m_options.reg.value(), m_options.offset.value_or(0));
+          *m_options.reg, m_options.offset.value_or(0));
     } else {
       StopInfoSP stop_info_sp = thread->GetStopInfo();
       if (!stop_info_sp) {
index e42665b..646747e 100644 (file)
@@ -1739,7 +1739,7 @@ protected:
     const llvm::Optional<std::vector<addr_t>> &dirty_page_list =
         range_info.GetDirtyPageList();
     if (dirty_page_list) {
-      const size_t page_count = dirty_page_list.value().size();
+      const size_t page_count = dirty_page_list->size();
       result.AppendMessageWithFormat(
           "Modified memory (dirty) page list provided, %zu entries.\n",
           page_count);
index 1af60d2..b78fbf7 100644 (file)
@@ -1214,8 +1214,7 @@ public:
     return transformOptional(inst.rs1.Read(m_emu),
                              [&](auto &&rs1) {
                                uint64_t addr = rs1 + uint64_t(inst.imm);
-                               uint64_t bits =
-                                   m_emu.ReadMem<uint64_t>(addr).value();
+                               uint64_t bits = *m_emu.ReadMem<uint64_t>(addr);
                                APFloat f(semantics(), APInt(numBits, bits));
                                return inst.rd.WriteAPFloat(m_emu, f);
                              })
index cf543ce..70adc1d 100644 (file)
@@ -55,8 +55,8 @@ Optional<ParsedName> CPlusPlusNameParser::ParseAsFullName() {
   if (HasMoreTokens())
     return std::nullopt;
   ParsedName result;
-  result.basename = GetTextForRange(name_ranges.value().basename_range);
-  result.context = GetTextForRange(name_ranges.value().context_range);
+  result.basename = GetTextForRange(name_ranges->basename_range);
+  result.context = GetTextForRange(name_ranges->context_range);
   return result;
 }
 
@@ -130,8 +130,8 @@ CPlusPlusNameParser::ParseFunctionImpl(bool expect_return_type) {
   SkipFunctionQualifiers();
   size_t end_position = GetCurrentPosition();
 
-  result.name.basename = GetTextForRange(maybe_name.value().basename_range);
-  result.name.context = GetTextForRange(maybe_name.value().context_range);
+  result.name.basename = GetTextForRange(maybe_name->basename_range);
+  result.name.context = GetTextForRange(maybe_name->context_range);
   result.arguments = GetTextForRange(Range(argument_start, qualifiers_start));
   result.qualifiers = GetTextForRange(Range(qualifiers_start, end_position));
   start_position.Remove();
@@ -709,10 +709,10 @@ CPlusPlusNameParser::ParseFullNameImpl() {
       state == State::AfterTemplate) {
     ParsedNameRanges result;
     if (last_coloncolon_position) {
-      result.context_range = Range(start_position.GetSavedPosition(),
-                                   last_coloncolon_position.value());
+      result.context_range =
+          Range(start_position.GetSavedPosition(), *last_coloncolon_position);
       result.basename_range =
-          Range(last_coloncolon_position.value() + 1, GetCurrentPosition());
+          Range(*last_coloncolon_position + 1, GetCurrentPosition());
     } else {
       result.basename_range =
           Range(start_position.GetSavedPosition(), GetCurrentPosition());
index ade24da..5b4c5db 100644 (file)
@@ -2049,7 +2049,7 @@ lldb::ValueObjectSP Thread::GetSiginfoValue() {
   llvm::Optional<uint64_t> type_size = type.GetByteSize(nullptr);
   assert(type_size);
   llvm::Expected<std::unique_ptr<llvm::MemoryBuffer>> data =
-      GetSiginfo(type_size.value());
+      GetSiginfo(*type_size);
   if (!data)
     return ValueObjectConstResult::Create(&target, Status(data.takeError()));
 
index 887cd14..cb04ca5 100644 (file)
@@ -883,7 +883,7 @@ static Mangled::NamePreference opts::symtab::getNamePreference() {
 
 int opts::symtab::handleSymtabCommand(Debugger &Dbg) {
   if (auto error = validate()) {
-    logAllUnhandledErrors(std::move(error.value()), WithColor::error(), "");
+    logAllUnhandledErrors(std::move(*error), WithColor::error(), "");
     return 1;
   }
 
index 82cd49f..250ed6f 100644 (file)
@@ -27,7 +27,7 @@ public:
 
     std::string uri(connection_file_descriptor.GetURI());
     EXPECT_EQ((URI{"connect", ip, socket->GetRemotePortNumber(), "/"}),
-              URI::Parse(uri).value());
+              *URI::Parse(uri));
   }
 };
 
index 016992b..5bf7440 100644 (file)
@@ -109,77 +109,76 @@ TEST(StringExtractorGDBRemoteTest, GetPidTid) {
   // pure thread id
 
   ex.Reset("-1");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(100, StringExtractorGDBRemote::AllThreads));
 
   ex.Reset("1234");
-  EXPECT_THAT(ex.GetPidTid(100).value(), ::testing::Pair(100, 0x1234ULL));
+  EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(100, 0x1234ULL));
 
   ex.Reset("123456789ABCDEF0");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
-              ::testing::Pair(100, 0x123456789ABCDEF0ULL));
+  EXPECT_THAT(*ex.GetPidTid(100), ::testing::Pair(100, 0x123456789ABCDEF0ULL));
 
   // pure process id
 
   ex.Reset("p-1");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(StringExtractorGDBRemote::AllProcesses,
                               StringExtractorGDBRemote::AllThreads));
 
   ex.Reset("p1234");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x1234ULL, StringExtractorGDBRemote::AllThreads));
 
   ex.Reset("p123456789ABCDEF0");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x123456789ABCDEF0ULL,
                               StringExtractorGDBRemote::AllThreads));
 
   ex.Reset("pFFFFFFFFFFFFFFFF");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(StringExtractorGDBRemote::AllProcesses,
                               StringExtractorGDBRemote::AllThreads));
 
   // combined thread id + process id
 
   ex.Reset("p-1.-1");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(StringExtractorGDBRemote::AllProcesses,
                               StringExtractorGDBRemote::AllThreads));
 
   ex.Reset("p1234.-1");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x1234ULL, StringExtractorGDBRemote::AllThreads));
 
   ex.Reset("p1234.123456789ABCDEF0");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x1234ULL, 0x123456789ABCDEF0ULL));
 
   ex.Reset("p123456789ABCDEF0.-1");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x123456789ABCDEF0ULL,
                               StringExtractorGDBRemote::AllThreads));
 
   ex.Reset("p123456789ABCDEF0.1234");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x123456789ABCDEF0ULL, 0x1234ULL));
 
   ex.Reset("p123456789ABCDEF0.123456789ABCDEF0");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x123456789ABCDEF0ULL, 0x123456789ABCDEF0ULL));
 
   ex.Reset("p123456789ABCDEF0.123456789ABCDEF0");
-  EXPECT_THAT(ex.GetPidTid(100).value(),
+  EXPECT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x123456789ABCDEF0ULL, 0x123456789ABCDEF0ULL));
 }
 
 TEST(StringExtractorGDBRemoteTest, GetPidTidMultipleValues) {
   StringExtractorGDBRemote ex("1234;p12;p1234.-1");
-  ASSERT_THAT(ex.GetPidTid(100).value(), ::testing::Pair(100, 0x1234ULL));
+  ASSERT_THAT(*ex.GetPidTid(100), ::testing::Pair(100, 0x1234ULL));
   ASSERT_EQ(ex.GetChar(), ';');
-  ASSERT_THAT(ex.GetPidTid(100).value(),
+  ASSERT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x12ULL, StringExtractorGDBRemote::AllThreads));
   ASSERT_EQ(ex.GetChar(), ';');
-  ASSERT_THAT(ex.GetPidTid(100).value(),
+  ASSERT_THAT(*ex.GetPidTid(100),
               ::testing::Pair(0x1234ULL, StringExtractorGDBRemote::AllThreads));
 }