When the header file search resolves a quoted include to a file in the
current directory, propagate the framework and in-index-header-map from the including header's information down to the included header's information. Fixes <rdar://problem/11261291>. As with everything header-map related, we can't really test this in isolation within Clang, so it's tested elsewhere. llvm-svn: 161759
This commit is contained in:
parent
402685a881
commit
03b5ebe4cb
|
@ -442,11 +442,19 @@ const FileEntry *HeaderSearch::LookupFile(
|
|||
// Leave CurDir unset.
|
||||
// This file is a system header or C++ unfriendly if the old file is.
|
||||
//
|
||||
// Note that the temporary 'DirInfo' is required here, as either call to
|
||||
// getFileInfo could resize the vector and we don't want to rely on order
|
||||
// of evaluation.
|
||||
unsigned DirInfo = getFileInfo(CurFileEnt).DirInfo;
|
||||
getFileInfo(FE).DirInfo = DirInfo;
|
||||
// Note that we only use one of FromHFI/ToHFI at once, due to potential
|
||||
// reallocation of the underlying vector potentially making the first
|
||||
// reference binding dangling.
|
||||
HeaderFileInfo &FromHFI = getFileInfo(CurFileEnt);
|
||||
unsigned DirInfo = FromHFI.DirInfo;
|
||||
bool IndexHeaderMapHeader = FromHFI.IndexHeaderMapHeader;
|
||||
StringRef Framework = FromHFI.Framework;
|
||||
|
||||
HeaderFileInfo &ToHFI = getFileInfo(FE);
|
||||
ToHFI.DirInfo = DirInfo;
|
||||
ToHFI.IndexHeaderMapHeader = IndexHeaderMapHeader;
|
||||
ToHFI.Framework = Framework;
|
||||
|
||||
if (SearchPath != NULL) {
|
||||
StringRef SearchPathRef(CurFileEnt->getDir()->getName());
|
||||
SearchPath->clear();
|
||||
|
|
Loading…
Reference in New Issue