Skip to content

Commit 7ee33a9

Browse files
committed
[Constraint solver] Check switch exhaustiveness in function builders
1 parent ea8d143 commit 7ee33a9

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
@@ -1123,6 +1123,8 @@ class BuilderClosureRewriter
11231123
++caseIndex;
11241124
}
11251125

1126+
TypeChecker::checkSwitchExhaustiveness(switchStmt, dc, /*limited=*/false);
1127+
11261128
return switchStmt;
11271129
}
11281130

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)