Skip to content

Commit 7cc84f6

Browse files
committed
Disallow string interpolation
1 parent 5123083 commit 7cc84f6

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

lib/Sema/TypeCheckDeclPrimary.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1037,7 +1037,8 @@ static bool checkExpressionMacroDefaultValueRestrictions(ParamDecl *param) {
10371037
// only allow arguments that are literals
10381038
auto args = macroExpansionExpr->getArgs();
10391039
for (auto arg : *args)
1040-
if (!dyn_cast<LiteralExpr>(arg.getExpr())) {
1040+
if (!isa<LiteralExpr>(arg.getExpr()) ||
1041+
isa<InterpolatedStringLiteralExpr>(arg.getExpr())) {
10411042
ctx.Diags.diagnose(
10421043
arg.getExpr()->getLoc(),
10431044
diag::macro_as_default_argument_arguments_must_be_literal);

test/Macros/macro_default_argument_diagnostics.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ func testInt(positive: Stringified<UInt64> = #stringify(1_000_001),
3030
negative: Stringified<Int32> = #stringify(-0o21)) {}
3131
func testFloat(double: Stringified<Double> = #stringify(-0xC.3p0),
3232
float: Stringified<Float> = #stringify(00003.14159)) {}
33-
func testString(literal: Stringified<MyLiteral> = #stringify("🐨"),
34-
interpolated: Stringified<String> = #stringify("Hello \(0b10001)")) {}
33+
func testString(literal: Stringified<MyLiteral> = #stringify("🐨")) {}
3534
func testMagic(fileID: Stringified<String> = #stringify(#fileID),
3635
filePath: Stringified<String> = #stringify(#filePath),
3736
file: Stringified<String> = #stringify(#file),
@@ -51,3 +50,6 @@ let myString = "oops"
5150

5251
// expected-error@+1{{argument to macro used as default argument must be literal}}
5352
func testIdentifier(notOkay: Stringified<String> = #stringify(myString)) {}
53+
54+
// expected-error@+1{{argument to macro used as default argument must be literal}}
55+
func testString(interpolated: Stringified<String> = #stringify("Hello \(0b10001)")) {}

0 commit comments

Comments
 (0)