Skip to content

Commit aba7416

Browse files
committed
chore(avalonia): enforce discard variable for unused return values
Enable IDE0058 as warning to auto-fix unused expression values. Apply formatting to add _ = discard prefix to test assertions and void API calls that return values.
1 parent 09142c4 commit aba7416

File tree

8 files changed

+137
-137
lines changed

8 files changed

+137
-137
lines changed

avalonia-gui/.editorconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# New config, for command-line and ASP.NET apps, and UI combined
22
# This keeps open-braces on same line for code blocks
3-
# 15 Jan 2026
3+
# 30 Jan 2026
44

55
# Remove the line below if you want to inherit .editorconfig settings from higher directories
66
root = true
@@ -152,7 +152,7 @@ csharp_style_implicit_object_creation_when_type_is_apparent = true:suggestion
152152
csharp_style_prefer_tuple_swap = true:suggestion
153153
csharp_style_prefer_utf8_string_literals = true:suggestion
154154
csharp_style_unused_value_assignment_preference = discard_variable:suggestion
155-
csharp_style_unused_value_expression_statement_preference = discard_variable:suggestion
155+
csharp_style_unused_value_expression_statement_preference = discard_variable:warning
156156
csharp_prefer_static_local_function = true:suggestion
157157
csharp_style_prefer_readonly_struct = true:suggestion
158158
csharp_style_prefer_readonly_struct_member = true:suggestion

avalonia-gui/ARMEmulator.Tests/Models/EmulatorEventTests.cs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,27 @@ public void StateEvent_StoresAllProperties()
1212
var registers = RegisterState.Create(r0: 42);
1313
var evt = new StateEvent("session-123", status, registers);
1414

15-
evt.SessionId.Should().Be("session-123");
16-
evt.Status.Should().Be(status);
17-
evt.Registers.Should().Be(registers);
15+
_ = evt.SessionId.Should().Be("session-123");
16+
_ = evt.Status.Should().Be(status);
17+
_ = evt.Registers.Should().Be(registers);
1818
}
1919

2020
[Fact]
2121
public void OutputEvent_StoresAllProperties()
2222
{
2323
var evt = new OutputEvent("session-123", OutputStreamType.Stdout, "Hello, World!\n");
2424

25-
evt.SessionId.Should().Be("session-123");
26-
evt.Stream.Should().Be(OutputStreamType.Stdout);
27-
evt.Content.Should().Be("Hello, World!\n");
25+
_ = evt.SessionId.Should().Be("session-123");
26+
_ = evt.Stream.Should().Be(OutputStreamType.Stdout);
27+
_ = evt.Content.Should().Be("Hello, World!\n");
2828
}
2929

3030
[Fact]
3131
public void OutputEvent_WithStderr_StoresCorrectStream()
3232
{
3333
var evt = new OutputEvent("session-123", OutputStreamType.Stderr, "Error occurred\n");
3434

35-
evt.Stream.Should().Be(OutputStreamType.Stderr);
35+
_ = evt.Stream.Should().Be(OutputStreamType.Stderr);
3636
}
3737

3838
[Fact]
@@ -44,11 +44,11 @@ public void ExecutionEvent_WithBreakpoint_StoresCorrectType()
4444
Address: 0x8000
4545
);
4646

47-
evt.SessionId.Should().Be("session-123");
48-
evt.EventType.Should().Be(ExecutionEventType.BreakpointHit);
49-
evt.Address.Should().Be(0x8000u);
50-
evt.Symbol.Should().BeNull();
51-
evt.Message.Should().BeNull();
47+
_ = evt.SessionId.Should().Be("session-123");
48+
_ = evt.EventType.Should().Be(ExecutionEventType.BreakpointHit);
49+
_ = evt.Address.Should().Be(0x8000u);
50+
_ = evt.Symbol.Should().BeNull();
51+
_ = evt.Message.Should().BeNull();
5252
}
5353

5454
[Fact]
@@ -60,9 +60,9 @@ public void ExecutionEvent_WithHalted_StoresMessage()
6060
Message: "Program completed successfully"
6161
);
6262

63-
evt.EventType.Should().Be(ExecutionEventType.Halted);
64-
evt.Message.Should().Be("Program completed successfully");
65-
evt.Address.Should().BeNull();
63+
_ = evt.EventType.Should().Be(ExecutionEventType.Halted);
64+
_ = evt.Message.Should().Be("Program completed successfully");
65+
_ = evt.Address.Should().BeNull();
6666
}
6767

