Skip to content

Commit 915ade4

Browse files
quote all the arguments to the clang-macro macros
1 parent f1244ac commit 915ade4

File tree

3 files changed

+84
-92
lines changed

3 files changed

+84
-92
lines changed

include/swift/PrintAsClang/ClangMacros.def

Lines changed: 74 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -72,60 +72,54 @@
7272
#define CLANG_MACRO_CXX_BODY(NAME, BODY)
7373
#endif
7474

75-
CLANG_MACRO_BODY(SWIFT_PASTE, \
75+
CLANG_MACRO_BODY("SWIFT_PASTE", \
7676
"# define SWIFT_PASTE_HELPER(x, y) x##y\n" \
7777
"# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)")
78-
CLANG_MACRO_DEFINED(SWIFT_PASTE_HELPER)
79-
80-
CLANG_MACRO(SWIFT_METATYPE, (X), Class)
81-
82-
CLANG_MACRO_CONDITIONAL(SWIFT_CLASS_PROPERTY, \
83-
(...), \
84-
__has_feature(objc_class_property), \
85-
__VA_ARGS__)
86-
87-
CLANG_MACRO_CONDITIONAL(SWIFT_RUNTIME_NAME, \
88-
(X), \
89-
__has_attribute(objc_runtime_name), \
90-
__attribute__((objc_runtime_name(X))))
91-
92-
CLANG_MACRO_CONDITIONAL(SWIFT_COMPILE_NAME, \
93-
(X), \
94-
__has_attribute(swift_name), \
95-
__attribute__((swift_name(X))))
96-
97-
CLANG_MACRO_CONDITIONAL(SWIFT_METHOD_FAMILY, \
98-
(X), \
99-
__has_attribute(objc_method_family),
100-
__attribute__((objc_method_family(X))))
101-
102-
CLANG_MACRO_CONDITIONAL(SWIFT_NOESCAPE, , \
103-
__has_attribute(noescape), \
104-
__attribute__((noescape)))
105-
106-
CLANG_MACRO_CONDITIONAL(SWIFT_RELEASES_ARGUMENT, , \
107-
__has_attribute(ns_consumed), \
108-
__attribute__((ns_consumed)))
109-
110-
CLANG_MACRO_CONDITIONAL(SWIFT_WARN_UNUSED_RESULT, , \
111-
__has_attribute(warn_unused_result), \
112-
__attribute__((warn_unused_result)))
113-
114-
// While this would ordinarily work with CLANG_MACRO_CONDITIONAL, this name is
115-
// defined in the compiler source itself, and is expanded by the time the macro
116-
// is printed into the resulting header
117-
CLANG_MACRO_BODY(SWIFT_NORETURN, \
118-
"# if __has_attribute(noreturn)\n" \
119-
"# define SWIFT_NORETURN __attribute((noreturn))\n" \
120-
"# else\n" \
121-
"# define SWIFT_NORETURN\n" \
122-
"# endif")
78+
CLANG_MACRO_DEFINED("SWIFT_PASTE_HELPER")
79+
80+
CLANG_MACRO("SWIFT_METATYPE", "(X)", "Class")
81+
82+
CLANG_MACRO_CONDITIONAL("SWIFT_CLASS_PROPERTY", \
83+
"(...)", \
84+
"__has_feature(objc_class_property)", \
85+
"__VA_ARGS__")
86+
87+
CLANG_MACRO_CONDITIONAL("SWIFT_RUNTIME_NAME", \
88+
"(X)", \
89+
"__has_attribute(objc_runtime_name)", \
90+
"__attribute__((objc_runtime_name(X)))")
91+
92+
CLANG_MACRO_CONDITIONAL("SWIFT_COMPILE_NAME", \
93+
"(X)", \
94+
"__has_attribute(swift_name)", \
95+
"__attribute__((swift_name(X)))")
96+
97+
CLANG_MACRO_CONDITIONAL("SWIFT_METHOD_FAMILY", \
98+
"(X)", \
99+
"__has_attribute(objc_method_family)",
100+
"__attribute__((objc_method_family(X)))")
101+
102+
CLANG_MACRO_CONDITIONAL("SWIFT_NOESCAPE", , \
103+
"__has_attribute(noescape)", \
104+
"__attribute__((noescape))")
105+
106+
CLANG_MACRO_CONDITIONAL("SWIFT_RELEASES_ARGUMENT", , \
107+
"__has_attribute(ns_consumed)", \
108+
"__attribute__((ns_consumed))")
109+
110+
CLANG_MACRO_CONDITIONAL("SWIFT_WARN_UNUSED_RESULT", , \
111+
"__has_attribute(warn_unused_result)", \
112+
"__attribute__((warn_unused_result))")
113+
114+
CLANG_MACRO_CONDITIONAL("SWIFT_NORETURN", , \
115+
"__has_attribute(noreturn)", \
116+
"__attribute__((noreturn))")
123117

124-
CLANG_MACRO(SWIFT_CLASS_EXTRA, , )
125-
CLANG_MACRO(SWIFT_PROTOCOL_EXTRA, , )
126-
CLANG_MACRO(SWIFT_ENUM_EXTRA, , )
118+
CLANG_MACRO("SWIFT_CLASS_EXTRA", , )
119+
CLANG_MACRO("SWIFT_PROTOCOL_EXTRA", , )
120+
CLANG_MACRO("SWIFT_ENUM_EXTRA", , )
127121

128-
CLANG_MACRO_BODY(SWIFT_CLASS, \
122+
CLANG_MACRO_BODY("SWIFT_CLASS", \
129123
"# if __has_attribute(objc_subclassing_restricted)\n" \
130124
"# define SWIFT_CLASS(SWIFT_NAME) " \
131125
"SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) " \
@@ -139,9 +133,9 @@ CLANG_MACRO_BODY(SWIFT_CLASS, \
139133
"# define SWIFT_CLASS_NAMED(SWIFT_NAME) " \
140134
"SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA\n" \
141135
"# endif")
142-
CLANG_MACRO_DEFINED(SWIFT_CLASS_NAMED)
136+
CLANG_MACRO_DEFINED("SWIFT_CLASS_NAMED")
143137

144-
CLANG_MACRO_BODY(SWIFT_RESILIENT_CLASS, \
138+
CLANG_MACRO_BODY("SWIFT_RESILIENT_CLASS", \
145139
"# if __has_attribute(objc_class_stub)\n" \
146140
"# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) " \
147141
"SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub))\n" \
@@ -151,26 +145,26 @@ CLANG_MACRO_BODY(SWIFT_RESILIENT_CLASS, \
151145
"# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME)\n" \
152146
"# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME)\n" \
153147
"# endif")
154-
CLANG_MACRO_DEFINED(SWIFT_RESILIENT_CLASS_NAMED)
148+
CLANG_MACRO_DEFINED("SWIFT_RESILIENT_CLASS_NAMED")
155149

156-
CLANG_MACRO_BODY(SWIFT_PROTOCOL, \
150+
CLANG_MACRO_BODY("SWIFT_PROTOCOL", \
157151
"# define SWIFT_PROTOCOL(SWIFT_NAME) " \
158152
"SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA\n" \
159153
"# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) " \
160154
"SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA")
161-
CLANG_MACRO_DEFINED(SWIFT_PROTOCOL_NAMED)
155+
CLANG_MACRO_DEFINED("SWIFT_PROTOCOL_NAMED")
162156

163-
CLANG_MACRO(SWIFT_EXTENSION, (M), SWIFT_PASTE(M##_Swift_, __LINE__))
157+
CLANG_MACRO("SWIFT_EXTENSION", "(M)", "SWIFT_PASTE(M##_Swift_, __LINE__)")
164158

165-
CLANG_MACRO_CONDITIONAL(OBJC_DESIGNATED_INITIALIZER, , \
166-
__has_attribute(objc_designated_initializer), \
167-
__attribute__((objc_designated_initializer)))
159+
CLANG_MACRO_CONDITIONAL("OBJC_DESIGNATED_INITIALIZER", , \
160+
"__has_attribute(objc_designated_initializer)", \
161+
"__attribute__((objc_designated_initializer))")
168162

169-
CLANG_MACRO_CONDITIONAL(SWIFT_ENUM_ATTR, (_extensibility), \
170-
__has_attribute(enum_extensibility), \
171-
__attribute__((enum_extensibility(_extensibility))))
163+
CLANG_MACRO_CONDITIONAL("SWIFT_ENUM_ATTR", "(_extensibility)", \
164+
"__has_attribute(enum_extensibility)", \
165+
"__attribute__((enum_extensibility(_extensibility)))")
172166

173-
CLANG_MACRO_BODY(SWIFT_ENUM, \
167+
CLANG_MACRO_BODY("SWIFT_ENUM", \
174168
"# define SWIFT_ENUM(_type, _name, _extensibility) " \
175169
"enum _name : _type _name; " \
176170
"enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name: _type\n" \
@@ -184,41 +178,39 @@ CLANG_MACRO_BODY(SWIFT_ENUM, \
184178
"SWIFT_ENUM(_type, _name, _extensibility)\n" \
185179
"# endif")
186180

187-
CLANG_MACRO(SWIFT_UNAVAILABLE, , __attribute__((unavailable)))
188-
CLANG_MACRO(SWIFT_UNAVAILABLE_MSG, (msg), __attribute__((unavailable(msg))))
181+
CLANG_MACRO("SWIFT_UNAVAILABLE", , "__attribute__((unavailable))")
182+
CLANG_MACRO("SWIFT_UNAVAILABLE_MSG", "(msg)", "__attribute__((unavailable(msg)))")
189183

190-
CLANG_MACRO(SWIFT_AVAILABILITY, (plat, ...), __attribute__((availability(plat, __VA_ARGS__))))
184+
CLANG_MACRO("SWIFT_AVAILABILITY", "(plat, ...)", "__attribute__((availability(plat, __VA_ARGS__)))")
191185

192-
// SWIFT_WEAK_IMPORT is also defined within the compiler source, so use CLANG_MACRO_BODY to avoid
193-
// being expanded before being emitted into the header
194-
CLANG_MACRO_BODY(SWIFT_WEAK_IMPORT, "# define SWIFT_WEAK_IMPORT __attribute__((weak_import))")
186+
CLANG_MACRO("SWIFT_WEAK_IMPORT", , "__attribute__((weak_import))")
195187

196-
CLANG_MACRO(SWIFT_DEPRECATED, , __attribute__((deprecated)))
197-
CLANG_MACRO(SWIFT_DEPRECATED_MSG, (...), __attribute__((deprecated(__VA_ARGS__))))
188+
CLANG_MACRO("SWIFT_DEPRECATED", , "__attribute__((deprecated))")
189+
CLANG_MACRO("SWIFT_DEPRECATED_MSG", "(...)", "__attribute__((deprecated(__VA_ARGS__)))")
198190

199-
CLANG_MACRO_ALTERNATIVE(SWIFT_DEPRECATED_OBJC, (Msg), \
200-
__has_feature(attribute_diagnost_if_objc), \
201-
__attribute__((diagnose_if(1, Msg, "warning"))), \
202-
SWIFT_DEPRECATED_MSG(Msg))
191+
CLANG_MACRO_ALTERNATIVE("SWIFT_DEPRECATED_OBJC", "(Msg)", \
192+
"__has_feature(attribute_diagnost_if_objc)", \
193+
"__attribute__((diagnose_if(1, Msg, \"warning\")))", \
194+
"SWIFT_DEPRECATED_MSG(Msg)")
203195

204-
CLANG_MACRO_OBJC(IBSegueAction, , )
196+
CLANG_MACRO_OBJC("IBSegueAction", , )
205197

206-
CLANG_MACRO_BODY(SWIFT_EXTERN, \
198+
CLANG_MACRO_BODY("SWIFT_EXTERN", \
207199
"# if defined(__cplusplus)\n" \
208200
"# define SWIFT_EXTERN extern \"C\"\n" \
209201
"# else\n" \
210202
"# define SWIFT_EXTERN extern\n"
211203
"# endif")
212204

213-
CLANG_MACRO(SWIFT_CALL, , __attribute__((swiftcall)))
205+
CLANG_MACRO("SWIFT_CALL", , "__attribute__((swiftcall))")
214206

215-
CLANG_MACRO(SWIFT_INDIRECT_RESULT, , __attribute__((swift_indirect_result)))
207+
CLANG_MACRO("SWIFT_INDIRECT_RESULT", , "__attribute__((swift_indirect_result))")
216208

217-
CLANG_MACRO(SWIFT_CONTEXT, , __attribute__((swift_context)))
209+
CLANG_MACRO("SWIFT_CONTEXT", , "__attribute__((swift_context))")
218210

219-
CLANG_MACRO_CXX(SWIFT_NOEXCEPT, , noexcept, )
211+
CLANG_MACRO_CXX("SWIFT_NOEXCEPT", , "noexcept", )
220212

221-
CLANG_MACRO_CXX_BODY(SWIFT_CXX_INT_DEFINED, \
213+
CLANG_MACRO_CXX_BODY("SWIFT_CXX_INT_DEFINED", \
222214
"#if !defined(SWIFT_CXX_INT_DEFINED)\n" \
223215
"#define SWIFT_CXX_INT_DEFINED\n" \
224216
"namespace swift {\n" \

lib/PrintAsClang/PrintAsClang.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -134,31 +134,31 @@ static void writePrologue(raw_ostream &out, ASTContext &ctx,
134134
"\n";
135135

136136
#define CLANG_MACRO_BODY(NAME, BODY) \
137-
out << "#if !defined(" #NAME ")\n" \
137+
out << "#if !defined(" NAME ")\n" \
138138
BODY "\n" \
139139
"#endif\n";
140140

141-
#define CLANG_MACRO(NAME, ARGS, VALUE) CLANG_MACRO_BODY(NAME, "# define " #NAME #ARGS " " #VALUE)
141+
#define CLANG_MACRO(NAME, ARGS, VALUE) CLANG_MACRO_BODY(NAME, "# define " NAME ARGS " " VALUE)
142142

143143
#define CLANG_MACRO_ALTERNATIVE(NAME, ARGS, CONDITION, VALUE, ALTERNATIVE) CLANG_MACRO_BODY(NAME, \
144-
"# if " #CONDITION "\n" \
145-
"# define " #NAME #ARGS " " #VALUE "\n" \
144+
"# if " CONDITION "\n" \
145+
"# define " NAME ARGS " " VALUE "\n" \
146146
"# else\n" \
147-
"# define " #NAME #ARGS " " #ALTERNATIVE "\n" \
147+
"# define " NAME ARGS " " ALTERNATIVE "\n" \
148148
"# endif")
149149

150150
#define CLANG_MACRO_OBJC(NAME, ARGS, VALUE) \
151151
out << "#if defined(__OBJC__)\n" \
152-
"#if !defined(" #NAME ")\n" \
153-
"# define " #NAME #ARGS " " #VALUE "\n" \
152+
"#if !defined(" NAME ")\n" \
153+
"# define " NAME ARGS " " VALUE "\n" \
154154
"#endif\n" \
155155
"#endif\n";
156156

157157
#define CLANG_MACRO_CXX(NAME, ARGS, VALUE, ALTERNATIVE) \
158158
out << "#if defined(__cplusplus)\n" \
159-
"# define " #NAME #ARGS " " #VALUE "\n" \
159+
"# define " NAME ARGS " " VALUE "\n" \
160160
"#else\n" \
161-
"# define " #NAME #ARGS " " #ALTERNATIVE "\n" \
161+
"# define " NAME ARGS " " ALTERNATIVE "\n" \
162162
"#endif\n";
163163

164164
#define CLANG_MACRO_CXX_BODY(NAME, BODY) \

tools/swift-compatibility-symbols/swift-compatibility-symbols.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ int main(int argc, char *argv[]) {
5353

5454
llvm::SmallVector<llvm::StringRef, 40> symbols;
5555
#define CLANG_MACRO_DEFINED(NAME) \
56-
symbols.push_back(#NAME);
56+
symbols.push_back(NAME);
5757

5858
#define CLANG_MACRO(NAME, ARGS, VALUE) \
5959
CLANG_MACRO_DEFINED(NAME)

0 commit comments

Comments
 (0)