Fail closed on cross-package enum switch constraints

Switch-arm equality now requires compatible enum types when both sides are package-qualified, while still accepting import-style vs FQN pairs like DomainCommand.ORDER_PAY.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-14 06:31:11 +02:00
parent d589f65cc1
commit dbeab64e1b
2 changed files with 81 additions and 5 deletions

View File

@@ -29,6 +29,20 @@ class BooleanConstraintEvaluatorBindingsTest {
Map.of("commandKey", "order.pay"))).isTrue();
}
@Test
void shouldRejectCrossPackageQualifiedEnumSwitchConstraint() {
assertThat(BooleanConstraintEvaluator.isCompatibleWithBindings(
"command == a.OrderEvent.PAY",
Map.of("command", "b.OrderEvent.PAY"))).isFalse();
}
@Test
void shouldAcceptPackageQualifiedRhsAgainstImportStyleBinding() {
assertThat(BooleanConstraintEvaluator.isCompatibleWithBindings(
"command == com.example.DomainCommand.ORDER_PAY",
Map.of("command", "DomainCommand.ORDER_PAY"))).isTrue();
}
@Test
void shouldRejectConstraintWhenBindingIsMissing() {
assertThat(BooleanConstraintEvaluator.isCompatibleWithBindings(