6868
[Fact]
@@ -74,8 +74,8 @@ public void ExecutionEvent_WithError_StoresErrorMessage()
7474
Message: "Invalid instruction"
7575
);
7676

77-
evt.EventType.Should().Be(ExecutionEventType.Error);
78-
evt.Message.Should().Be("Invalid instruction");
77+
_ = evt.EventType.Should().Be(ExecutionEventType.Error);
78+
_ = evt.Message.Should().Be("Invalid instruction");
7979
}
8080

8181
[Fact]
@@ -94,15 +94,15 @@ public void EmulatorEvent_CanBePatternMatched()
9494
_ => "Unknown"
9595
};
9696

97-
result.Should().Be("State: Running");
97+
_ = result.Should().Be("State: Running");
9898
}
9999

100100
[Fact]
101101
public void EmulatorEvent_BaseClassProvidesSessionId()
102102
{
103103
EmulatorEvent evt = new OutputEvent("session-456", OutputStreamType.Stdout, "test");
104104

105-
evt.SessionId.Should().Be("session-456");
105+
_ = evt.SessionId.Should().Be("session-456");
106106
}
107107

108108
[Theory]
@@ -112,7 +112,7 @@ public void EmulatorEvent_BaseClassProvidesSessionId()
112112
public void ExecutionEventType_HasAllValues(ExecutionEventType type)
113113
{
114114
// Verify enum values exist
115-
type.Should().BeOneOf(
115+
_ = type.Should().BeOneOf(
116116
ExecutionEventType.BreakpointHit,
117117
ExecutionEventType.Halted,
118118
ExecutionEventType.Error
@@ -125,6 +125,6 @@ public void ExecutionEventType_HasAllValues(ExecutionEventType type)
125125
public void OutputStreamType_HasAllValues(OutputStreamType stream)
126126
{
127127
// Verify enum values exist
128-
stream.Should().BeOneOf(OutputStreamType.Stdout, OutputStreamType.Stderr);
128+
_ = stream.Should().BeOneOf(OutputStreamType.Stdout, OutputStreamType.Stderr);
129129
}
130130
}

avalonia-gui/ARMEmulator.Tests/Models/RegisterStateTests.cs

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@ public void Create_WithDefaultParameters_ReturnsZeroedRegisters()
1010
{
1111
var state = RegisterState.Create();
1212

13-
state.R0.Should().Be(0u);
14-
state.R12.Should().Be(0u);
15-
state.PC.Should().Be(0u);
16-
state.SP.Should().Be(0u);
17-
state.LR.Should().Be(0u);
18-
state.Registers.Should().HaveCount(16);
19-
state.Registers.Should().AllSatisfy(r => r.Should().Be(0u));
13+
_ = state.R0.Should().Be(0u);
14+
_ = state.R12.Should().Be(0u);
15+
_ = state.PC.Should().Be(0u);
16+
_ = state.SP.Should().Be(0u);
17+
_ = state.LR.Should().Be(0u);
18+
_ = state.Registers.Should().HaveCount(16);
19+
_ = state.Registers.Should().AllSatisfy(r => r.Should().Be(0u));
2020
}
2121

2222
[Fact]
@@ -30,11 +30,11 @@ public void Create_WithSpecificValues_SetsCorrectRegisters()
3030
pc: 0x8000
3131
);
3232

33-
state.R0.Should().Be(0x100u);
34-
state.R1.Should().Be(0x200u);
35-
state.SP.Should().Be(0x50000u);
36-
state.LR.Should().Be(0x8004u);
37-
state.PC.Should().Be(0x8000u);
33+
_ = state.R0.Should().Be(0x100u);
34+
_ = state.R1.Should().Be(0x200u);
35+
_ = state.SP.Should().Be(0x50000u);
36+
_ = state.LR.Should().Be(0x8004u);
37+
_ = state.PC.Should().Be(0x8000u);
3838
}
3939

4040
[Fact]
@@ -45,7 +45,7 @@ public void Diff_WithNoChanges_ReturnsEmptySet()
4545

4646
var diff = state1.Diff(state2);
4747

48-
diff.Should().BeEmpty();
48+
_ = diff.Should().BeEmpty();
4949
}
5050

