]> granicus.if.org Git - clang/commitdiff
Under -fmodules, accept #public <macroname> and #private <macroname>
authorDouglas Gregor <dgregor@apple.com>
Tue, 3 Jan 2012 18:24:14 +0000 (18:24 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 3 Jan 2012 18:24:14 +0000 (18:24 +0000)
to make a macro public (the default for headers) or private,
respectively.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147455 91177308-0d34-0410-b5e6-96231b3b80d8

18 files changed:
include/clang/Basic/TokenKinds.def
include/clang/Lex/Preprocessor.h
lib/Basic/IdentifierTable.cpp
lib/Lex/PPDirectives.cpp
lib/Parse/ParseObjc.cpp
test/Modules/Inputs/DependsOnModule.framework/Headers/DependsOnModule.h
test/Modules/Inputs/Module.framework/Frameworks/SubFramework.framework/Headers/SubFramework.h
test/Modules/Inputs/Module.framework/Headers/Module.h
test/Modules/Inputs/macros.h
test/Modules/decldef.mm
test/Modules/header-import.m
test/Modules/lookup.m
test/Modules/macros.c
test/Modules/objc-categories.m
test/Modules/on-demand-build-warnings.m
test/Modules/on-demand-build.m
test/Modules/on-demand-macros.m
test/Modules/redeclarations.m

index 103e0c93d3f11b9c1fc12a4fc987af7252179421..277ed84ed69a81a8cd07c455680a60332bb22c92 100644 (file)
@@ -90,8 +90,8 @@ PPKEYWORD(assert)
 PPKEYWORD(unassert)
 
 // Clang extensions
-PPKEYWORD(__export_macro__)
-PPKEYWORD(__private_macro__)
+PPKEYWORD(public)
+PPKEYWORD(private)
 
 //===----------------------------------------------------------------------===//
 // Language keywords.
index e8f9d6be080d788fe95fae034a888f9eca0064e2..53d5f400b358deb60ec97c83075b356bd9956dd2 100644 (file)
@@ -1197,7 +1197,7 @@ private:
   void HandleDigitDirective(Token &Tok);
   void HandleUserDiagnosticDirective(Token &Tok, bool isWarning);
   void HandleIdentSCCSDirective(Token &Tok);
-  void HandleMacroExportDirective(Token &Tok);
+  void HandleMacroPublicDirective(Token &Tok);
   void HandleMacroPrivateDirective(Token &Tok);
 
   // File inclusion.
index 690a1f5a84f3acf00eeedf1885383f934df3f8da..4368ff712c4ce6c267d0efef5193d7b509e104b0 100644 (file)
@@ -216,18 +216,17 @@ tok::PPKeywordKind IdentifierInfo::getPPKeywordID() const {
   CASE( 6, 'i', 'n', ifndef);
   CASE( 6, 'i', 'p', import);
   CASE( 6, 'p', 'a', pragma);
-
+  CASE( 6, 'p', 'b', public);
+      
   CASE( 7, 'd', 'f', defined);
   CASE( 7, 'i', 'c', include);
+  CASE( 7, 'p', 'i', private);
   CASE( 7, 'w', 'r', warning);
 
   CASE( 8, 'u', 'a', unassert);
   CASE(12, 'i', 'c', include_next);
 
   CASE(16, '_', 'i', __include_macros);
-  CASE(16, '_', 'e', __export_macro__);
-      
-  CASE(17, '_', 'p', __private_macro__);
 #undef CASE
 #undef HASH
   }
index 2dfae872e2f6cbc58c67a2429cb39492b0b1eef2..04d92b8a29111efc66c574705301fd1c7977acd7 100644 (file)
@@ -682,10 +682,15 @@ TryAgain:
       //isExtension = true;  // FIXME: implement #unassert
       break;
         
-    case tok::pp___export_macro__:
-      return HandleMacroExportDirective(Result);
-    case tok::pp___private_macro__:
-      return HandleMacroPrivateDirective(Result);
+    case tok::pp_public:
+      if (getLangOptions().Modules)
+        return HandleMacroPublicDirective(Result);
+      break;
+        
+    case tok::pp_private:
+      if (getLangOptions().Modules)
+        return HandleMacroPrivateDirective(Result);
+      break;
     }
     break;
   }
@@ -1038,8 +1043,8 @@ void Preprocessor::HandleIdentSCCSDirective(Token &Tok) {
   }
 }
 
