diff --git a/llvm/unittests/ObjectYAML/DWARFYAMLTest.cpp b/llvm/unittests/ObjectYAML/DWARFYAMLTest.cpp --- a/llvm/unittests/ObjectYAML/DWARFYAMLTest.cpp +++ b/llvm/unittests/ObjectYAML/DWARFYAMLTest.cpp @@ -16,13 +16,7 @@ using namespace llvm; -static Expected parseDWARFYAML(StringRef Yaml, - bool IsLittleEndian = false, - bool Is64bit = true) { - DWARFYAML::Data Data; - Data.IsLittleEndian = IsLittleEndian; - Data.Is64bit = Is64bit; - +template static Error parseDWARFYAML(StringRef Yaml, T &Data) { SMDiagnostic GenerateDiag; yaml::Input YIn( Yaml, /*Ctxt=*/nullptr, @@ -35,7 +29,7 @@ if (YIn.error()) return createStringError(YIn.error(), GenerateDiag.getMessage()); - return Data; + return Error::success(); } TEST(DebugAddrSection, TestParseDebugAddrYAML) { @@ -45,18 +39,17 @@ Length: 0x1234 Version: 5 )"; - auto DWARFOrErr = parseDWARFYAML(Yaml); - EXPECT_THAT_EXPECTED(DWARFOrErr, Succeeded()); + DWARFYAML::Data Data; + EXPECT_THAT_ERROR(parseDWARFYAML(Yaml, Data), Succeeded()); } TEST(DebugAddrSection, TestMissingVersion) { StringRef Yaml = R"( -debug_addr: - - Format: DWARF64 - Length: 0x1234 +Format: DWARF64 +Length: 0x1234 )"; - auto DWARFOrErr = parseDWARFYAML(Yaml); - EXPECT_THAT_ERROR(DWARFOrErr.takeError(), + DWARFYAML::AddrTableEntry AddrTableEntry; + EXPECT_THAT_ERROR(parseDWARFYAML(Yaml, AddrTableEntry), FailedWithMessage("missing required key 'Version'")); } @@ -68,8 +61,8 @@ Version: 5 Blah: unexpected )"; - auto DWARFOrErr = parseDWARFYAML(Yaml); - EXPECT_THAT_ERROR(DWARFOrErr.takeError(), + DWARFYAML::Data Data; + EXPECT_THAT_ERROR(parseDWARFYAML(Yaml, Data), FailedWithMessage("unknown key 'Blah'")); } @@ -98,11 +91,11 @@ - DieOffset: 0x4321 Name: def )"; - auto DWARFOrErr = parseDWARFYAML(Yaml); - ASSERT_THAT_EXPECTED(DWARFOrErr, Succeeded()); + DWARFYAML::Data Data; + ASSERT_THAT_ERROR(parseDWARFYAML(Yaml, Data), Succeeded()); - ASSERT_TRUE(DWARFOrErr->PubNames.hasValue()); - DWARFYAML::PubSection PubNames = DWARFOrErr->PubNames.getValue(); + ASSERT_TRUE(Data.PubNames.hasValue()); + DWARFYAML::PubSection PubNames = Data.PubNames.getValue(); ASSERT_EQ(PubNames.Entries.size(), 2u); EXPECT_EQ((uint32_t)PubNames.Entries[0].DieOffset, 0x1234u); @@ -110,8 +103,8 @@ EXPECT_EQ((uint32_t)PubNames.Entries[1].DieOffset, 0x4321u); EXPECT_EQ(PubNames.Entries[1].Name, "def"); - ASSERT_TRUE(DWARFOrErr->PubTypes.hasValue()); - DWARFYAML::PubSection PubTypes = DWARFOrErr->PubTypes.getValue(); + ASSERT_TRUE(Data.PubTypes.hasValue()); + DWARFYAML::PubSection PubTypes = Data.PubTypes.getValue(); ASSERT_EQ(PubTypes.Entries.size(), 2u); EXPECT_EQ((uint32_t)PubTypes.Entries[0].DieOffset, 0x1234u); @@ -133,8 +126,9 @@ Descriptor: 0x12 Name: abcd )"; - auto DWARFOrErr = parseDWARFYAML(Yaml); - EXPECT_THAT_ERROR(DWARFOrErr.takeError(), + + DWARFYAML::Data Data; + EXPECT_THAT_ERROR(parseDWARFYAML(Yaml, Data), FailedWithMessage("unknown key 'Descriptor'")); } @@ -167,11 +161,11 @@ Descriptor: 0x34 Name: def )"; - auto DWARFOrErr = parseDWARFYAML(Yaml); - ASSERT_THAT_EXPECTED(DWARFOrErr, Succeeded()); + DWARFYAML::Data Data; + ASSERT_THAT_ERROR(parseDWARFYAML(Yaml, Data), Succeeded()); - ASSERT_TRUE(DWARFOrErr->GNUPubNames.hasValue()); - DWARFYAML::PubSection GNUPubNames = DWARFOrErr->GNUPubNames.getValue(); + ASSERT_TRUE(Data.GNUPubNames.hasValue()); + DWARFYAML::PubSection GNUPubNames = Data.GNUPubNames.getValue(); ASSERT_EQ(GNUPubNames.Entries.size(), 2u); EXPECT_EQ((uint32_t)GNUPubNames.Entries[0].DieOffset, 0x1234u); @@ -181,8 +175,8 @@ EXPECT_EQ((uint8_t)GNUPubNames.Entries[1].Descriptor, 0x34); EXPECT_EQ(GNUPubNames.Entries[1].Name, "def"); - ASSERT_TRUE(DWARFOrErr->GNUPubTypes.hasValue()); - DWARFYAML::PubSection GNUPubTypes = DWARFOrErr->GNUPubTypes.getValue(); + ASSERT_TRUE(Data.GNUPubTypes.hasValue()); + DWARFYAML::PubSection GNUPubTypes = Data.GNUPubTypes.getValue(); ASSERT_EQ(GNUPubTypes.Entries.size(), 2u); EXPECT_EQ((uint32_t)GNUPubTypes.Entries[0].DieOffset, 0x1234u); @@ -205,7 +199,7 @@ - DieOffset: 0x1234 Name: abcd )"; - auto DWARFOrErr = parseDWARFYAML(Yaml); - EXPECT_THAT_ERROR(DWARFOrErr.takeError(), + DWARFYAML::Data Data; + EXPECT_THAT_ERROR(parseDWARFYAML(Yaml, Data), FailedWithMessage("missing required key 'Descriptor'")); }