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;