summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/include/clang/AST/Decl.h10
-rw-r--r--clang/include/clang/Basic/DiagnosticParseKinds.td2
-rw-r--r--clang/include/clang/Basic/IdentifierTable.h3
-rw-r--r--clang/include/clang/Basic/TokenKinds.def1
-rw-r--r--clang/include/clang/Lex/Preprocessor.h4
-rw-r--r--clang/include/clang/Parse/Parser.h2
-rw-r--r--clang/include/clang/Sema/Sema.h8
-rw-r--r--clang/lib/AST/Decl.cpp16
-rw-r--r--clang/lib/AST/DeclPrinter.cpp2
-rw-r--r--clang/lib/Lex/Preprocessor.cpp16
-rw-r--r--clang/lib/Parse/ParseObjc.cpp2
-rw-r--r--clang/lib/Parse/Parser.cpp9
-rw-r--r--clang/lib/Sema/SemaDecl.cpp8
-rw-r--r--clang/test/Modules/Inputs/category_bottom.h4
-rw-r--r--clang/test/Modules/Inputs/category_left.h2
-rw-r--r--clang/test/Modules/Inputs/category_right.h2
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-bottom.h4
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-left-left.h2
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-left.h2
-rw-r--r--clang/test/Modules/Inputs/redecl-merge-right.h4
-rw-r--r--clang/test/Modules/decldef.mm4
-rw-r--r--clang/test/Modules/header-import.m2
-rw-r--r--clang/test/Modules/inferred-submodules.m4
-rw-r--r--clang/test/Modules/lookup.m4
-rw-r--r--clang/test/Modules/objc-categories.m2
-rw-r--r--clang/test/Modules/on-demand-build-warnings.m2
-rw-r--r--clang/test/Modules/on-demand-build.m2
-rw-r--r--clang/test/Modules/on-demand-macros.m2
-rw-r--r--clang/test/Modules/redecl-merge.m8
-rw-r--r--clang/test/Modules/redeclarations.m4
-rw-r--r--clang/test/Modules/requires.m2
-rw-r--r--clang/test/Modules/subframeworks.m6
-rw-r--r--clang/test/Modules/submodules.m2
33 files changed, 82 insertions, 65 deletions
diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h
index c39456d96eb..3cc94ed0798 100644
--- a/clang/include/clang/AST/Decl.h
+++ b/clang/include/clang/AST/Decl.h
@@ -3058,7 +3058,7 @@ public:
///
/// An import declaration imports the named module (or submodule). For example:
/// \code
-/// __import_module__ std.vector;
+/// @import std.vector;
/// \endcode
///
/// Import declarations can also be implicitly generated from #include/#import
@@ -3080,10 +3080,10 @@ class ImportDecl : public Decl {
friend class ASTDeclReader;
friend class ASTContext;
- ImportDecl(DeclContext *DC, SourceLocation ImportLoc, Module *Imported,
+ ImportDecl(DeclContext *DC, SourceLocation StartLoc, Module *Imported,
ArrayRef<SourceLocation> IdentifierLocs);
- ImportDecl(DeclContext *DC, SourceLocation ImportLoc, Module *Imported,
+ ImportDecl(DeclContext *DC, SourceLocation StartLoc, Module *Imported,
SourceLocation EndLoc);
ImportDecl(EmptyShell Empty) : Decl(Import, Empty), NextLocalImport() { }
@@ -3091,13 +3091,13 @@ class ImportDecl : public Decl {
public:
/// \brief Create a new module import declaration.
static ImportDecl *Create(ASTContext &C, DeclContext *DC,
- SourceLocation ImportLoc, Module *Imported,
+ SourceLocation StartLoc, Module *Imported,
ArrayRef<SourceLocation> IdentifierLocs);
/// \brief Create a new module import declaration for an implicitly-generated
/// import.
static ImportDecl *CreateImplicit(ASTContext &C, DeclContext *DC,
- SourceLocation ImportLoc, Module *Imported,
+ SourceLocation StartLoc, Module *Imported,
SourceLocation EndLoc);
/// \brief Create a new module import declaration.
diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td
index c609cc44576..90d4721603f 100644
--- a/clang/include/clang/Basic/DiagnosticParseKinds.td
+++ b/clang/include/clang/Basic/DiagnosticParseKinds.td
@@ -689,7 +689,7 @@ def err_seh___finally_block : Error<
let CategoryName = "Modules Issue" in {
def err_module_expected_ident : Error<
- "expected a module name after '__import_module__'">;
+ "expected a module name after module import">;
def err_module_expected_semi : Error<
"expected a semicolon name after module name">;
}
diff --git a/clang/include/clang/Basic/IdentifierTable.h b/clang/include/clang/Basic/IdentifierTable.h
index d7d0ded0200..a5eea3281f1 100644
--- a/clang/include/clang/Basic/IdentifierTable.h
+++ b/clang/include/clang/Basic/IdentifierTable.h
@@ -295,7 +295,8 @@ private:
NeedsHandleIdentifier =
(isPoisoned() | hasMacroDefinition() | isCPlusPlusOperatorKeyword() |
isExtensionToken() | isCXX11CompatKeyword() || isOutOfDate() ||
- (getTokenID() == tok::kw___import_module__));
+ (getTokenID() == tok::kw___import_module__) ||
+ (getObjCKeywordID() == tok::objc_import));
}
};
diff --git a/clang/include/clang/Basic/TokenKinds.def b/clang/include/clang/Basic/TokenKinds.def
index bb905a4ae85..103e0c93d3f 100644
--- a/clang/include/clang/Basic/TokenKinds.def
+++ b/clang/include/clang/Basic/TokenKinds.def
@@ -548,6 +548,7 @@ OBJC2_AT_KEYWORD(required)
OBJC2_AT_KEYWORD(optional)
OBJC2_AT_KEYWORD(synthesize)
OBJC2_AT_KEYWORD(dynamic)
+OBJC2_AT_KEYWORD(import)
// TODO: What to do about context-sensitive keywords like:
// bycopy/byref/in/inout/oneway/out?
diff --git a/clang/include/clang/Lex/Preprocessor.h b/clang/include/clang/Lex/Preprocessor.h
index 1716ba3b9ec..e8f9d6be080 100644
--- a/clang/include/clang/Lex/Preprocessor.h
+++ b/clang/include/clang/Lex/Preprocessor.h
@@ -162,8 +162,8 @@ class Preprocessor : public llvm::RefCountedBase<Preprocessor> {
/// for preprocessing.
SourceLocation CodeCompletionFileLoc;
- /// \brief The source location of the __import_module__ keyword we just
- /// lexed, if any.
+ /// \brief The source location of the __import_module__ or 'import' keyword we
+ /// just lexed, if any.
SourceLocation ModuleImportLoc;
/// \brief The module import path that we're currently processing.
diff --git a/clang/include/clang/Parse/Parser.h b/clang/include/clang/Parse/Parser.h
index 7b6042ecf77..fca56a8eb8d 100644
--- a/clang/include/clang/Parse/Parser.h
+++ b/clang/include/clang/Parse/Parser.h
@@ -2127,7 +2127,7 @@ private:
//===--------------------------------------------------------------------===//
// Modules
- DeclGroupPtrTy ParseModuleImport();
+ DeclGroupPtrTy ParseModuleImport(SourceLocation AtLoc);
//===--------------------------------------------------------------------===//
// GNU G++: Type Traits [Type-Traits.html in the GCC manual]
diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h
index 947e3fb3743..2b7c6a78e7f 100644
--- a/clang/include/clang/Sema/Sema.h
+++ b/clang/include/clang/Sema/Sema.h
@@ -1120,10 +1120,14 @@ public:
/// \brief The parser has processed a module import declaration.
///
- /// \param ImportLoc The location of the '__import_module__' keyword.
+ /// \param AtLoc The location of the '@' symbol, if present.
+ ///
+ /// \param ImportLoc The location of the '__import_module__' or 'import'
+ /// keyword.
///
/// \param Path The module access path.
- DeclResult ActOnModuleImport(SourceLocation ImportLoc, ModuleIdPath Path);
+ DeclResult ActOnModuleImport(SourceLocation AtLoc, SourceLocation ImportLoc,
+ ModuleIdPath Path);
/// \brief Retrieve a suitable printing policy.
PrintingPolicy getPrintingPolicy() const;
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index c1ed43709e2..31a9b3b2929 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -2755,10 +2755,10 @@ static unsigned getNumModuleIdentifiers(Module *Mod) {
return Result;
}
-ImportDecl::ImportDecl(DeclContext *DC, SourceLocation ImportLoc,
+ImportDecl::ImportDecl(DeclContext *DC, SourceLocation StartLoc,
Module *Imported,
ArrayRef<SourceLocation> IdentifierLocs)
- : Decl(Import, DC, ImportLoc), ImportedAndComplete(Imported, true),
+ : Decl(Import, DC, StartLoc), ImportedAndComplete(Imported, true),
NextLocalImport()
{
assert(getNumModuleIdentifiers(Imported) == IdentifierLocs.size());
@@ -2767,28 +2767,28 @@ ImportDecl::ImportDecl(DeclContext *DC, SourceLocation ImportLoc,
IdentifierLocs.size() * sizeof(SourceLocation));
}
-ImportDecl::ImportDecl(DeclContext *DC, SourceLocation ImportLoc,
+ImportDecl::ImportDecl(DeclContext *DC, SourceLocation StartLoc,
Module *Imported, SourceLocation EndLoc)
- : Decl(Import, DC, ImportLoc), ImportedAndComplete(Imported, false),
+ : Decl(Import, DC, StartLoc), ImportedAndComplete(Imported, false),
NextLocalImport()
{
*reinterpret_cast<SourceLocation *>(this + 1) = EndLoc;
}
ImportDecl *ImportDecl::Create(ASTContext &C, DeclContext *DC,
- SourceLocation ImportLoc, Module *Imported,
+ SourceLocation StartLoc, Module *Imported,
ArrayRef<SourceLocation> IdentifierLocs) {
void *Mem = C.Allocate(sizeof(ImportDecl) +
IdentifierLocs.size() * sizeof(SourceLocation));
- return new (Mem) ImportDecl(DC, ImportLoc, Imported, IdentifierLocs);
+ return new (Mem) ImportDecl(DC, StartLoc, Imported, IdentifierLocs);
}
ImportDecl *ImportDecl::CreateImplicit(ASTContext &C, DeclContext *DC,
- SourceLocation ImportLoc,
+ SourceLocation StartLoc,
Module *Imported,
SourceLocation EndLoc) {
void *Mem = C.Allocate(sizeof(ImportDecl) + sizeof(SourceLocation));
- ImportDecl *Import = new (Mem) ImportDecl(DC, ImportLoc, Imported, EndLoc);
+ ImportDecl *Import = new (Mem) ImportDecl(DC, StartLoc, Imported, EndLoc);
Import->setImplicit();
return Import;
}
diff --git a/clang/lib/AST/DeclPrinter.cpp b/clang/lib/AST/DeclPrinter.cpp
index 73dac3b73e3..33ddd5af41f 100644
--- a/clang/lib/AST/DeclPrinter.cpp
+++ b/clang/lib/AST/DeclPrinter.cpp
@@ -647,7 +647,7 @@ void DeclPrinter::VisitFileScopeAsmDecl(FileScopeAsmDecl *D) {
}
void DeclPrinter::VisitImportDecl(ImportDecl *D) {
- Out << "__import_module__ " << D->getImportedModule()->getFullModuleName()
+ Out << "@import " << D->getImportedModule()->getFullModuleName()
<< ";\n";
}
diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp
index 08d8b920d17..8722be93d35 100644
--- a/clang/lib/Lex/Preprocessor.cpp
+++ b/clang/lib/Lex/Preprocessor.cpp
@@ -548,9 +548,10 @@ void Preprocessor::HandleIdentifier(Token &Identifier) {
if (II.isExtensionToken() && !DisableMacroExpansion)
Diag(Identifier, diag::ext_token_used);
- // If this is the '__import_module__' keyword, note that the next token
- // indicates a module name.
- if (II.getTokenID() == tok::kw___import_module__ &&
+ // If this is the '__import_module__' or 'import' keyword, note that the next
+ // token indicates a module name.
+ if ((II.getTokenID() == tok::kw___import_module__ ||
+ II.getObjCKeywordID() == tok::objc_import) &&
!InMacroArgs && !DisableMacroExpansion) {
ModuleImportLoc = Identifier.getLocation();
ModuleImportPath.clear();
@@ -559,7 +560,8 @@ void Preprocessor::HandleIdentifier(Token &Identifier) {
}
}
-/// \brief Lex a token following the __import_module__ keyword.
+/// \brief Lex a token following the __import_module__ or 'import' keyword.
+///
void Preprocessor::LexAfterModuleImport(Token &Result) {
// Figure out what kind of lexer we actually have.
if (CurLexer)
@@ -578,8 +580,12 @@ void Preprocessor::LexAfterModuleImport(Token &Result) {
//
// __import_module__ identifier (. identifier)*
//
+ // or
+ //
+ // import identifier (. identifier)*
+ //
// indicates a module import directive. We already saw the __import_module__
- // keyword, so now we're looking for the identifiers.
+ // or 'import' keyword, so now we're looking for the identifiers.
if (ModuleImportExpectsIdentifier && Result.getKind() == tok::identifier) {
// We expected to see an identifier here, and we did; continue handling
// identifiers.
diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp
index 8260d188a34..a2994a3312c 100644
--- a/clang/lib/Parse/ParseObjc.cpp
+++ b/clang/lib/Parse/ParseObjc.cpp
@@ -66,6 +66,8 @@ Parser::DeclGroupPtrTy Parser::ParseObjCAtDirectives() {
case tok::objc_dynamic:
SingleDecl = ParseObjCPropertyDynamic(AtLoc);
break;
+ case tok::objc_import:
+ return ParseModuleImport(AtLoc);
default:
Diag(AtLoc, diag::err_unexpected_at);
SkipUntil(tok::semi);
diff --git a/clang/lib/Parse/Parser.cpp b/clang/lib/Parse/Parser.cpp
index 6914b8e018a..b96ff388dbc 100644
--- a/clang/lib/Parse/Parser.cpp
+++ b/clang/lib/Parse/Parser.cpp
@@ -668,7 +668,7 @@ Parser::ParseExternalDeclaration(ParsedAttributesWithRange &attrs,
return DeclGroupPtrTy();
case tok::kw___import_module__:
- return ParseModuleImport();
+ return ParseModuleImport(SourceLocation());
default:
dont_know:
@@ -1569,8 +1569,9 @@ void Parser::ParseMicrosoftIfExistsExternalDeclaration() {
Braces.consumeClose();
}
-Parser::DeclGroupPtrTy Parser::ParseModuleImport() {
- assert(Tok.is(tok::kw___import_module__) &&
+Parser::DeclGroupPtrTy Parser::ParseModuleImport(SourceLocation AtLoc) {
+ assert((Tok.is(tok::kw___import_module__) ||
+ Tok.isObjCAtKeyword(tok::objc_import)) &&
"Improper start to module import");
SourceLocation ImportLoc = ConsumeToken();
@@ -1596,7 +1597,7 @@ Parser::DeclGroupPtrTy Parser::ParseModuleImport() {
break;
} while (true);
- DeclResult Import = Actions.ActOnModuleImport(ImportLoc, Path);
+ DeclResult Import = Actions.ActOnModuleImport(AtLoc, ImportLoc, Path);
ExpectAndConsumeSemi(diag::err_module_expected_semi);
if (Import.isInvalid())
return DeclGroupPtrTy();
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index a1ccf946d6a..9583ab6327f 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -9896,7 +9896,9 @@ Decl *Sema::ActOnFileScopeAsmDecl(Expr *expr,
return New;
}
-DeclResult Sema::ActOnModuleImport(SourceLocation ImportLoc, ModuleIdPath Path) {
+DeclResult Sema::ActOnModuleImport(SourceLocation AtLoc,
+ SourceLocation ImportLoc,
+ ModuleIdPath Path) {
Module *Mod = PP.getModuleLoader().loadModule(ImportLoc, Path,
Module::AllVisible,
/*IsIncludeDirective=*/false);
@@ -9917,8 +9919,8 @@ DeclResult Sema::ActOnModuleImport(SourceLocation ImportLoc, ModuleIdPath Path)
ImportDecl *Import = ImportDecl::Create(Context,
Context.getTranslationUnitDecl(),
- ImportLoc, Mod,
- IdentifierLocs);
+ AtLoc.isValid()? AtLoc : ImportLoc,
+ Mod, IdentifierLocs);
Context.getTranslationUnitDecl()->addDecl(Import);
return Import;
}
diff --git a/clang/test/Modules/Inputs/category_bottom.h b/clang/test/Modules/Inputs/category_bottom.h
index 20f7813de60..ab4c01c3149 100644
--- a/clang/test/Modules/Inputs/category_bottom.h
+++ b/clang/test/Modules/Inputs/category_bottom.h
@@ -1,10 +1,10 @@
-__import_module__ category_left;
+@import category_left;
@interface Foo(Bottom)
-(void)bottom;
@end
-__import_module__ category_right;
+@import category_right;
@interface LeftFoo(Bottom)
-(void)bottom;
diff --git a/clang/test/Modules/Inputs/category_left.h b/clang/test/Modules/Inputs/category_left.h
index d388a032ec0..05e2a1b96c5 100644
--- a/clang/test/Modules/Inputs/category_left.h
+++ b/clang/test/Modules/Inputs/category_left.h
@@ -1,4 +1,4 @@
-__import_module__ category_top;
+@import category_top;
@interface Foo(Left)
-(void)left;
diff --git a/clang/test/Modules/Inputs/category_right.h b/clang/test/Modules/Inputs/category_right.h
index a1a1377653e..48d4f6cd0a8 100644
--- a/clang/test/Modules/Inputs/category_right.h
+++ b/clang/test/Modules/Inputs/category_right.h
@@ -1,4 +1,4 @@
-__import_module__ category_top;
+@import category_top;
@interface Foo(Right1)
-(void)right1;
diff --git a/clang/test/Modules/Inputs/redecl-merge-bottom.h b/clang/test/Modules/Inputs/redecl-merge-bottom.h
index 26a1ba5ab17..a054cd20596 100644
--- a/clang/test/Modules/Inputs/redecl-merge-bottom.h
+++ b/clang/test/Modules/Inputs/redecl-merge-bottom.h
@@ -1,11 +1,11 @@
-__import_module__ redecl_merge_left;
+@import redecl_merge_left;
@class C4;
@class C4;
@protocol P4;
@protocol P4;
@protocol P4;
-__import_module__ redecl_merge_right;
+@import redecl_merge_right;
@class B;
diff --git a/clang/test/Modules/Inputs/redecl-merge-left-left.h b/clang/test/Modules/Inputs/redecl-merge-left-left.h
index 0d7fd6a5145..612608159b2 100644
--- a/clang/test/Modules/Inputs/redecl-merge-left-left.h
+++ b/clang/test/Modules/Inputs/redecl-merge-left-left.h
@@ -1,4 +1,4 @@
-__import_module__ redecl_merge_left;
+@import redecl_merge_left;
@class C4;
void accept_a_C4(C4*);
diff --git a/clang/test/Modules/Inputs/redecl-merge-left.h b/clang/test/Modules/Inputs/redecl-merge-left.h
index 4ea1e70e8e6..82146f7ed50 100644
--- a/clang/test/Modules/Inputs/redecl-merge-left.h
+++ b/clang/test/Modules/Inputs/redecl-merge-left.h
@@ -1,4 +1,4 @@
-__import_module__ redecl_merge_top;
+@import redecl_merge_top;
@class A;
diff --git a/clang/test/Modules/Inputs/redecl-merge-right.h b/clang/test/Modules/Inputs/redecl-merge-right.h
index 82051d46f93..b6dfe2f53c9 100644
--- a/clang/test/Modules/Inputs/redecl-merge-right.h
+++ b/clang/test/Modules/Inputs/redecl-merge-right.h
@@ -1,4 +1,4 @@
-__import_module__ redecl_merge_top;
+@import redecl_merge_top;
@interface Super
@end
@@ -55,5 +55,5 @@ public:
#endif
int ONE;
-__import_module__ redecl_merge_top.Explicit;
+@import redecl_merge_top.Explicit;
const int one = ONE;
diff --git a/clang/test/Modules/decldef.mm b/clang/test/Modules/decldef.mm
index 07499b31f7e..59361fb5f24 100644
--- a/clang/test/Modules/decldef.mm
+++ b/clang/test/Modules/decldef.mm
@@ -10,10 +10,10 @@
// in other file: expected-note{{previous definition is here}}
-__import_module__ decldef;
+@import decldef;
A *a1; // expected-error{{unknown type name 'A'}}
B *b1; // expected-error{{unknown type name 'B'}}
-__import_module__ decldef.Decl;
+@import decldef.Decl;
A *a2;
B *b;
diff --git a/clang/test/Modules/header-import.m b/clang/test/Modules/header-import.m
index 9996dc75c8b..610a20f5493 100644
--- a/clang/test/Modules/header-import.m
+++ b/clang/test/Modules/header-import.m
@@ -2,6 +2,6 @@
// RUN: %clang_cc1 -fmodule-cache-path %t -F %S/Inputs -I %S/Inputs -verify %s
#import "point.h"
-__import_module__ Module;
+@import Module;
#import "point.h"
diff --git a/clang/test/Modules/inferred-submodules.m b/clang/test/Modules/inferred-submodules.m
index 5fe83d2a584..aeb4aa467c2 100644
--- a/clang/test/Modules/inferred-submodules.m
+++ b/clang/test/Modules/inferred-submodules.m
@@ -1,13 +1,13 @@
// RUN: rm -rf %t
// RUN: %clang_cc1 -x objective-c -Wauto-import -fmodule-cache-path %t -fmodules -F %S/Inputs %s -verify
-__import_module__ Module.Sub;
+@import Module.Sub;
void test_Module_Sub() {
int *ip = Module_Sub;
}
-__import_module__ Module.Buried.Treasure;
+@import Module.Buried.Treasure;
void dig() {
unsigned *up = Buried_Treasure;
diff --git a/clang/test/Modules/lookup.m b/clang/test/Modules/lookup.m
index 29713fd769e..6de7a115cd3 100644
--- a/clang/test/Modules/lookup.m
+++ b/clang/test/Modules/lookup.m
@@ -1,8 +1,8 @@
// lookup_left.h: expected-note{{using}}
// lookup_right.h: expected-note{{also found}}
-__import_module__ lookup_left_objc;
-__import_module__ lookup_right_objc;
+@import lookup_left_objc;
+@import lookup_right_objc;
void test(id x) {
[x method]; // expected-warning{{multiple methods named 'method' found}}
diff --git a/clang/test/Modules/objc-categories.m b/clang/test/Modules/objc-categories.m
index 70a6bf8dd1d..f571523eb51 100644
--- a/clang/test/Modules/objc-categories.m
+++ b/clang/test/Modules/objc-categories.m
@@ -5,7 +5,7 @@
// RUN: %clang_cc1 -fmodule-cache-path %t -x objective-c -fmodule-name=category_bottom -emit-module %S/Inputs/module.map
// RUN: %clang_cc1 -fmodule-cache-path %t %s -verify
-__import_module__ category_bottom;
+@import category_bottom;
// in category_left.h: expected-note {{previous definition}}
diff --git a/clang/test/Modules/on-demand-build-warnings.m b/clang/test/Modules/on-demand-build-warnings.m
index aa122dbd855..1918689afba 100644
--- a/clang/test/Modules/on-demand-build-warnings.m
+++ b/clang/test/Modules/on-demand-build-warnings.m
@@ -1,5 +1,5 @@
// RUN: rm -rf %t
// RUN: %clang_cc1 -fno-objc-infer-related-result-type -Wmodule-build -fmodule-cache-path %t -F %S/Inputs -verify %s
-__import_module__ Module; // expected-warning{{building module 'Module' from source}}
+@import Module; // expected-warning{{building module 'Module' from source}}
diff --git a/clang/test/Modules/on-demand-build.m b/clang/test/Modules/on-demand-build.m
index 644519b9728..fbd91b1405c 100644
--- a/clang/test/Modules/on-demand-build.m
+++ b/clang/test/Modules/on-demand-build.m
@@ -3,7 +3,7 @@
// RUN: %clang_cc1 -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -x objective-c++ -fmodule-cache-path %t -F %S/Inputs -verify %s
// RUN: %clang_cc1 -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -fmodule-cache-path %t -F %S/Inputs -verify %s
#define FOO
-__import_module__ Module;
+@import Module;
@interface OtherClass
@end
diff --git a/clang/test/Modules/on-demand-macros.m b/clang/test/Modules/on-demand-macros.m
index 96abb2331f1..2b267f15a0e 100644
--- a/clang/test/Modules/on-demand-macros.m
+++ b/clang/test/Modules/on-demand-macros.m
@@ -2,7 +2,7 @@
// RUN: %clang_cc1 -fmodule-cache-path %t -F %S/Inputs -DFOO_RETURNS_INT_PTR -verify %s
// RUN: %clang_cc1 -fmodule-cache-path %t -F %S/Inputs -verify %s
-__import_module__ CmdLine;
+@import CmdLine;
void test() {
#ifdef FOO_RETURNS_INT_PTR
diff --git a/clang/test/Modules/redecl-merge.m b/clang/test/Modules/redecl-merge.m
index ab264d1c5b0..dfbc25fe9e7 100644
--- a/clang/test/Modules/redecl-merge.m
+++ b/clang/test/Modules/redecl-merge.m
@@ -4,12 +4,12 @@
@class C2;
@class C3;
@class C3;
-__import_module__ redecl_merge_left;
+@import redecl_merge_left;
@protocol P4;
@class C3;
@class C3;
-__import_module__ redecl_merge_right;
+@import redecl_merge_right;
@implementation A
- (Super*)init { return self; }
@@ -62,14 +62,14 @@ void test_C3(C3 *c3) {
}
C4 *global_C4;
-__import_module__ redecl_merge_left_left;
+@import redecl_merge_left_left;
void test_C4a(C4 *c4) {
global_C4 = c4 = get_a_C4();
accept_a_C4(c4);
}
-__import_module__ redecl_merge_bottom;
+@import redecl_merge_bottom;
void test_C4b() {
if (&refers_to_C4) {
diff --git a/clang/test/Modules/redeclarations.m b/clang/test/Modules/redeclarations.m
index c00ca11f508..bb85f05dfd6 100644
--- a/clang/test/Modules/redeclarations.m
+++ b/clang/test/Modules/redeclarations.m
@@ -1,5 +1,5 @@
-__import_module__ redeclarations_left;
-__import_module__ redeclarations_right;
+@import redeclarations_left;
+@import redeclarations_right;
@interface MyObject : NSObject
@end
diff --git a/clang/test/Modules/requires.m b/clang/test/Modules/requires.m
index d08db647400..70d6160b0f3 100644
--- a/clang/test/Modules/requires.m
+++ b/clang/test/Modules/requires.m
@@ -1,5 +1,5 @@
// RUN: rm -rf %t
// RUN: %clang_cc1 -Wauto-import -fmodule-cache-path %t -fmodules -F %S/Inputs %s -verify
-__import_module__ DependsOnModule.CXX; // expected-error{{module 'DependsOnModule.CXX' requires feature 'cplusplus'}}
+@import DependsOnModule.CXX; // expected-error{{module 'DependsOnModule.CXX' requires feature 'cplusplus'}}
diff --git a/clang/test/Modules/subframeworks.m b/clang/test/Modules/subframeworks.m
index 13c8bc07ab9..82c4a4bbf27 100644
--- a/clang/test/Modules/subframeworks.m
+++ b/clang/test/Modules/subframeworks.m
@@ -2,13 +2,13 @@
// RUN: %clang_cc1 -Wauto-import -fmodule-cache-path %t -fmodules -F %S/Inputs %s -verify
// RUN: %clang_cc1 -x objective-c++ -Wauto-import -fmodule-cache-path %t -fmodules -F %S/Inputs %s -verify
-__import_module__ DependsOnModule;
+@import DependsOnModule;
void testSubFramework() {
float *sf1 = sub_framework; // expected-error{{use of undeclared identifier 'sub_framework'}}
}
-__import_module__ DependsOnModule.SubFramework;
+@import DependsOnModule.SubFramework;
void testSubFrameworkAgain() {
float *sf2 = sub_framework;
@@ -16,7 +16,7 @@ void testSubFrameworkAgain() {
}
#ifdef __cplusplus
-__import_module__ DependsOnModule.CXX;
+@import DependsOnModule.CXX;
CXXOnly cxxonly;
#endif
diff --git a/clang/test/Modules/submodules.m b/clang/test/Modules/submodules.m
index bbcd18c6420..908a4785e8e 100644
--- a/clang/test/Modules/submodules.m
+++ b/clang/test/Modules/submodules.m
@@ -3,7 +3,7 @@
// RUN: %clang_cc1 -Wauto-import -fmodule-cache-path %t -fmodules -F %S/Inputs %s -verify
// Note: transitively imports Module.Sub2.
-__import_module__ Module.Sub;
+@import Module.Sub;
int getValue() {
return *Module_Sub + *Module_Sub2;
OpenPOWER on IntegriCloud