Add ConsoleKey.None and ConsoleModifiers.None (#83114)
authorImmo Landwerth <immol@microsoft.com>
Wed, 8 Mar 2023 19:43:41 +0000 (11:43 -0800)
committerGitHub <noreply@github.com>
Wed, 8 Mar 2023 19:43:41 +0000 (11:43 -0800)
This fixes #79868.

src/libraries/System.Console/ref/System.Console.cs
src/libraries/System.Console/src/System/ConsoleKey.cs
src/libraries/System.Console/src/System/ConsoleModifiers.cs
src/libraries/System.Console/src/System/IO/KeyParser.cs
src/libraries/System.Console/tests/ConsoleKeyInfoTests.cs

index dfcce82..273290d 100644 (file)
@@ -228,6 +228,7 @@ namespace System
     }
     public enum ConsoleKey
     {
+        None = 0,
         Backspace = 8,
         Tab = 9,
         Clear = 12,
@@ -389,6 +390,7 @@ namespace System
     [System.FlagsAttribute]
     public enum ConsoleModifiers
     {
+        None = 0,
         Alt = 1,
         Shift = 2,
         Control = 4,
index 47373f9..603c285 100644 (file)
@@ -5,6 +5,7 @@ namespace System
 {
     public enum ConsoleKey
     {
+        None = 0x0,
         Backspace = 0x8,
         Tab = 0x9,
         Clear = 0xC,
index f8395dc..bef4a05 100644 (file)
@@ -6,6 +6,7 @@ namespace System
     [Flags]
     public enum ConsoleModifiers
     {
+        None = 0,
         Alt = 1,
         Shift = 2,
         Control = 4
index 1167d00..fd09e7f 100644 (file)
@@ -63,7 +63,7 @@ internal static class KeyParser
         }
 
         Dictionary<ReadOnlyMemory<char>, ConsoleKeyInfo> terminfoDb = terminalFormatStrings.KeyFormatToConsoleKey; // the most important source of truth
-        ConsoleModifiers modifiers = 0;
+        ConsoleModifiers modifiers = ConsoleModifiers.None;
         ConsoleKey key;
 
         // Is it a three character sequence? (examples: '^[[H' (Home), '^[OP' (F1))
index c441045..6b9cf61 100644 (file)
@@ -12,9 +12,19 @@ namespace System.Tests
         public void Ctor_DefaultCtor_PropertiesReturnDefaults()
         {
             ConsoleKeyInfo cki = new ConsoleKeyInfo();
-            Assert.Equal(default(ConsoleKey), cki.Key);
+            Assert.Equal(ConsoleKey.None, cki.Key);
             Assert.Equal(default(char), cki.KeyChar);
-            Assert.Equal(default(ConsoleModifiers), cki.Modifiers);
+            Assert.Equal(ConsoleModifiers.None, cki.Modifiers);
+        }
+
+        [Fact]
+        public void Ctor_ValueCtor_ReturnsNoneForDefault()
+        {
+            ConsoleKeyInfo cki = new ConsoleKeyInfo(';', default(ConsoleKey), false, false, false);
+
+            Assert.Equal(ConsoleKey.None, cki.Key);
+            Assert.Equal(';', cki.KeyChar);
+            Assert.Equal(ConsoleModifiers.None, cki.Modifiers);
         }
 
         [Theory]