Skip to content

Commit 97238cd

Browse files
Add nullability annotations to some tree nodes.
1 parent eb4a80d commit 97238cd

File tree

9 files changed

+45
-34
lines changed

9 files changed

+45
-34
lines changed

ICSharpCode.ILSpyX/TreeView/SharpTreeNode.cs

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@
2121
using System.Collections.Specialized;
2222
using System.ComponentModel;
2323
using System.Diagnostics;
24+
using System.Diagnostics.CodeAnalysis;
2425
using System.Linq;
2526

26-
#nullable disable
27-
2827
using ICSharpCode.ILSpyX.TreeView.PlatformAbstractions;
2928

3029
namespace ICSharpCode.ILSpyX.TreeView
3130
{
3231
public partial class SharpTreeNode : INotifyPropertyChanged
3332
{
33+
[AllowNull]
3434
protected static ITreeNodeImagesProvider ImagesProvider { get; private set; }
3535
public static void SetImagesProvider(ITreeNodeImagesProvider provider) => ImagesProvider = provider;
3636

37-
SharpTreeNodeCollection modelChildren;
38-
internal SharpTreeNode modelParent;
37+
SharpTreeNodeCollection? modelChildren;
38+
internal SharpTreeNode? modelParent;
3939
bool isVisible = true;
4040

4141
void UpdateIsVisible(bool parentIsVisible, bool updateFlattener)
@@ -53,7 +53,7 @@ void UpdateIsVisible(bool parentIsVisible, bool updateFlattener)
5353
node = node.listParent;
5454
}
5555
// Remember the removed nodes:
56-
List<SharpTreeNode> removedNodes = null;
56+
List<SharpTreeNode>? removedNodes = null;
5757
if (updateFlattener && !newIsVisible)
5858
{
5959
removedNodes = VisibleDescendantsAndSelf().ToList();
@@ -118,19 +118,19 @@ public SharpTreeNodeCollection Children {
118118
}
119119
}
120120

121-
public SharpTreeNode Parent {
121+
public SharpTreeNode? Parent {
122122
get { return modelParent; }
123123
}
124124

125-
public virtual object Text {
125+
public virtual object? Text {
126126
get { return null; }
127127
}
128128

129-
public virtual object Icon {
129+
public virtual object? Icon {
130130
get { return null; }
131131
}
132132

133-
public virtual object ToolTip {
133+
public virtual object? ToolTip {
134134
get { return null; }
135135
}
136136

@@ -199,7 +199,7 @@ public virtual void OnChildrenChanged(NotifyCollectionChangedEventArgs e)
199199
while (removeEnd.modelChildren != null && removeEnd.modelChildren.Count > 0)
200200
removeEnd = removeEnd.modelChildren.Last();
201201

202-
List<SharpTreeNode> removedNodes = null;
202+
List<SharpTreeNode>? removedNodes = null;
203203
int visibleIndexOfRemoval = 0;
204204
if (node.isVisible)
205205
{
@@ -221,11 +221,11 @@ public virtual void OnChildrenChanged(NotifyCollectionChangedEventArgs e)
221221
}
222222
if (e.NewItems != null)
223223
{
224-
SharpTreeNode insertionPos;
224+
SharpTreeNode? insertionPos;
225225
if (e.NewStartingIndex == 0)
226226
insertionPos = null;
227227
else
228-
insertionPos = modelChildren[e.NewStartingIndex - 1];
228+
insertionPos = modelChildren?[e.NewStartingIndex - 1];
229229

230230
foreach (SharpTreeNode node in e.NewItems)
231231
{
@@ -260,7 +260,7 @@ public virtual void OnChildrenChanged(NotifyCollectionChangedEventArgs e)
260260

261261
#region Expanding / LazyLoading
262262

263-
public virtual object ExpandedIcon {
263+
public virtual object? ExpandedIcon {
264264
get { return Icon; }
265265
}
266266

@@ -371,13 +371,13 @@ public IEnumerable<SharpTreeNode> VisibleDescendantsAndSelf()
371371

372372
public IEnumerable<SharpTreeNode> Ancestors()
373373
{
374-
for (SharpTreeNode n = this.Parent; n != null; n = n.Parent)
374+
for (SharpTreeNode? n = this.Parent; n != null; n = n.Parent)
375375
yield return n;
376376
}
377377

378378
public IEnumerable<SharpTreeNode> AncestorsAndSelf()
379379
{
380-
for (SharpTreeNode n = this; n != null; n = n.Parent)
380+
for (SharpTreeNode? n = this; n != null; n = n.Parent)
381381
yield return n;
382382
}
383383

@@ -402,7 +402,7 @@ public bool IsEditing {
402402
}
403403
}
404404

405-
public virtual string LoadEditText()
405+
public virtual string? LoadEditText()
406406
{
407407
return null;
408408
}
@@ -699,7 +699,7 @@ void RaiseIsLastChangedIfNeeded(NotifyCollectionChangedEventArgs e)
699699

700700
#region INotifyPropertyChanged Members
701701

702-
public event PropertyChangedEventHandler PropertyChanged;
702+
public event PropertyChangedEventHandler? PropertyChanged;
703703

704704
public void RaisePropertyChanged(string name)
705705
{
@@ -725,10 +725,10 @@ public virtual void ActivateItemSecondary(IPlatformRoutedEventArgs e)
725725
{
726726
}
727727

728-
public override string ToString()
728+
public override string? ToString()
729729
{
730730
// used for keyboard navigation
731-
object text = this.Text;
731+
object? text = this.Text;
732732
return text != null ? text.ToString() : string.Empty;
733733
}
734734
}

ILSpy/Analyzers/AnalyzerEntityTreeNode.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ namespace ICSharpCode.ILSpy.Analyzers
3535
/// </summary>
3636
public abstract class AnalyzerEntityTreeNode : AnalyzerTreeNode, IMemberTreeNode
3737
{
38-
public abstract IEntity Member { get; }
38+
public abstract IEntity? Member { get; }
3939

4040
public IEntity? SourceMember { get; protected set; }
4141

@@ -65,13 +65,12 @@ public override bool HandleAssemblyListChanged(ICollection<LoadedAssembly> remov
6565
}
6666
foreach (LoadedAssembly asm in removedAssemblies)
6767
{
68-
if (this.Member.ParentModule.MetadataFile == asm.GetMetadataFileOrNull())
68+
if (this.Member.ParentModule!.MetadataFile == asm.GetMetadataFileOrNull())
6969
return false; // remove this node
7070
}
7171
this.Children.RemoveAll(
7272
delegate (SharpTreeNode n) {
73-
AnalyzerTreeNode an = n as AnalyzerTreeNode;
74-
return an == null || !an.HandleAssemblyListChanged(removedAssemblies, addedAssemblies);
73+
return n is not AnalyzerTreeNode an || !an.HandleAssemblyListChanged(removedAssemblies, addedAssemblies);
7574
});
7675
return true;
7776
}

ILSpy/Analyzers/TreeNodes/AnalyzedEventTreeNode.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Diagnostics;
21+
using System.Diagnostics.CodeAnalysis;
2022

2123
using ICSharpCode.Decompiler.TypeSystem;
2224
using ICSharpCode.ILSpy.TreeNodes;
@@ -57,17 +59,18 @@ protected override void LoadChildren()
5759
foreach (var lazy in Analyzers)
5860
{
5961
var analyzer = lazy.Value;
62+
Debug.Assert(analyzer != null);
6063
if (analyzer.Show(analyzedEvent))
6164
{
6265
this.Children.Add(new AnalyzerSearchTreeNode(analyzedEvent, analyzer, lazy.Metadata?.Header));
6366
}
6467
}
6568
}
6669

67-
bool TryFindBackingField(IEvent analyzedEvent, out IField backingField)
70+
bool TryFindBackingField(IEvent analyzedEvent, [NotNullWhen(true)] out IField? backingField)
6871
{
6972
backingField = null;
70-
foreach (var field in analyzedEvent.DeclaringTypeDefinition.GetFields(options: GetMemberOptions.IgnoreInheritedMembers))
73+
foreach (var field in analyzedEvent.DeclaringTypeDefinition?.GetFields(options: GetMemberOptions.IgnoreInheritedMembers) ?? [])
7174
{
7275
if (field.Name == analyzedEvent.Name && field.Accessibility == Decompiler.TypeSystem.Accessibility.Private)
7376
{

ILSpy/Analyzers/TreeNodes/AnalyzedFieldTreeNode.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Diagnostics;
2021

2122
using ICSharpCode.Decompiler.TypeSystem;
2223
using ICSharpCode.ILSpy.TreeNodes;
@@ -45,6 +46,7 @@ protected override void LoadChildren()
4546
foreach (var lazy in Analyzers)
4647
{
4748
var analyzer = lazy.Value;
49+
Debug.Assert(analyzer != null);
4850
if (analyzer.Show(analyzedField))
4951
{
5052
this.Children.Add(new AnalyzerSearchTreeNode(analyzedField, analyzer, lazy.Metadata?.Header));

ILSpy/Analyzers/TreeNodes/AnalyzedMethodTreeNode.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Diagnostics;
2021

2122
using ICSharpCode.Decompiler.TypeSystem;
2223
using ICSharpCode.ILSpy.TreeNodes;
@@ -47,9 +48,10 @@ protected override void LoadChildren()
4748
foreach (var lazy in Analyzers)
4849
{
4950
var analyzer = lazy.Value;
51+
Debug.Assert(analyzer != null);
5052
if (analyzer.Show(analyzedMethod))
5153
{
52-
this.Children.Add(new AnalyzerSearchTreeNode(analyzedMethod, analyzer, lazy.Metadata.Header));
54+
this.Children.Add(new AnalyzerSearchTreeNode(analyzedMethod, analyzer, lazy.Metadata!.Header));
5355
}
5456
}
5557
}

ILSpy/Analyzers/TreeNodes/AnalyzedModuleTreeNode.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
using System;
2020
using System.Collections.Generic;
21+
using System.Diagnostics;
2122
using System.Windows;
2223

2324
using ICSharpCode.Decompiler.TypeSystem;
@@ -44,16 +45,17 @@ public AnalyzedModuleTreeNode(IModule analyzedModule, IEntity? source)
4445

4546
public override object Text => analyzedModule.AssemblyName;
4647

47-
public override object ToolTip => analyzedModule.MetadataFile?.FileName;
48+
public override object? ToolTip => analyzedModule.MetadataFile?.FileName;
4849

4950
protected override void LoadChildren()
5051
{
5152
foreach (var lazy in Analyzers)
5253
{
5354
var analyzer = lazy.Value;
55+
Debug.Assert(analyzer != null);
5456
if (analyzer.Show(analyzedModule))
5557
{
56-
this.Children.Add(new AnalyzerSearchTreeNode(analyzedModule, analyzer, lazy.Metadata.Header));
58+
this.Children.Add(new AnalyzerSearchTreeNode(analyzedModule, analyzer, lazy.Metadata!.Header));
5759
}
5860
}
5961
}
@@ -69,7 +71,7 @@ public override void ActivateItem(IPlatformRoutedEventArgs e)
6971
MessageBus.Send(this, new NavigateToReferenceEventArgs(analyzedModule.MetadataFile));
7072
}
7173

72-
public override IEntity Member => null;
74+
public override IEntity? Member => null;
7375

7476
public override bool HandleAssemblyListChanged(ICollection<LoadedAssembly> removedAssemblies, ICollection<LoadedAssembly> addedAssemblies)
7577
{
@@ -84,8 +86,7 @@ public override bool HandleAssemblyListChanged(ICollection<LoadedAssembly> remov
8486
}
8587
this.Children.RemoveAll(
8688
delegate (SharpTreeNode n) {
87-
AnalyzerTreeNode an = n as AnalyzerTreeNode;
88-
return an == null || !an.HandleAssemblyListChanged(removedAssemblies, addedAssemblies);
89+
return n is not AnalyzerTreeNode an || !an.HandleAssemblyListChanged(removedAssemblies, addedAssemblies);
8990
});
9091
return true;
9192
}

ILSpy/Analyzers/TreeNodes/AnalyzedPropertyTreeNode.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Diagnostics;
2021

2122
using ICSharpCode.Decompiler.TypeSystem;
2223
using ICSharpCode.ILSpy.TreeNodes;
@@ -53,9 +54,10 @@ protected override void LoadChildren()
5354
foreach (var lazy in Analyzers)
5455
{
5556
var analyzer = lazy.Value;
57+
Debug.Assert(analyzer != null);
5658
if (analyzer.Show(analyzedProperty))
5759
{
58-
this.Children.Add(new AnalyzerSearchTreeNode(analyzedProperty, analyzer, lazy.Metadata.Header));
60+
this.Children.Add(new AnalyzerSearchTreeNode(analyzedProperty, analyzer, lazy.Metadata!.Header));
5961
}
6062
}
6163
}

ILSpy/Analyzers/TreeNodes/AnalyzedTypeTreeNode.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
// DEALINGS IN THE SOFTWARE.
1818

1919
using System;
20+
using System.Diagnostics;
2021

2122
using ICSharpCode.Decompiler.TypeSystem;
2223
using ICSharpCode.ILSpy.TreeNodes;
@@ -45,9 +46,10 @@ protected override void LoadChildren()
4546
foreach (var lazy in Analyzers)
4647
{
4748
var analyzer = lazy.Value;
49+
Debug.Assert(analyzer != null);
4850
if (analyzer.Show(analyzedType))
4951
{
50-
this.Children.Add(new AnalyzerSearchTreeNode(analyzedType, analyzer, lazy.Metadata.Header));
52+
this.Children.Add(new AnalyzerSearchTreeNode(analyzedType, analyzer, lazy.Metadata!.Header));
5153
}
5254
}
5355
}

ILSpy/AssemblyTree/AssemblyTreeModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -602,7 +602,7 @@ public void SelectNodes(IEnumerable<SharpTreeNode> nodes)
602602
List<string> path = new List<string>();
603603
while (node.Parent != null)
604604
{
605-
path.Add(node.ToString());
605+
path.Add(node.ToString()!);
606606
node = node.Parent;
607607
}
608608
path.Reverse();

0 commit comments

Comments
 (0)