diff --git a/Remora.Commands/Trees/Nodes/CommandNode.cs b/Remora.Commands/Trees/Nodes/CommandNode.cs index 34ac6eb..4d8d133 100644 --- a/Remora.Commands/Trees/Nodes/CommandNode.cs +++ b/Remora.Commands/Trees/Nodes/CommandNode.cs @@ -201,19 +201,13 @@ public bool TryBind var boundParameters = new List(); while (parametersToCheck.Count > 0) { - // The return value of MoveNext is ignored, because empty collections are allowed - _ = enumerator.MoveNext(); - + // Because the current enumerator might be invalid or ended, we'll fix up the key-value pair here + var current = enumerator.MoveNext() + ? enumerator.Current + : KeyValuePair.Create(string.Empty, (IReadOnlyList)Array.Empty()); var matchedParameters = new List(); foreach (var parameterToCheck in parametersToCheck) { - // Because the current enumerator might be invalid or ended, we'll fix up the key-value pair here - var current = enumerator.Current; - if (current.Equals(default(KeyValuePair>))) - { - current = new KeyValuePair>(string.Empty, Array.Empty()); - } - if (!parameterToCheck.Matches(current, out var isFatal, searchOptions)) { if (isFatal)