5151
[Fact]
@@ -56,7 +56,7 @@ public void Diff_WithSingleRegisterChange_ReturnsThatRegister()
5656

5757
var diff = after.Diff(before);
5858

59-
diff.Should().BeEquivalentTo(new[] { "R0" });
59+
_ = diff.Should().BeEquivalentTo(new[] { "R0" });
6060
}
6161

6262
[Fact]
@@ -67,7 +67,7 @@ public void Diff_WithMultipleChanges_ReturnsAllChangedRegisters()
6767

6868
var diff = after.Diff(before);
6969

70-
diff.Should().BeEquivalentTo(new[] { "R0", "R1" });
70+
_ = diff.Should().BeEquivalentTo(new[] { "R0", "R1" });
7171
}
7272

7373
[Fact]
@@ -78,7 +78,7 @@ public void Diff_WithCPSRChange_IncludesCPSR()
7878

7979
var diff = after.Diff(before);
8080

81-
diff.Should().Contain("CPSR");
81+
_ = diff.Should().Contain("CPSR");
8282
}
8383

8484
[Fact]
@@ -89,37 +89,37 @@ public void Diff_WithSpecialRegisters_UsesCorrectNames()
8989

9090
var diff = after.Diff(before);
9191

92-
diff.Should().BeEquivalentTo(new[] { "SP", "LR", "PC" });
92+
_ = diff.Should().BeEquivalentTo(new[] { "SP", "LR", "PC" });
9393
}
9494

9595
[Fact]
9696
public void Indexer_WithValidRegisterName_ReturnsCorrectValue()
9797
{
9898
var state = RegisterState.Create(r0: 42, r5: 100, sp: 0x50000);
9999

100-
state["R0"].Should().Be(42u);
101-
state["r0"].Should().Be(42u); // Case insensitive
102-
state["R5"].Should().Be(100u);
103-
state["SP"].Should().Be(0x50000u);
104-
state["R13"].Should().Be(0x50000u); // SP alias
100+
_ = state["R0"].Should().Be(42u);
101+
_ = state["r0"].Should().Be(42u); // Case insensitive
102+
_ = state["R5"].Should().Be(100u);
103+
_ = state["SP"].Should().Be(0x50000u);
104+
_ = state["R13"].Should().Be(0x50000u); // SP alias
105105
}
106106

107107
[Fact]
108108
public void Indexer_WithLR_ReturnsR14Value()
109109
{
110110
var state = RegisterState.Create(lr: 0x8004);
111111

112-
state["LR"].Should().Be(0x8004u);
113-
state["R14"].Should().Be(0x8004u);
112+
_ = state["LR"].Should().Be(0x8004u);
113+
_ = state["R14"].Should().Be(0x8004u);
114114
}
115115

116116
[Fact]
117117
public void Indexer_WithPC_ReturnsR15Value()
118118
{
119119
var state = RegisterState.Create(pc: 0x8000);
120120

121-
state["PC"].Should().Be(0x8000u);
122-
state["R15"].Should().Be(0x8000u);
121+
_ = state["PC"].Should().Be(0x8000u);
122+
_ = state["R15"].Should().Be(0x8000u);
123123
}
124124

125125
[Fact]
@@ -129,7 +129,7 @@ public void Indexer_WithInvalidName_ThrowsArgumentException()
129129

130130
var act = () => state["R16"];
131131

132-
act.Should().Throw<ArgumentException>()
132+
_ = act.Should().Throw<ArgumentException>()
133133
.WithMessage("*Unknown register*");
134134
}
135135

@@ -140,7 +140,7 @@ public void Indexer_WithInvalidName_InvalidRegister_ThrowsArgumentException()
140140

141141
var act = () => state["FOO"];
142142

143-
act.Should().Throw<ArgumentException>()
143+
_ = act.Should().Throw<ArgumentException>()
144144
.WithMessage("*Unknown register*");
145145
}
146146

@@ -154,22 +154,22 @@ public void NamedAccessors_ReturnCorrectRegisters()
154154
r12: 13, sp: 14, lr: 15, pc: 16
155155
);
156156

