From 5815738ef2156b64f1dfc8d2d0a2e76c3f3873e1 Mon Sep 17 00:00:00 2001 From: andrewimcclement <33556313+andrewimcclement@users.noreply.github.com> Date: Tue, 19 Jul 2022 17:21:41 +0100 Subject: [PATCH 1/2] Handle left Token being null in == and !=. --- src/System.CommandLine/Parsing/Token.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/System.CommandLine/Parsing/Token.cs b/src/System.CommandLine/Parsing/Token.cs index 7b656c9886..167a9b10eb 100644 --- a/src/System.CommandLine/Parsing/Token.cs +++ b/src/System.CommandLine/Parsing/Token.cs @@ -66,7 +66,7 @@ internal Token(string? value, TokenType type, Symbol? symbol, int position) /// The first . /// The second . /// if the objects are equal. - public static bool operator ==(Token left, Token right) => left.Equals(right); + public static bool operator ==(Token left, Token right) => left?.Equals(right) ?? right is null; /// /// Checks if two specified instances have different values. @@ -74,6 +74,6 @@ internal Token(string? value, TokenType type, Symbol? symbol, int position) /// The first . /// The second . /// if the objects are not equal. - public static bool operator !=(Token left, Token right) => !left.Equals(right); + public static bool operator !=(Token left, Token right) => !(left == right); } } From a49e856127b20ea8e8e210d041b80e5d77ffaf2f Mon Sep 17 00:00:00 2001 From: andrewimcclement <33556313+andrewimcclement@users.noreply.github.com> Date: Tue, 19 Jul 2022 17:27:44 +0100 Subject: [PATCH 2/2] Mark Token as sealed. --- src/System.CommandLine/Parsing/Token.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/System.CommandLine/Parsing/Token.cs b/src/System.CommandLine/Parsing/Token.cs index 167a9b10eb..85d2187359 100644 --- a/src/System.CommandLine/Parsing/Token.cs +++ b/src/System.CommandLine/Parsing/Token.cs @@ -6,7 +6,7 @@ namespace System.CommandLine.Parsing /// /// A unit of significant text on the command line. /// - public class Token : IEquatable + public sealed class Token : IEquatable { internal const int ImplicitPosition = -1;