diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-09-29 00:52:27 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-09-29 00:52:27 +0000 |
commit | 08d6acf6e5efa6df57345922d412476127f856fc (patch) | |
tree | b9a41bb119c52f2d55efa6b1a5c9c106e2370cd4 | |
parent | aee526e77657afd1600276450e9c346953ad51d7 (diff) |
Introduce an opt-in warning when a module is being implicitly built
from sources.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140746 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Basic/DiagnosticCommonKinds.td | 2 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticGroups.td | 1 | ||||
-rw-r--r-- | lib/Frontend/CompilerInstance.cpp | 2 | ||||
-rw-r--r-- | test/Modules/on-demand-build-warnings.m | 5 |
4 files changed, 10 insertions, 0 deletions
diff --git a/include/clang/Basic/DiagnosticCommonKinds.td b/include/clang/Basic/DiagnosticCommonKinds.td index 7639b5b051..1313174b16 100644 --- a/include/clang/Basic/DiagnosticCommonKinds.td +++ b/include/clang/Basic/DiagnosticCommonKinds.td @@ -63,6 +63,8 @@ def err_module_not_found : Error<"module '%0' not found">, DefaultFatal; def err_module_not_built : Error<"could not build module '%0'">, DefaultFatal; def err_module_cycle : Error<"cyclic dependency in module '%0': %1">, DefaultFatal; +def warn_module_build : Warning<"building module '%0' from source">, + InGroup<ModuleBuild>, DefaultIgnore; // Sema && Lex def ext_longlong : Extension< diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index a4dbf96243..9901b79bec 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -85,6 +85,7 @@ def : DiagGroup<"newline-eof">; def LongLong : DiagGroup<"long-long">; def MismatchedTags : DiagGroup<"mismatched-tags">; def MissingFieldInitializers : DiagGroup<"missing-field-initializers">; +def ModuleBuild : DiagGroup<"module-build">; def NullDereference : DiagGroup<"null-dereference">; def InitializerOverrides : DiagGroup<"initializer-overrides">; def NonNull : DiagGroup<"nonnull">; diff --git a/lib/Frontend/CompilerInstance.cpp b/lib/Frontend/CompilerInstance.cpp index 554ca352e1..27fe3f15ff 100644 --- a/lib/Frontend/CompilerInstance.cpp +++ b/lib/Frontend/CompilerInstance.cpp @@ -752,6 +752,8 @@ ModuleKey CompilerInstance::loadModule(SourceLocation ImportLoc, return 0; } + getDiagnostics().Report(ModuleNameLoc, diag::warn_module_build) + << ModuleName.getName(); BuildingModule = true; compileModule(*this, ModuleName.getName(), ModuleFileName, UmbrellaHeader); ModuleFile = PP->getHeaderSearchInfo().lookupModule(ModuleName.getName()); diff --git a/test/Modules/on-demand-build-warnings.m b/test/Modules/on-demand-build-warnings.m new file mode 100644 index 0000000000..ea531698cf --- /dev/null +++ b/test/Modules/on-demand-build-warnings.m @@ -0,0 +1,5 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -fno-objc-infer-related-result-type -Wmodule-build -fmodule-cache-path %t -F %S/Inputs -DFOO -verify %s + +__import_module__ Module; // expected-warning{{building module 'Module' from source}} + |