Skip to content

Commit 4a29080

Browse files
authored
[Compile Time Constant Extraction] Update string literal output formatting (#62836)
1 parent b205a9c commit 4a29080

File tree

4 files changed

+32
-20
lines changed

4 files changed

+32
-20
lines changed

lib/ConstExtract/ConstExtract.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,7 @@ static std::shared_ptr<CompileTimeValue> extractCompileTimeValue(Expr *expr) {
126126
case ExprKind::BooleanLiteral:
127127
case ExprKind::FloatLiteral:
128128
case ExprKind::IntegerLiteral:
129-
case ExprKind::NilLiteral:
130-
case ExprKind::StringLiteral: {
129+
case ExprKind::NilLiteral: {
131130
std::string literalOutput;
132131
llvm::raw_string_ostream OutputStream(literalOutput);
133132
expr->printConstExprValue(&OutputStream, nullptr);
@@ -137,6 +136,14 @@ static std::shared_ptr<CompileTimeValue> extractCompileTimeValue(Expr *expr) {
137136
break;
138137
}
139138

139+
case ExprKind::StringLiteral: {
140+
auto stringLiteralExpression = cast<StringLiteralExpr>(expr);
141+
std::string literalOutput;
142+
llvm::raw_string_ostream OutputStream(literalOutput);
143+
OutputStream << stringLiteralExpression->getValue();
144+
return std::make_shared<RawLiteralValue>(literalOutput);
145+
}
146+
140147
case ExprKind::Array: {
141148
auto arrayExpr = cast<ArrayExpr>(expr);
142149
std::vector<std::shared_ptr<CompileTimeValue>> elementValues;

test/ConstExtraction/ExtractCalls.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
// CHECK-NEXT: "label": "buz",
3434
// CHECK-NEXT: "type": "Swift.String",
3535
// CHECK-NEXT: "valueKind": "RawLiteral",
36-
// CHECK-NEXT: "value": "\"\""
36+
// CHECK-NEXT: "value": ""
3737
// CHECK-NEXT: },
3838
// CHECK-NEXT: {
3939
// CHECK-NEXT: "label": "fuz",
@@ -57,7 +57,7 @@
5757
// CHECK-NEXT: "label": "buz",
5858
// CHECK-NEXT: "type": "Swift.String",
5959
// CHECK-NEXT: "valueKind": "RawLiteral",
60-
// CHECK-NEXT: "value": "\"hello\""
60+
// CHECK-NEXT: "value": "hello"
6161
// CHECK-NEXT: },
6262
// CHECK-NEXT: {
6363
// CHECK-NEXT: "label": "fuz",

test/ConstExtraction/ExtractGroups.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
// CHECK-NEXT: },
5151
// CHECK-NEXT: {
5252
// CHECK-NEXT: "valueKind": "RawLiteral",
53-
// CHECK-NEXT: "value": "\"hi\""
53+
// CHECK-NEXT: "value": "hi"
5454
// CHECK-NEXT: }
5555
// CHECK-NEXT: ]
5656
// CHECK-NEXT: },
@@ -86,7 +86,7 @@
8686
// CHECK-NEXT: {
8787
// CHECK-NEXT: "key": {
8888
// CHECK-NEXT: "valueKind": "RawLiteral",
89-
// CHECK-NEXT: "value": "\"One\""
89+
// CHECK-NEXT: "value": "One"
9090
// CHECK-NEXT: },
9191
// CHECK-NEXT: "value": {
9292
// CHECK-NEXT: "valueKind": "RawLiteral",
@@ -96,7 +96,7 @@
9696
// CHECK-NEXT: {
9797
// CHECK-NEXT: "key": {
9898
// CHECK-NEXT: "valueKind": "RawLiteral",
99-
// CHECK-NEXT: "value": "\"Two\""
99+
// CHECK-NEXT: "value": "Two"
100100
// CHECK-NEXT: },
101101
// CHECK-NEXT: "value": {
102102
// CHECK-NEXT: "valueKind": "RawLiteral",
@@ -106,7 +106,7 @@
106106
// CHECK-NEXT: {
107107
// CHECK-NEXT: "key": {
108108
// CHECK-NEXT: "valueKind": "RawLiteral",
109-
// CHECK-NEXT: "value": "\"Three\""
109+
// CHECK-NEXT: "value": "Three"
110110
// CHECK-NEXT: },
111111
// CHECK-NEXT: "value": {
112112
// CHECK-NEXT: "valueKind": "RawLiteral",
@@ -132,15 +132,15 @@
132132
// CHECK-NEXT: "value": [
133133
// CHECK-NEXT: {
134134
// CHECK-NEXT: "valueKind": "RawLiteral",
135-
// CHECK-NEXT: "value": "\"a\""
135+
// CHECK-NEXT: "value": "a"
136136
// CHECK-NEXT: },
137137
// CHECK-NEXT: {
138138
// CHECK-NEXT: "valueKind": "RawLiteral",
139-
// CHECK-NEXT: "value": "\"b\""
139+
// CHECK-NEXT: "value": "b"
140140
// CHECK-NEXT: },
141141
// CHECK-NEXT: {
142142
// CHECK-NEXT: "valueKind": "RawLiteral",
143-
// CHECK-NEXT: "value": "\"c\""
143+
// CHECK-NEXT: "value": "c"
144144
// CHECK-NEXT: }
145145
// CHECK-NEXT: ]
146146
// CHECK-NEXT: }
@@ -155,7 +155,7 @@
155155
// CHECK-NEXT: "value": [
156156
// CHECK-NEXT: {
157157
// CHECK-NEXT: "valueKind": "RawLiteral",
158-
// CHECK-NEXT: "value": "\"z\""
158+
// CHECK-NEXT: "value": "z"
159159
// CHECK-NEXT: }
160160
// CHECK-NEXT: ]
161161
// CHECK-NEXT: }
@@ -172,7 +172,7 @@
172172
// CHECK-NEXT: {
173173
// CHECK-NEXT: "key": {
174174
// CHECK-NEXT: "valueKind": "RawLiteral",
175-
// CHECK-NEXT: "value": "\"Bar\""
175+
// CHECK-NEXT: "value": "Bar"
176176
// CHECK-NEXT: },
177177
// CHECK-NEXT: "value": {
178178
// CHECK-NEXT: "valueKind": "InitCall",
@@ -185,7 +185,7 @@
185185
// CHECK-NEXT: {
186186
// CHECK-NEXT: "key": {
187187
// CHECK-NEXT: "valueKind": "RawLiteral",
188-
// CHECK-NEXT: "value": "\"Int\""
188+
// CHECK-NEXT: "value": "Int"
189189
// CHECK-NEXT: },
190190
// CHECK-NEXT: "value": {
191191
// CHECK-NEXT: "valueKind": "RawLiteral",
@@ -210,7 +210,7 @@
210210
// CHECK-NEXT: {
211211
// CHECK-NEXT: "type": "Swift.String",
212212
// CHECK-NEXT: "valueKind": "RawLiteral",
213-
// CHECK-NEXT: "value": "\"foo\""
213+
// CHECK-NEXT: "value": "foo"
214214
// CHECK-NEXT: },
215215
// CHECK-NEXT: {
216216
// CHECK-NEXT: "type": "ExtractGroups.Bar",

test/ConstExtraction/ExtractLiterals.swift

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,23 +96,23 @@
9696
// CHECK-NEXT: "isStatic": "false",
9797
// CHECK-NEXT: "isComputed": "false",
9898
// CHECK-NEXT: "valueKind": "RawLiteral",
99-
// CHECK-NEXT: "value": "\"Hello, World\""
99+
// CHECK-NEXT: "value": "First \"string\"\nSecond \\ string"
100100
// CHECK-NEXT: },
101101
// CHECK-NEXT: {
102102
// CHECK-NEXT: "label": "string2",
103103
// CHECK-NEXT: "type": "Swift.String",
104104
// CHECK-NEXT: "isStatic": "false",
105105
// CHECK-NEXT: "isComputed": "false",
106106
// CHECK-NEXT: "valueKind": "RawLiteral",
107-
// CHECK-NEXT: "value": "\"Hi\""
107+
// CHECK-NEXT: "value": "Hi"
108108
// CHECK-NEXT: },
109109
// CHECK-NEXT: {
110110
// CHECK-NEXT: "label": "string3",
111111
// CHECK-NEXT: "type": "Swift.String",
112112
// CHECK-NEXT: "isStatic": "false",
113113
// CHECK-NEXT: "isComputed": "true",
114114
// CHECK-NEXT: "valueKind": "RawLiteral",
115-
// CHECK-NEXT: "value": "\"Hey\""
115+
// CHECK-NEXT: "value": "Hey"
116116
// CHECK-NEXT: }
117117
// CHECK-NEXT: ]
118118
// CHECK-NEXT: },
@@ -147,7 +147,7 @@
147147
// CHECK-NEXT: "isStatic": "false",
148148
// CHECK-NEXT: "isComputed": "true",
149149
// CHECK-NEXT: "valueKind": "RawLiteral",
150-
// CHECK-NEXT: "value": "\"Hello\"",
150+
// CHECK-NEXT: "value": "Hello",
151151
// CHECK-NEXT: "attributes": [
152152
// CHECK-NEXT: {
153153
// CHECK-NEXT: "type": "ExtractLiterals.Buffered",
@@ -251,7 +251,12 @@ public struct Floats : MyProto {
251251
}
252252

253253
public struct Strings : MyProto {
254-
let string1: String = "Hello, World"
254+
let string1: String =
255+
"""
256+
First "string"
257+
Second \\ string
258+
"""
259+
255260
let string2: String = (("Hi"))
256261
var string3: String { ("Hey") }
257262
}

0 commit comments

Comments
 (0)