-/// \brief Handle a #__export_macro__ directive.
-void Preprocessor::HandleMacroExportDirective(Token &Tok) {
+/// \brief Handle a #public directive.
+void Preprocessor::HandleMacroPublicDirective(Token &Tok) {
   Token MacroNameTok;
   ReadMacroName(MacroNameTok, 2);
   
@@ -1047,8 +1052,8 @@ void Preprocessor::HandleMacroExportDirective(Token &Tok) {
   if (MacroNameTok.is(tok::eod))
     return;
 
-  // Check to see if this is the last token on the #__export_macro__ line.
-  CheckEndOfDirective("__export_macro__");
+  // Check to see if this is the last token on the #public line.
+  CheckEndOfDirective("public");
 
   // Okay, we finally have a valid identifier to undef.
   MacroInfo *MI = getMacroInfo(MacroNameTok.getIdentifierInfo());
@@ -1069,7 +1074,7 @@ void Preprocessor::HandleMacroExportDirective(Token &Tok) {
     MI->setChangedAfterLoad();
 }
 
-/// \brief Handle a #__private_macro__ directive.
+/// \brief Handle a #private directive.
 void Preprocessor::HandleMacroPrivateDirective(Token &Tok) {
   Token MacroNameTok;
   ReadMacroName(MacroNameTok, 2);
@@ -1078,8 +1083,8 @@ void Preprocessor::HandleMacroPrivateDirective(Token &Tok) {
   if (MacroNameTok.is(tok::eod))
     return;
   
-  // Check to see if this is the last token on the #__private_macro__ line.
-  CheckEndOfDirective("__private_macro__");
+  // Check to see if this is the last token on the #private line.
+  CheckEndOfDirective("private");
   
   // Okay, we finally have a valid identifier to undef.
   MacroInfo *MI = getMacroInfo(MacroNameTok.getIdentifierInfo());
index a2994a3312c08d26a13b387f15330221ac635f42..3ecdae2978d5d5fe434fb688b3fe184bb2f48663 100644 (file)
@@ -67,7 +67,11 @@ Parser::DeclGroupPtrTy Parser::ParseObjCAtDirectives() {
     SingleDecl = ParseObjCPropertyDynamic(AtLoc);
     break;
   case tok::objc_import:
-    return ParseModuleImport(AtLoc);
+    if (getLang().Modules)
+      return ParseModuleImport(AtLoc);
+      
+    // Fall through
+      
   default:
     Diag(AtLoc, diag::err_unexpected_at);
     SkipUntil(tok::semi);
index 8ce3520a3cc704efc70e1bbdcc4b00b9fb935a78..d2a5174dfef73f886fb214968fbb82de6fe974b1 100644 (file)
@@ -1,5 +1,5 @@
 #include <Module/Module.h> //expected-warning{{treating #include as an import of module 'Module'}}
 
 #define DEPENDS_ON_MODULE 1
-#__private_macro__ DEPENDS_ON_MODULE
+#private DEPENDS_ON_MODULE
 
index a7b33f346e1659d857f138108bdd1e9bffbf5938..b13bcdd7663cac5e86f41c6fea64044df8b7cfb2 100644 (file)
@@ -1,5 +1,5 @@
 #ifndef MODULE_SUBFRAMEWORK_H
 #define MODULE_SUBFRAMEWORK_H
-#__private_macro__ MODULE_SUBFRAMEWORK_H
+#private MODULE_SUBFRAMEWORK_H
 char *module_subframework;
 #endif
index 3d10112e55475511d39bf12972e762e40f6735c0..832855f8de3008f78bd375903993991d2f2fc34f 100644 (file)
@@ -14,7 +14,7 @@ const char *getModuleVersion(void);
 @end
 
 #define MODULE_H_MACRO 1
-#__private_macro__ MODULE_H_MACRO
+#private MODULE_H_MACRO
 
 #include <Module/Sub.h>
 #include <Module/Buried/Treasure.h>
index 4be71aaaa0f4ee9eda8282f0fd1a4e6db39d7c72..ed1b46766fb3dcff2e0dc0850615143edddc240a 100644 (file)
@@ -3,8 +3,8 @@
 #define FLOAT float
 #define DOUBLE double
 
-#__export_macro__ INTEGER
-#__private_macro__ FLOAT
-#__private_macro__ MODULE
+#public INTEGER
+#private FLOAT
+#private MODULE
 
 int (INTEGER);
index 59361fb5f24efcf2505580e1dac00dbd8e57008d..c99fdea0d84ee0f646313beaa716f9a5660a4e9b 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -I %S/Inputs -fmodule-cache-path %t %s -verify
+// RUN: %clang_cc1 -fmodules -I %S/Inputs -fmodule-cache-path %t %s -verify
 
 
 // in other file: expected-note{{previous definition is here}}
index 610a20f5493ab3be761cce33b8575464b8fb79b2..960eecea22139bfb12af026924c8078027af70e3 100644 (file)
@@ -1,5 +1,5 @@
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodule-cache-path %t -F %S/Inputs -I %S/Inputs -verify %s
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -F %S/Inputs -I %S/Inputs -verify %s
 
 #import "point.h"
 @import Module;
index 6de7a115cd3cd06d2900fa4c4a39c0b72dd26985..7ca0c23a46529a3bdd29f1bfbbe122485dd88f49 100644 (file)
@@ -9,10 +9,10 @@ void test(id x) {
 }
 
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodule-cache-path %t -emit-module -x objective-c -fmodule-name=lookup_left_objc %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodule-cache-path %t -emit-module -x objective-c -fmodule-name=lookup_right_objc %S/Inputs/module.map
-// RUN: %clang_cc1 -x objective-c -fmodule-cache-path %t -verify %s
-// RUN: %clang_cc1 -ast-print -x objective-c -fmodule-cache-path %t %s | FileCheck -check-prefix=CHECK-PRINT %s
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -emit-module -x objective-c -fmodule-name=lookup_left_objc %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -emit-module -x objective-c -fmodule-name=lookup_right_objc %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -fmodule-cache-path %t -verify %s
+// RUN: %clang_cc1 -fmodules -ast-print -x objective-c -fmodule-cache-path %t %s | FileCheck -check-prefix=CHECK-PRINT %s
 
 // CHECK-PRINT: - (int) method;
 // CHECK-PRINT: - (double) method
index e7ab48d4ab9f306b942ebac82dd596f63d2de3f8..460c482ef9cfdd1947bb12ed301e0e61caca6e5a 100644 (file)
@@ -1,7 +1,7 @@
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -emit-module -fmodule-cache-path %t -fmodule-name=macros %S/Inputs/module.map
-// RUN: %clang_cc1 -verify -fmodule-cache-path %t %s
-// RUN: %clang_cc1 -E -fmodule-cache-path %t %s | FileCheck -check-prefix CHECK-PREPROCESSED %s
+// RUN: %clang_cc1 -fmodules -emit-module -fmodule-cache-path %t -fmodule-name=macros %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -verify -fmodule-cache-path %t %s
+// RUN: %clang_cc1 -E -fmodules -fmodule-cache-path %t %s | FileCheck -check-prefix CHECK-PREPROCESSED %s
 
 __import_module__ macros;
 
@@ -21,7 +21,7 @@ __import_module__ macros;
 double d;
 DOUBLE *dp = &d;
 
-#__export_macro__ WIBBLE // expected-error{{no macro named 'WIBBLE'}}
+#public WIBBLE // expected-error{{no macro named 'WIBBLE'}}
 
 void f() {
   // CHECK-PREPROCESSED: int i = INTEGER;
index f571523eb5174733dfd9ef32030acdaf9c5a5560..2bb07aadc4c0ba2e01b5c0002b121850f6496aa6 100644 (file)
@@ -1,9 +1,9 @@
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -fmodule-cache-path %t -x objective-c -fmodule-name=category_top -emit-module %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodule-cache-path %t -x objective-c -fmodule-name=category_left -emit-module %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodule-cache-path %t -x objective-c -fmodule-name=category_right -emit-module %S/Inputs/module.map
-// 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
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -x objective-c -fmodule-name=category_top -emit-module %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -x objective-c -fmodule-name=category_left -emit-module %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -x objective-c -fmodule-name=category_right -emit-module %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -x objective-c -fmodule-name=category_bottom -emit-module %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t %s -verify
 
 @import category_bottom;
 
index 1918689afba7d17d8d5542a542187a149335fb9d..7116f01d381ba50536dfebc867b94aad285bb8f5 100644 (file)
@@ -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
+// RUN: %clang_cc1 -fmodules -fno-objc-infer-related-result-type -Wmodule-build -fmodule-cache-path %t -F %S/Inputs -verify %s
 
 @import Module; // expected-warning{{building module 'Module' from source}}
 
index fbd91b1405c095690bd378db0e89b41c6a351e5b..7b4a2ea1df0febccc5f9c5acc43022e8f957c22a 100644 (file)
@@ -1,7 +1,7 @@
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -fmodule-cache-path %t -F %S/Inputs -verify %s
-// 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
+// RUN: %clang_cc1 -fmodules -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -fmodule-cache-path %t -F %S/Inputs -verify %s
+// RUN: %clang_cc1 -fmodules -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 -fmodules -fno-objc-infer-related-result-type -Werror -Wno-error=incomplete-umbrella -fmodule-cache-path %t -F %S/Inputs -verify %s
 #define FOO
 @import Module;
 @interface OtherClass
index 2b267f15a0e0cbedef3ffd3b2b2829a363db0012..a48ac88c1786da56e15cd58fcaa20c57ff0137ec 100644 (file)
@@ -1,6 +1,6 @@
 // RUN: rm -rf %t
-// 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
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -F %S/Inputs -DFOO_RETURNS_INT_PTR -verify %s
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t -F %S/Inputs -verify %s
 
 @import CmdLine;
 
index bb85f05dfd6432d4b4f9ba1ecb134b639ceb6113..d71e9e8600b05364dad0ce9983563bef9c493f2a 100644 (file)
@@ -5,7 +5,7 @@
 @end
 
 // RUN: rm -rf %t
-// RUN: %clang_cc1 -x objective-c -fmodule-cache-path %t -emit-module -fmodule-name=redeclarations_left %S/Inputs/module.map
-// RUN: %clang_cc1 -x objective-c -fmodule-cache-path %t -emit-module -fmodule-name=redeclarations_right %S/Inputs/module.map
-// RUN: %clang_cc1 -fmodule-cache-path %t %s -verify
+// RUN: %clang_cc1 -fmodules -x objective-c -fmodule-cache-path %t -emit-module -fmodule-name=redeclarations_left %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -x objective-c -fmodule-cache-path %t -emit-module -fmodule-name=redeclarations_right %S/Inputs/module.map
+// RUN: %clang_cc1 -fmodules -fmodule-cache-path %t %s -verify