From b52d52ab67c2c73809e4d1781ce88bf84e47d520 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 2 Jan 2024 15:30:21 +0100 Subject: [PATCH] Make expression nodes sealed where possible. --- src/Avalonia.Base/Data/Core/ExpressionNodes/ArrayIndexerNode.cs | 2 +- .../Data/Core/ExpressionNodes/AvaloniaPropertyAccessorNode.cs | 2 +- src/Avalonia.Base/Data/Core/ExpressionNodes/DataContextNode.cs | 2 +- .../Data/Core/ExpressionNodes/FuncTransformNode.cs | 2 +- .../Data/Core/ExpressionNodes/LogicalAncestorElementNode.cs | 2 +- src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalNotNode.cs | 2 +- .../Data/Core/ExpressionNodes/MethodCommandNode.cs | 2 +- src/Avalonia.Base/Data/Core/ExpressionNodes/NamedElementNode.cs | 2 +- .../Data/Core/ExpressionNodes/ParentDataContextNode.cs | 2 +- .../Data/Core/ExpressionNodes/PropertyAccessorNode.cs | 2 +- .../Reflection/DynamicPluginPropertyAccessorNode.cs | 2 +- .../Core/ExpressionNodes/Reflection/DynamicPluginStreamNode.cs | 2 +- .../Core/ExpressionNodes/Reflection/ReflectionIndexerNode.cs | 2 +- .../Core/ExpressionNodes/Reflection/ReflectionTypeCastNode.cs | 2 +- src/Avalonia.Base/Data/Core/ExpressionNodes/StreamNode.cs | 2 +- .../Data/Core/ExpressionNodes/TemplatedParentNode.cs | 2 +- .../Data/Core/ExpressionNodes/VisualAncestorElementNode.cs | 2 +- 17 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/ArrayIndexerNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/ArrayIndexerNode.cs index e7562bbc78..a347a1ab72 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/ArrayIndexerNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/ArrayIndexerNode.cs @@ -8,7 +8,7 @@ namespace Avalonia.Data.Core.ExpressionNodes; /// A node in an which accesses an array with integer /// indexers. /// -internal class ArrayIndexerNode : ExpressionNode, ISettableNode +internal sealed class ArrayIndexerNode : ExpressionNode, ISettableNode { private readonly int[] _indexes; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/AvaloniaPropertyAccessorNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/AvaloniaPropertyAccessorNode.cs index 64155a348a..d996053c2c 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/AvaloniaPropertyAccessorNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/AvaloniaPropertyAccessorNode.cs @@ -4,7 +4,7 @@ using System.Text; namespace Avalonia.Data.Core.ExpressionNodes; -internal class AvaloniaPropertyAccessorNode : ExpressionNode, ISettableNode +internal sealed class AvaloniaPropertyAccessorNode : ExpressionNode, ISettableNode { private readonly EventHandler _onValueChanged; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/DataContextNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/DataContextNode.cs index 3d0dc6eb58..14e21d4192 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/DataContextNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/DataContextNode.cs @@ -2,7 +2,7 @@ namespace Avalonia.Data.Core.ExpressionNodes; -internal class DataContextNode : DataContextNodeBase +internal sealed class DataContextNode : DataContextNodeBase { protected override void OnSourceChanged(object source, Exception? dataValidationError) { diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/FuncTransformNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/FuncTransformNode.cs index 0bd0b52df6..7ad0b7ee97 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/FuncTransformNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/FuncTransformNode.cs @@ -7,7 +7,7 @@ namespace Avalonia.Data.Core.ExpressionNodes; /// A node in an which uses a function to transform its /// value. /// -internal class FuncTransformNode : ExpressionNode +internal sealed class FuncTransformNode : ExpressionNode { private readonly Func _transform; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalAncestorElementNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalAncestorElementNode.cs index a280fbbc4a..ccf6c76f90 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalAncestorElementNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalAncestorElementNode.cs @@ -5,7 +5,7 @@ using Avalonia.Reactive; namespace Avalonia.Data.Core.ExpressionNodes; -internal class LogicalAncestorElementNode : SourceNode +internal sealed class LogicalAncestorElementNode : SourceNode { private readonly Type? _ancestorType; private readonly int _ancestorLevel; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalNotNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalNotNode.cs index 62e4ec0ac2..bb65ac16dd 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalNotNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/LogicalNotNode.cs @@ -5,7 +5,7 @@ using System.Text; namespace Avalonia.Data.Core.ExpressionNodes; -internal class LogicalNotNode : ExpressionNode, ISettableNode +internal sealed class LogicalNotNode : ExpressionNode, ISettableNode { public override void BuildString(StringBuilder builder) { diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/MethodCommandNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/MethodCommandNode.cs index c54061af72..6eccd52381 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/MethodCommandNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/MethodCommandNode.cs @@ -10,7 +10,7 @@ namespace Avalonia.Data.Core.ExpressionNodes; /// A node in an which converts methods to an /// . /// -internal class MethodCommandNode : ExpressionNode +internal sealed class MethodCommandNode : ExpressionNode { private readonly string _methodName; private readonly Action _execute; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/NamedElementNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/NamedElementNode.cs index 0c96cc2ea5..5f7b965148 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/NamedElementNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/NamedElementNode.cs @@ -6,7 +6,7 @@ using Avalonia.Reactive; namespace Avalonia.Data.Core.ExpressionNodes; -internal class NamedElementNode : SourceNode +internal sealed class NamedElementNode : SourceNode { private readonly WeakReference _nameScope; private readonly string _name; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/ParentDataContextNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/ParentDataContextNode.cs index 1aa03e1dba..76820e2129 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/ParentDataContextNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/ParentDataContextNode.cs @@ -6,7 +6,7 @@ namespace Avalonia.Data.Core.ExpressionNodes; /// A node in an which selects the value of the visual /// parent's DataContext. /// -internal class ParentDataContextNode : DataContextNodeBase +internal sealed class ParentDataContextNode : DataContextNodeBase { private static readonly AvaloniaObject s_unset = new(); private AvaloniaObject? _parent = s_unset; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/PropertyAccessorNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/PropertyAccessorNode.cs index 21f1deea48..250886faca 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/PropertyAccessorNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/PropertyAccessorNode.cs @@ -10,7 +10,7 @@ namespace Avalonia.Data.Core.ExpressionNodes; /// A node in the binding path of an that reads a property /// via a predefined . /// -internal class PropertyAccessorNode : ExpressionNode, IPropertyAccessorNode, ISettableNode +internal sealed class PropertyAccessorNode : ExpressionNode, IPropertyAccessorNode, ISettableNode { private readonly Action _onValueChanged; private readonly IPropertyAccessorPlugin _plugin; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginPropertyAccessorNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginPropertyAccessorNode.cs index 8fc2b6d878..7ebac51e8c 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginPropertyAccessorNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginPropertyAccessorNode.cs @@ -12,7 +12,7 @@ namespace Avalonia.Data.Core.ExpressionNodes.Reflection; /// . /// [RequiresUnreferencedCode(TrimmingMessages.ExpressionNodeRequiresUnreferencedCodeMessage)] -internal class DynamicPluginPropertyAccessorNode : ExpressionNode, IPropertyAccessorNode, ISettableNode +internal sealed class DynamicPluginPropertyAccessorNode : ExpressionNode, IPropertyAccessorNode, ISettableNode { private readonly Action _onValueChanged; private IPropertyAccessor? _accessor; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginStreamNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginStreamNode.cs index b609e296ab..c2f4b9d542 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginStreamNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/DynamicPluginStreamNode.cs @@ -7,7 +7,7 @@ using Avalonia.Reactive; namespace Avalonia.Data.Core.ExpressionNodes.Reflection; [RequiresUnreferencedCode(TrimmingMessages.ExpressionNodeRequiresUnreferencedCodeMessage)] -internal class DynamicPluginStreamNode : ExpressionNode +internal sealed class DynamicPluginStreamNode : ExpressionNode { private IDisposable? _subscription; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionIndexerNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionIndexerNode.cs index 2d5eb58fe8..16b9cda490 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionIndexerNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionIndexerNode.cs @@ -13,7 +13,7 @@ using Avalonia.Utilities; namespace Avalonia.Data.Core.ExpressionNodes.Reflection; [RequiresUnreferencedCode(TrimmingMessages.ReflectionBindingRequiresUnreferencedCodeMessage)] -internal class ReflectionIndexerNode : CollectionNodeBase, ISettableNode +internal sealed class ReflectionIndexerNode : CollectionNodeBase, ISettableNode { private static readonly BindingFlags InstanceFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly; private MethodInfo? _getter; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionTypeCastNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionTypeCastNode.cs index 83e930b2bd..c973d9d236 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionTypeCastNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/Reflection/ReflectionTypeCastNode.cs @@ -6,7 +6,7 @@ namespace Avalonia.Data.Core.ExpressionNodes.Reflection; /// /// A node in an which casts a value using reflection. /// -internal class ReflectionTypeCastNode : ExpressionNode +internal sealed class ReflectionTypeCastNode : ExpressionNode { private readonly Type _targetType; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/StreamNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/StreamNode.cs index 2e3b78f7f3..19e5a58828 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/StreamNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/StreamNode.cs @@ -4,7 +4,7 @@ using Avalonia.Data.Core.Plugins; namespace Avalonia.Data.Core.ExpressionNodes; -internal class StreamNode : ExpressionNode, IObserver +internal sealed class StreamNode : ExpressionNode, IObserver { private IStreamPlugin _plugin; private IDisposable? _subscription; diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/TemplatedParentNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/TemplatedParentNode.cs index 15705157f3..6e81a01cee 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/TemplatedParentNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/TemplatedParentNode.cs @@ -3,7 +3,7 @@ using System.Text; namespace Avalonia.Data.Core.ExpressionNodes; -internal class TemplatedParentNode : SourceNode +internal sealed class TemplatedParentNode : SourceNode { public override void BuildString(StringBuilder builder) { diff --git a/src/Avalonia.Base/Data/Core/ExpressionNodes/VisualAncestorElementNode.cs b/src/Avalonia.Base/Data/Core/ExpressionNodes/VisualAncestorElementNode.cs index 15f1bf7375..4bca2c8cb4 100644 --- a/src/Avalonia.Base/Data/Core/ExpressionNodes/VisualAncestorElementNode.cs +++ b/src/Avalonia.Base/Data/Core/ExpressionNodes/VisualAncestorElementNode.cs @@ -5,7 +5,7 @@ using Avalonia.VisualTree; namespace Avalonia.Data.Core.ExpressionNodes; -internal class VisualAncestorElementNode : SourceNode +internal sealed class VisualAncestorElementNode : SourceNode { private readonly Type? _ancestorType; private readonly int _ancestorLevel;