Module use declarations (II)
Review: http://llvm-reviews.chandlerc.com/D1546. I have picked up this patch form Lawrence (http://llvm-reviews.chandlerc.com/D1063) and did a few changes. From the original change description (updated as appropriate): This patch adds a check that ensures that modules only use modules they have so declared. To this end, it adds a statement on intended module use to the module.map grammar: use module-id A module can then only use headers from other modules if it 'uses' them. This enforcement is off by default, but may be turned on with the new option -fmodules-decluse. When enforcing the module semantics, we also need to consider a source file part of a module. This is achieved with a compiler option -fmodule-name=<module-id>. The compiler at present only applies restrictions to the module directly being built. llvm-svn: 191283
This commit is contained in:
@@ -362,6 +362,20 @@ void Module::print(raw_ostream &OS, unsigned Indent) const {
|
||||
OS << "\n";
|
||||
}
|
||||
|
||||
for (unsigned I = 0, N = DirectUses.size(); I != N; ++I) {
|
||||
OS.indent(Indent + 2);
|
||||
OS << "use ";
|
||||
OS << DirectUses[I]->getFullModuleName();
|
||||
OS << "\n";
|
||||
}
|
||||
|
||||
for (unsigned I = 0, N = UnresolvedDirectUses.size(); I != N; ++I) {
|
||||
OS.indent(Indent + 2);
|
||||
OS << "use ";
|
||||
printModuleId(OS, UnresolvedDirectUses[I]);
|
||||
OS << "\n";
|
||||
}
|
||||
|
||||
for (unsigned I = 0, N = LinkLibraries.size(); I != N; ++I) {
|
||||
OS.indent(Indent + 2);
|
||||
OS << "link ";
|
||||
|
||||
Reference in New Issue
Block a user