From b771428c7fe535318f806b3be56c0ee2a95cedcf Mon Sep 17 00:00:00 2001 From: Shubham Padkonde Date: Mon, 21 Sep 2026 08:53:46 +0530 Subject: [PATCH] Mark Conditional.execute overrides as @protected Conditional.execute is declared @protected on the base class, but Dart does not propagate the annotation to overrides: each override has to carry it. All four Conditional subclasses -- Case, ConditionalAssign, ConditionalGroup and If -- declared only @override, so a call made through the subclass type was not flagged, even though the same call through a Conditional-typed reference was. Add @protected to the four overrides so the restriction holds no matter which static type the caller uses. Fixes #596 Co-Authored-By: Claude Opus 5 --- lib/src/modules/conditionals/case.dart | 1 + lib/src/modules/conditionals/conditional_assign.dart | 1 + lib/src/modules/conditionals/conditional_group.dart | 1 + lib/src/modules/conditionals/if.dart | 1 + 4 files changed, 4 insertions(+) diff --git a/lib/src/modules/conditionals/case.dart b/lib/src/modules/conditionals/case.dart index 61b90fff32..d7dbcf21a6 100644 --- a/lib/src/modules/conditionals/case.dart +++ b/lib/src/modules/conditionals/case.dart @@ -149,6 +149,7 @@ class Case extends Conditional { String get caseType => 'case'; @override + @protected void execute(Set? drivenSignals, [void Function(Logic)? guard]) { if (guard != null) { guard(expression); diff --git a/lib/src/modules/conditionals/conditional_assign.dart b/lib/src/modules/conditionals/conditional_assign.dart index 9c77787c83..255e409133 100644 --- a/lib/src/modules/conditionals/conditional_assign.dart +++ b/lib/src/modules/conditionals/conditional_assign.dart @@ -49,6 +49,7 @@ class ConditionalAssign extends Conditional { late final Logic _receiverOutput = receiverOutput(receiver); @override + @protected void execute(Set? drivenSignals, [void Function(Logic toGuard)? guard]) { if (guard != null) { diff --git a/lib/src/modules/conditionals/conditional_group.dart b/lib/src/modules/conditionals/conditional_group.dart index a8745eac61..4a50a9a2f8 100644 --- a/lib/src/modules/conditionals/conditional_group.dart +++ b/lib/src/modules/conditionals/conditional_group.dart @@ -43,6 +43,7 @@ class ConditionalGroup extends Conditional { [for (final conditional in conditionals) ...conditional.receivers]; @override + @protected void execute(Set? drivenSignals, void Function(Logic toGuard)? guard) { for (final conditional in conditionals) { conditional.execute(drivenSignals, guard); diff --git a/lib/src/modules/conditionals/if.dart b/lib/src/modules/conditionals/if.dart index f406abceff..df24f8d391 100644 --- a/lib/src/modules/conditionals/if.dart +++ b/lib/src/modules/conditionals/if.dart @@ -115,6 +115,7 @@ class If extends Conditional { } @override + @protected void execute(Set? drivenSignals, [void Function(Logic)? guard]) { if (guard != null) { for (final iff in iffs) {