From 5d7d5dd5e5e5a5f7429265bf77cc9b34573e600e Mon Sep 17 00:00:00 2001 From: Christoph Wille Date: Fri, 26 Jun 2026 12:35:48 +0200 Subject: [PATCH] Cover dynamic bitwise and shift binary operators The pretty DynamicTests exercised arithmetic and relational binary operators on dynamic operands, but never the bitwise and shift operators (& | ^ << >>). Add a BitwiseAndShiftBinaryOperators case so this operator family is pinned by a round-trip test alongside the others. Assisted-by: Claude:claude-opus-4-8:Claude Code --- .../TestCases/Pretty/DynamicTests.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.cs index a9ebf2c74..39a809f48 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/DynamicTests.cs @@ -310,6 +310,23 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty } } + private static void BitwiseAndShiftBinaryOperators(dynamic a, dynamic b) + { + DynamicTests.MemberAccess(a & b); + DynamicTests.MemberAccess(a & 1); + DynamicTests.MemberAccess(a & null); + DynamicTests.MemberAccess(a | b); + DynamicTests.MemberAccess(a | 1); + DynamicTests.MemberAccess(a | null); + DynamicTests.MemberAccess(a ^ b); + DynamicTests.MemberAccess(a ^ 1); + DynamicTests.MemberAccess(a ^ null); + DynamicTests.MemberAccess(a << b); + DynamicTests.MemberAccess(a << 1); + DynamicTests.MemberAccess(a >> b); + DynamicTests.MemberAccess(a >> 1); + } + private static void RelationalOperators(dynamic a, dynamic b) { DynamicTests.MemberAccess(a == b);