From: Manman Ren Date: Thu, 19 Jan 2017 19:05:55 +0000 (+0000) Subject: Module: Improve diagnostic message when cxx modules are disabled and @import is used... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=103c86b73b9b22adf7932a7e67ba645e38800c0d;p=clang Module: Improve diagnostic message when cxx modules are disabled and @import is used in Objective CXX. rdar://problem/19399671 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@292508 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticParseKinds.td b/include/clang/Basic/DiagnosticParseKinds.td index 0943feae95..a7d2116f1a 100644 --- a/include/clang/Basic/DiagnosticParseKinds.td +++ b/include/clang/Basic/DiagnosticParseKinds.td @@ -243,7 +243,10 @@ def err_expected_property_name : Error<"expected property name">; def err_unexpected_at : Error<"unexpected '@' in program">; def err_atimport : Error< -"use of '@import' when modules are disabled">; + "use of '@import' when modules are disabled">; +def err_atimport_cxx : Error< + "use of '@import' when C++ modules are disabled, consider using fmodules " + "and fcxx-modules">; def err_invalid_reference_qualifier_application : Error< "'%0' qualifier may not be applied to a reference">; diff --git a/lib/Parse/ParseObjc.cpp b/lib/Parse/ParseObjc.cpp index 81761bf8d2..68768e1835 100644 --- a/lib/Parse/ParseObjc.cpp +++ b/lib/Parse/ParseObjc.cpp @@ -83,7 +83,10 @@ Parser::DeclGroupPtrTy Parser::ParseObjCAtDirectives() { case tok::objc_import: if (getLangOpts().Modules || getLangOpts().DebuggerSupport) return ParseModuleImport(AtLoc); - Diag(AtLoc, diag::err_atimport); + if (getLangOpts().CPlusPlus) + Diag(AtLoc, diag::err_atimport_cxx); + else + Diag(AtLoc, diag::err_atimport); SkipUntil(tok::semi); return Actions.ConvertDeclToDeclGroup(nullptr); default: diff --git a/test/Modules/check-syntax.mm b/test/Modules/check-syntax.mm new file mode 100644 index 0000000000..ebb4bd3faf --- /dev/null +++ b/test/Modules/check-syntax.mm @@ -0,0 +1,5 @@ +// RUN: not %clang -fmodules -fno-cxx-modules -fsyntax-only %s 2>&1 | FileCheck %s +// rdar://19399671 + +// CHECK: use of '@import' when C++ modules are disabled +@import Foundation;