From 70a7738f8454f3c07c3ec5c0902ebcd905a40637 Mon Sep 17 00:00:00 2001 From: Manman Ren Date: Fri, 21 Oct 2016 23:27:37 +0000 Subject: [PATCH] Module: improve the diagnostic message for include of non-modular header. Emit the actual path to the non-modular include. rdar://28897010 llvm-svn: 284897 --- clang/include/clang/Basic/DiagnosticLexKinds.td | 4 ++-- clang/lib/Lex/ModuleMap.cpp | 3 ++- clang/test/Modules/incomplete-module.m | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td index 604d51db1ffe..fa5aa0e7da15 100644 --- a/clang/include/clang/Basic/DiagnosticLexKinds.td +++ b/clang/include/clang/Basic/DiagnosticLexKinds.td @@ -659,10 +659,10 @@ def warn_use_of_private_header_outside_module : Warning< def err_undeclared_use_of_module : Error< "module %0 does not depend on a module exporting '%1'">; def warn_non_modular_include_in_framework_module : Warning< - "include of non-modular header inside framework module '%0'">, + "include of non-modular header inside framework module '%0': '%1'">, InGroup, DefaultIgnore; def warn_non_modular_include_in_module : Warning< - "include of non-modular header inside module '%0'">, + "include of non-modular header inside module '%0': '%1'">, InGroup, DefaultIgnore; def warn_module_conflict : Warning< "module '%0' conflicts with already-imported module '%1': %2">, diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp index 429b2cc0738e..6a261a115485 100644 --- a/clang/lib/Lex/ModuleMap.cpp +++ b/clang/lib/Lex/ModuleMap.cpp @@ -303,7 +303,8 @@ void ModuleMap::diagnoseHeaderInclusion(Module *RequestingModule, diag::kind DiagID = RequestingModule->getTopLevelModule()->IsFramework ? diag::warn_non_modular_include_in_framework_module : diag::warn_non_modular_include_in_module; - Diags.Report(FilenameLoc, DiagID) << RequestingModule->getFullModuleName(); + Diags.Report(FilenameLoc, DiagID) << RequestingModule->getFullModuleName() + << File->getName(); } } diff --git a/clang/test/Modules/incomplete-module.m b/clang/test/Modules/incomplete-module.m index e338a40c9ab5..ffb2708c6f81 100644 --- a/clang/test/Modules/incomplete-module.m +++ b/clang/test/Modules/incomplete-module.m @@ -2,7 +2,7 @@ // RUN: rm -rf %t // RUN: %clang_cc1 -fmodules-cache-path=%t -Wincomplete-module -fmodules -fimplicit-module-maps -I %S/Inputs %s 2>&1 | FileCheck %s -// CHECK: warning: include of non-modular header inside module 'incomplete_mod' +// CHECK: warning: include of non-modular header inside module 'incomplete_mod': {{'.*incomplete_mod_missing.h'}} // RUN: rm -rf %t // RUN: not %clang_cc1 -fmodules-cache-path=%t -fmodules-strict-decluse -fmodules -fimplicit-module-maps -I %S/Inputs %s 2>&1 | FileCheck %s -check-prefix=DECLUSE