[modules] Retain the name as written for umbrella headers and directories, rather than converting to an absolute path. No observable change expected, but this allows us to correctly compute the module for an umbrella header, which later changes will require.

llvm-svn: 237508
This commit is contained in:
Richard Smith
2015-05-16 02:28:53 +00:00
parent d3967635bc
commit 2b63d15f49
9 changed files with 87 additions and 66 deletions

View File

@@ -138,11 +138,11 @@ std::string Module::getFullModuleName() const {
return Result;
}
const DirectoryEntry *Module::getUmbrellaDir() const {
if (const FileEntry *Header = getUmbrellaHeader())
return Header->getDir();
Module::DirectoryName Module::getUmbrellaDir() const {
if (Header U = getUmbrellaHeader())
return {"", U.Entry->getDir()};
return Umbrella.dyn_cast<const DirectoryEntry *>();
return {UmbrellaAsWritten, Umbrella.dyn_cast<const DirectoryEntry *>()};
}
ArrayRef<const FileEntry *> Module::getTopHeaders(FileManager &FileMgr) {
@@ -334,15 +334,15 @@ void Module::print(raw_ostream &OS, unsigned Indent) const {
OS << "\n";
}
if (const FileEntry *UmbrellaHeader = getUmbrellaHeader()) {
if (Header H = getUmbrellaHeader()) {
OS.indent(Indent + 2);
OS << "umbrella header \"";
OS.write_escaped(UmbrellaHeader->getName());
OS.write_escaped(H.NameAsWritten);
OS << "\"\n";
} else if (const DirectoryEntry *UmbrellaDir = getUmbrellaDir()) {
} else if (DirectoryName D = getUmbrellaDir()) {
OS.indent(Indent + 2);
OS << "umbrella \"";
OS.write_escaped(UmbrellaDir->getName());
OS.write_escaped(D.NameAsWritten);
OS << "\"\n";
}