From 9d71daec1b9322035cba67a1d86c1660cd0fa91b Mon Sep 17 00:00:00 2001 From: Atif Aziz Date: Wed, 17 Mar 2021 22:36:10 +0100 Subject: [PATCH] Fix dictionary bug when null key has null value --- MoreLinq.Test/ScanByTest.cs | 15 +++++++++++++++ MoreLinq/Collections/Dictionary.cs | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/MoreLinq.Test/ScanByTest.cs b/MoreLinq.Test/ScanByTest.cs index 7a11a698b..ab5098389 100644 --- a/MoreLinq.Test/ScanByTest.cs +++ b/MoreLinq.Test/ScanByTest.cs @@ -115,6 +115,21 @@ public void ScanByWithSomeNullKeys() KeyValuePair.Create("foo" , 1)); } + [Test] + public void ScanByWithNullSeed() + { + var nil = (object)null; + var source = new[] { "foo", null, "bar", null, "baz" }; + var result = source.ScanBy(c => c, k => nil, (i, k, e) => nil); + + result.AssertSequenceEqual( + KeyValuePair.Create("foo" , nil), + KeyValuePair.Create((string)null, nil), + KeyValuePair.Create("bar" , nil), + KeyValuePair.Create((string)null, nil), + KeyValuePair.Create("baz" , nil)); + } + [Test] public void ScanByDoesNotIterateUnnecessaryElements() { diff --git a/MoreLinq/Collections/Dictionary.cs b/MoreLinq/Collections/Dictionary.cs index 796fee0b5..ef2bf08ab 100644 --- a/MoreLinq/Collections/Dictionary.cs +++ b/MoreLinq/Collections/Dictionary.cs @@ -56,7 +56,7 @@ public bool TryGetValue(TKey key, [MaybeNullWhen(false)] out TValue value) { switch (_null) { - case (true, {} v): + case (true, var v): value = v; return true; case (false, _):