Skip to content

Commit bb2a2e8

Browse files
authored
[Compile Time Constant Extraction] Look through InjectIntoOptionalExpr (#64416)
1 parent 6f31afb commit bb2a2e8

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

Diff for: lib/ConstExtract/ConstExtract.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,11 @@ static std::shared_ptr<CompileTimeValue> extractCompileTimeValue(Expr *expr) {
339339
}
340340
} break;
341341

342+
case ExprKind::InjectIntoOptional: {
343+
auto injectIntoOptionalExpr = cast<InjectIntoOptionalExpr>(expr);
344+
return extractCompileTimeValue(injectIntoOptionalExpr->getSubExpr());
345+
}
346+
342347
default: {
343348
break;
344349
}

Diff for: test/ConstExtraction/ExtractCalls.swift

+17-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public struct Foo : MyProto {
1010
let init1 = Bar()
1111
let init2: Bat = .init()
1212
let init3 = Bat(buz: "hello", fuz: adder(2, 3))
13+
static var init4: Bar? = Bar()
14+
1315
let func1: Int = adder(2, 3)
1416
}
1517

@@ -111,16 +113,29 @@ public struct Bat {
111113
// CHECK-NEXT: "isStatic": "false",
112114
// CHECK-NEXT: "isComputed": "false",
113115
// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractCalls.swift",
114-
// CHECK-NEXT: "line": 13,
116+
// CHECK-NEXT: "line": 15,
115117
// CHECK-NEXT: "valueKind": "Runtime"
116118
// CHECK-NEXT: },
117119
// CHECK-NEXT: {
120+
// CHECK-NEXT: "label": "init4",
121+
// CHECK-NEXT: "type": "Swift.Optional<ExtractCalls.Bar>",
122+
// CHECK-NEXT: "isStatic": "true",
123+
// CHECK-NEXT: "isComputed": "false",
124+
// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractCalls.swift",
125+
// CHECK-NEXT: "line": 13,
126+
// CHECK-NEXT: "valueKind": "InitCall",
127+
// CHECK-NEXT: "value": {
128+
// CHECK-NEXT: "type": "ExtractCalls.Bar",
129+
// CHECK-NEXT: "arguments": []
130+
// CHECK-NEXT: }
131+
// CHECK-NEXT: },
132+
// CHECK-NEXT: {
118133
// CHECK-NEXT: "label": "ext1",
119134
// CHECK-NEXT: "type": "ExtractCalls.Foo.Boo",
120135
// CHECK-NEXT: "isStatic": "false",
121136
// CHECK-NEXT: "isComputed": "true",
122137
// CHECK-NEXT: "file": "{{.*}}test{{/|\\\\}}ConstExtraction{{/|\\\\}}ExtractCalls.swift",
123-
// CHECK-NEXT: "line": 19,
138+
// CHECK-NEXT: "line": 21,
124139
// CHECK-NEXT: "valueKind": "InitCall",
125140
// CHECK-NEXT: "value": {
126141
// CHECK-NEXT: "type": "ExtractCalls.Foo.Boo",

0 commit comments

Comments
 (0)