summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorBen Langmuir <blangmuir@apple.com>2014-07-23 15:30:23 +0000
committerBen Langmuir <blangmuir@apple.com>2014-07-23 15:30:23 +0000
commitb537a3a651803cd11edf0e5c33f6cfa397dd9d10 (patch)
tree61e1fcea26817dc4a7b8f2297e3527c3b442bb25 /clang/lib/Sema/SemaDecl.cpp
parent002fb104bd0a53df5917a5e2a3bfd93cb96d9bd4 (diff)
downloadbcm5719-llvm-b537a3a651803cd11edf0e5c33f6cfa397dd9d10.tar.gz
bcm5719-llvm-b537a3a651803cd11edf0e5c33f6cfa397dd9d10.zip
Add stopgap option -fmodule-implementation-of <name>
This flag specifies that we are building an implementation file of the module <name>, preventing importing <name> as a module. This does not consider this to be the 'current module' for the purposes of doing modular checks like decluse or non-modular-include warnings, unlike -fmodule-name. This is needed as a stopgap until: 1) we can resolve relative includes to a VFS-mapped module (or can safely import a header textually and as part of a module) and ideally 2) we can safely do incremental rebuilding when implementation files import submodules. llvm-svn: 213767
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index bbe69306b64..9ce09288de1 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -13438,6 +13438,9 @@ DeclResult Sema::ActOnModuleImport(SourceLocation AtLoc,
if (Mod->getTopLevelModuleName() == getLangOpts().CurrentModule)
Diag(ImportLoc, diag::err_module_self_import)
<< Mod->getFullModuleName() << getLangOpts().CurrentModule;
+ else if (Mod->getTopLevelModuleName() == getLangOpts().ImplementationOfModule)
+ Diag(ImportLoc, diag::err_module_import_in_implementation)
+ << Mod->getFullModuleName() << getLangOpts().ImplementationOfModule;
SmallVector<SourceLocation, 2> IdentifierLocs;
Module *ModCheck = Mod;
OpenPOWER on IntegriCloud