157-
state.R0.Should().Be(1u);
158-
state.R1.Should().Be(2u);
159-
state.R2.Should().Be(3u);
160-
state.R3.Should().Be(4u);
161-
state.R4.Should().Be(5u);
162-
state.R5.Should().Be(6u);
163-
state.R6.Should().Be(7u);
164-
state.R7.Should().Be(8u);
165-
state.R8.Should().Be(9u);
166-
state.R9.Should().Be(10u);
167-
state.R10.Should().Be(11u);
168-
state.R11.Should().Be(12u);
169-
state.R12.Should().Be(13u);
170-
state.SP.Should().Be(14u);
171-
state.LR.Should().Be(15u);
172-
state.PC.Should().Be(16u);
157+
_ = state.R0.Should().Be(1u);
158+
_ = state.R1.Should().Be(2u);
159+
_ = state.R2.Should().Be(3u);
160+
_ = state.R3.Should().Be(4u);
161+
_ = state.R4.Should().Be(5u);
162+
_ = state.R5.Should().Be(6u);
163+
_ = state.R6.Should().Be(7u);
164+
_ = state.R7.Should().Be(8u);
165+
_ = state.R8.Should().Be(9u);
166+
_ = state.R9.Should().Be(10u);
167+
_ = state.R10.Should().Be(11u);
168+
_ = state.R11.Should().Be(12u);
169+
_ = state.R12.Should().Be(13u);
170+
_ = state.SP.Should().Be(14u);
171+
_ = state.LR.Should().Be(15u);
172+
_ = state.PC.Should().Be(16u);
173173
}
174174

175175
[Fact]
@@ -179,9 +179,9 @@ public void CPSRFlags_DisplayString_FormatsCorrectly()
179179
var allClear = new CPSRFlags(N: false, Z: false, C: false, V: false);
180180
var mixed = new CPSRFlags(N: true, Z: false, C: true, V: false);
181181

182-
allSet.DisplayString.Should().Be("NZCV");
183-
allClear.DisplayString.Should().Be("----");
184-
mixed.DisplayString.Should().Be("N-C-");
182+
_ = allSet.DisplayString.Should().Be("NZCV");
183+
_ = allClear.DisplayString.Should().Be("----");
184+
_ = mixed.DisplayString.Should().Be("N-C-");
185185
}
186186

187187
[Fact]
@@ -191,8 +191,8 @@ public void RegisterState_IsImmutable()
191191
var registers = state.Registers;
192192

193193
// ImmutableArray prevents mutation
194-
registers.Should().BeOfType<ImmutableArray<uint>>();
195-
state.R0.Should().Be(42u);
194+
_ = registers.Should().BeOfType<ImmutableArray<uint>>();
195+
_ = state.R0.Should().Be(42u);
196196
}
197197

198198
[Fact]
@@ -201,8 +201,8 @@ public void WithExpression_CreatesNewInstance()
201201
var original = RegisterState.Create(r0: 42);
202202
var modified = original with { CPSR = new CPSRFlags(N: true, Z: false, C: false, V: false) };
203203

204-
original.CPSR.N.Should().BeFalse();
205-
modified.CPSR.N.Should().BeTrue();
206-
modified.R0.Should().Be(42u);
204+
_ = original.CPSR.N.Should().BeFalse();
205+
_ = modified.CPSR.N.Should().BeTrue();
206+
_ = modified.R0.Should().Be(42u);
207207
}
208208
}

avalonia-gui/ARMEmulator.Tests/Models/VMStateTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public sealed class VMStateTests
1414
[InlineData(VMState.WaitingForInput, false)]
1515
public void IsEditorEditable_ReturnsCorrectValue(VMState state, bool expected)
1616
{
17-
state.IsEditorEditable().Should().Be(expected);
17+
_ = state.IsEditorEditable().Should().Be(expected);
1818
}
1919

2020
[Theory]
@@ -26,7 +26,7 @@ public void IsEditorEditable_ReturnsCorrectValue(VMState state, bool expected)
2626
[InlineData(VMState.WaitingForInput, false)]
2727
public void CanStep_ReturnsCorrectValue(VMState state, bool expected)
2828
{
29-
state.CanStep().Should().Be(expected);
29+
_ = state.CanStep().Should().Be(expected);
3030
}
3131

3232
[Theory]
@@ -38,6 +38,6 @@ public void CanStep_ReturnsCorrectValue(VMState state, bool expected)
3838
[InlineData(VMState.Error, false)]
3939
public void CanPause_ReturnsCorrectValue(VMState state, bool expected)
4040
{
41-
state.CanPause().Should().Be(expected);
41+
_ = state.CanPause().Should().Be(expected);
4242
}
4343
}

0 commit comments

Comments
 (0)