From a110765ff4740e6af1eed855b9bf32c4bf196d22 Mon Sep 17 00:00:00 2001 From: Alexander Linne Date: Sat, 15 Aug 2026 22:01:23 +0200 Subject: [PATCH] fix: make AreStatic/AreNotStatic agree with BeStatic/NotBeStatic on unknown state IMember.IsStatic is null for stub members, i.e. members built from a MethodReference or FieldReference rather than a definition. The two member predicates were the only two of the 24 HasValue guards under Elements/ written as "HasValue &&" rather than "!HasValue ||", so for such a member BeStatic and NotBeStatic both passed while neither AreStatic nor AreNotStatic matched. No snapshot changes: every member in every test architecture has a non-null IsStatic, and there is no fluent path to a stub member today, so the fix is not observable from a test. Signed-off-by: Alexander Linne --- .../Syntax/Elements/Members/MemberPredicatesDefinition.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberPredicatesDefinition.cs b/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberPredicatesDefinition.cs index e67d333f5..4a0fb95d7 100644 --- a/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberPredicatesDefinition.cs +++ b/ArchUnitNET/Fluent/Syntax/Elements/Members/MemberPredicatesDefinition.cs @@ -28,7 +28,7 @@ IEnumerable Filter(IEnumerable members, Architecture architecture) public static IPredicate AreStatic() { return new SimplePredicate( - member => member.IsStatic.HasValue && member.IsStatic.Value, + member => !member.IsStatic.HasValue || member.IsStatic.Value, "are static" ); } @@ -70,7 +70,7 @@ IEnumerable Filter(IEnumerable members, Architecture architecture) public static IPredicate AreNotStatic() { return new SimplePredicate( - member => member.IsStatic.HasValue && !member.IsStatic.Value, + member => !member.IsStatic.HasValue || !member.IsStatic.Value, "are not static" ); }