Skip to content

Commit 12f8b51

Browse files
authored
Merge pull request swiftlang#30189 from DougGregor/function-builders-switch-exhaustive
[Constraint solver] Check switch exhaustiveness in function builders
2 parents fbec126 + 7ee33a9 commit 12f8b51

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

lib/Sema/BuilderTransform.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1127,6 +1127,8 @@ class BuilderClosureRewriter
11271127
++caseIndex;
11281128
}
11291129

1130+
TypeChecker::checkSwitchExhaustiveness(switchStmt, dc, /*limited=*/false);
1131+
11301132
return switchStmt;
11311133
}
11321134

test/Constraints/function_builder_diags.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -399,3 +399,18 @@ func testOverloadedSwitch() {
399399
}
400400
}
401401
}
402+
403+
// Check exhaustivity.
404+
func testNonExhaustiveSwitch(e: E) {
405+
tuplify(true) { c in
406+
"testSwitch"
407+
switch e { // expected-error{{switch must be exhaustive}}
408+
// expected-note @-1{{add missing case: '.b(_, .none)'}}
409+
case .a:
410+
"a"
411+
case .b(let i, let s?):
412+
i * 2
413+
s + "!"
414+
}
415+
}
416+
}

0 commit comments

Comments
 (0)