forked from OSchip/llvm-project
Investigate failure in rGdd13f45e04366cc4f648b57ec87d20a5569e27c3
https://lab.llvm.org/buildbot/#/builders/123/builds/6406/steps/8/logs/stdio
This commit is contained in:
parent
2c60cfc05f
commit
d084c42bdf
|
@ -168,8 +168,10 @@ IncludeStructure::getOrCreateID(const FileEntry *Entry) {
|
|||
auto R = NameToIndex.try_emplace(
|
||||
Entry->getName(),
|
||||
static_cast<IncludeStructure::HeaderID>(RealPathNames.size()));
|
||||
if (R.second)
|
||||
if (R.second) {
|
||||
RealPathNames.emplace_back();
|
||||
FileEntryIDs.push_back(Entry->getUID());
|
||||
}
|
||||
IncludeStructure::HeaderID Result = R.first->getValue();
|
||||
std::string &RealPathName = RealPathNames[static_cast<unsigned>(Result)];
|
||||
if (RealPathName.empty())
|
||||
|
|
|
@ -141,8 +141,16 @@ public:
|
|||
|
||||
std::vector<Inclusion> MainFileIncludes;
|
||||
|
||||
std::string dump() {
|
||||
return "RealPathNames: " +
|
||||
llvm::join(RealPathNames.begin(), RealPathNames.end(), ", ") +
|
||||
"\nFileEntryIDs: " +
|
||||
llvm::join(FileEntryIDs.begin(), FileEntryIDs.end(), ", ") + '\n';
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector<std::string> RealPathNames; // In HeaderID order.
|
||||
std::vector<unsigned> FileEntryIDs; // In HeaderID order.
|
||||
// HeaderID maps the FileEntry::Name to the internal representation.
|
||||
// Identifying files in a way that persists from preamble build to subsequent
|
||||
// builds is surprisingly hard. FileID is unavailable in
|
||||
|
|
|
@ -165,7 +165,8 @@ TEST_F(HeadersTest, CollectRewrittenAndResolved) {
|
|||
AllOf(Written("\"sub/bar.h\""), Resolved(BarHeader))));
|
||||
EXPECT_THAT(Includes.includeDepth(getID(MainFile, Includes)),
|
||||
UnorderedElementsAre(Distance(getID(MainFile, Includes), 0u),
|
||||
Distance(getID(BarHeader, Includes), 1u)));
|
||||
Distance(getID(BarHeader, Includes), 1u)))
|
||||
<< Includes.dump();
|
||||
}
|
||||
|
||||
TEST_F(HeadersTest, OnlyCollectInclusionsInMain) {
|
||||
|
@ -179,17 +180,19 @@ TEST_F(HeadersTest, OnlyCollectInclusionsInMain) {
|
|||
#include "bar.h"
|
||||
)cpp";
|
||||
auto Includes = collectIncludes();
|
||||
EXPECT_THAT(Includes.MainFileIncludes,
|
||||
UnorderedElementsAre(
|
||||
AllOf(Written("\"bar.h\""), Resolved(BarHeader))));
|
||||
EXPECT_THAT(
|
||||
Includes.MainFileIncludes,
|
||||
UnorderedElementsAre(AllOf(Written("\"bar.h\""), Resolved(BarHeader))));
|
||||
EXPECT_THAT(Includes.includeDepth(getID(MainFile, Includes)),
|
||||
UnorderedElementsAre(Distance(getID(MainFile, Includes), 0u),
|
||||
Distance(getID(BarHeader, Includes), 1u),
|
||||
Distance(getID(BazHeader, Includes), 2u)));
|
||||
Distance(getID(BazHeader, Includes), 2u)))
|
||||
<< Includes.dump();
|
||||
// includeDepth() also works for non-main files.
|
||||
EXPECT_THAT(Includes.includeDepth(getID(BarHeader, Includes)),
|
||||
UnorderedElementsAre(Distance(getID(BarHeader, Includes), 0u),
|
||||
Distance(getID(BazHeader, Includes), 1u)));
|
||||
Distance(getID(BazHeader, Includes), 1u)))
|
||||
<< Includes.dump();
|
||||
}
|
||||
|
||||
TEST_F(HeadersTest, PreambleIncludesPresentOnce) {
|
||||
|
@ -240,7 +243,7 @@ TEST_F(HeadersTest, IncludedFilesGraph) {
|
|||
{getID(BarHeader, Includes), getID(FooHeader, Includes)}},
|
||||
{getID(FooHeader, Includes),
|
||||
{getID(BarHeader, Includes), getID(BazHeader, Includes)}}};
|
||||
EXPECT_EQ(Includes.IncludeChildren, Expected);
|
||||
EXPECT_EQ(Includes.IncludeChildren, Expected) << Includes.dump();
|
||||
}
|
||||
|
||||
TEST_F(HeadersTest, IncludeDirective) {
|
||||
|
|
|
@ -517,7 +517,7 @@ TEST(ParsedASTTest, PatchesAdditionalIncludes) {
|
|||
ASSERT_TRUE(MainFE);
|
||||
auto MainID = Includes.getID(*MainFE);
|
||||
auto AuxFE = FM.getFile(testPath("sub/aux.h"));
|
||||
ASSERT_TRUE(AuxFE);
|
||||
ASSERT_TRUE(AuxFE) << Includes.dump();
|
||||
auto AuxID = Includes.getID(*AuxFE);
|
||||
EXPECT_THAT(Includes.IncludeChildren[*MainID], Contains(*AuxID));
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue