Skip to content

Commit 4876996

Browse files
authored
Merge pull request #30510 from HassanElDesouky/SR-12309-FollowUp
[CSGen] Diagnose `nil` with any number of parentheses
2 parents c56e799 + cdf5c5c commit 4876996

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

lib/Sema/CSGen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1152,7 +1152,7 @@ namespace {
11521152
// `_ = nil`, let's diagnose it here because solver can't
11531153
// attempt any types for it.
11541154
auto *parentExpr = CS.getParentExpr(expr);
1155-
if (parentExpr && isa<ParenExpr>(parentExpr))
1155+
while (parentExpr && isa<ParenExpr>(parentExpr))
11561156
parentExpr = CS.getParentExpr(parentExpr);
11571157

11581158
if (parentExpr) {

test/Constraints/optional.swift

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,9 +436,16 @@ func sr_12309() {
436436

437437
_ = S(foo: nil!) // expected-error {{'nil' literal cannot be force unwrapped}}
438438
_ = nil! // expected-error {{'nil' literal cannot be force unwrapped}}
439+
_ = (nil!) // expected-error {{'nil' literal cannot be force unwrapped}}
440+
_ = (nil)! // expected-error {{'nil' literal cannot be force unwrapped}}
441+
_ = ((nil))! // expected-error {{'nil' literal cannot be force unwrapped}}
439442
_ = nil? // expected-error {{value of optional type 'Optional<_>' must be unwrapped to a value of type '_'}}
440443
// expected-note@-1 {{coalesce using '??' to provide a default when the optional value contains 'nil'}}
441444
// expected-note@-2 {{force-unwrap using '!' to abort execution if the optional value contains 'nil'}}
442-
_ = (nil) // expected-error {{'nil' requires a contextual type}}
443445
_ = nil // expected-error {{'nil' requires a contextual type}}
446+
_ = (nil) // expected-error {{'nil' requires a contextual type}}
447+
_ = ((nil)) // expected-error {{'nil' requires a contextual type}}
448+
_ = (((nil))) // expected-error {{'nil' requires a contextual type}}
449+
_ = ((((((nil)))))) // expected-error {{'nil' requires a contextual type}}
450+
_ = (((((((((nil))))))))) // expected-error {{'nil' requires a contextual type}}
444451
}

0 commit comments

Comments
 (0)