forked from OSchip/llvm-project
Make a module "use" also count as use of all its submodules
llvm-svn: 232159
This commit is contained in:
parent
0deef9c3cb
commit
b6ba46ef30
|
@ -208,9 +208,11 @@ ModuleMap::findHeaderInUmbrellaDirs(const FileEntry *File,
|
|||
// Returns true if RequestingModule directly uses RequestedModule.
|
||||
static bool directlyUses(const Module *RequestingModule,
|
||||
const Module *RequestedModule) {
|
||||
return std::find(RequestingModule->DirectUses.begin(),
|
||||
RequestingModule->DirectUses.end(),
|
||||
RequestedModule) != RequestingModule->DirectUses.end();
|
||||
for (const Module* DirectUse : RequestingModule->DirectUses) {
|
||||
if (RequestedModule->isSubModuleOf(DirectUse))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool violatesPrivateInclude(Module *RequestingModule,
|
||||
|
|
|
@ -39,6 +39,7 @@ module XG {
|
|||
use XE
|
||||
use XJ
|
||||
use XK
|
||||
use XN
|
||||
}
|
||||
|
||||
module XH {
|
||||
|
@ -66,5 +67,11 @@ module XM {
|
|||
textual header "m2.h"
|
||||
}
|
||||
|
||||
module XN {
|
||||
module sub {
|
||||
header "sub.h"
|
||||
}
|
||||
}
|
||||
|
||||
module XS {
|
||||
}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
#ifndef SUB_H
|
||||
#define SUB_H
|
||||
const int sub = 42;
|
||||
#endif
|
|
@ -5,4 +5,5 @@
|
|||
#include "e.h"
|
||||
#include "f.h" // expected-error {{module XG does not depend on a module exporting 'f.h'}}
|
||||
#include "i.h"
|
||||
const int g2 = g1 + e + f + aux_i;
|
||||
#include "sub.h"
|
||||
const int g2 = g1 + e + f + aux_i + sub;
|
||||
|
|
Loading…
Reference in New Issue