Removed ParamList null checks

This commit is contained in:
RogueException
2016-08-21 21:47:32 -03:00
parent 40da0241c8
commit f6d8659a2e
4 changed files with 13 additions and 24 deletions

View File

@@ -96,17 +96,13 @@ namespace Discord.Commands
argList[i] = parseResult.ArgValues[i].Values.First().Value; argList[i] = parseResult.ArgValues[i].Values.First().Value;
} }
object[] paramList = null; var paramList = new object[parseResult.ParamValues.Count];
if (parseResult.ParamValues != null)
{
paramList = new object[parseResult.ParamValues.Count];
for (int i = 0; i < parseResult.ParamValues.Count; i++) for (int i = 0; i < parseResult.ParamValues.Count; i++)
{ {
if (!parseResult.ParamValues[i].IsSuccess) if (!parseResult.ParamValues[i].IsSuccess)
return Task.FromResult(ExecuteResult.FromError(parseResult.ParamValues[i])); return Task.FromResult(ExecuteResult.FromError(parseResult.ParamValues[i]));
paramList[i] = parseResult.ParamValues[i].Values.First().Value; paramList[i] = parseResult.ParamValues[i].Values.First().Value;
} }
}
return Execute(msg, argList, paramList); return Execute(msg, argList, paramList);
} }

View File

@@ -1,5 +1,4 @@
using System.Collections.Immutable;
using System.Collections.Immutable;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
@@ -22,9 +21,8 @@ namespace Discord.Commands
var curPart = ParserPart.None; var curPart = ParserPart.None;
int lastArgEndPos = int.MinValue; int lastArgEndPos = int.MinValue;
var argList = ImmutableArray.CreateBuilder<TypeReaderResult>(); var argList = ImmutableArray.CreateBuilder<TypeReaderResult>();
ImmutableArray<TypeReaderResult>.Builder paramList = ImmutableArray.CreateBuilder<TypeReaderResult>(); var paramList = ImmutableArray.CreateBuilder<TypeReaderResult>();
bool isEscaping = false; bool isEscaping = false;
bool hasMultipleMatches = false;
char c; char c;
for (int curPos = startPos; curPos <= endPos; curPos++) for (int curPos = startPos; curPos <= endPos; curPos++)
@@ -111,13 +109,8 @@ namespace Discord.Commands
return ParseResult.FromError(CommandError.BadArgCount, "The input text has too many parameters."); return ParseResult.FromError(CommandError.BadArgCount, "The input text has too many parameters.");
var typeReaderResult = await curParam.Parse(context, argString).ConfigureAwait(false); var typeReaderResult = await curParam.Parse(context, argString).ConfigureAwait(false);
if (!typeReaderResult.IsSuccess) if (!typeReaderResult.IsSuccess && typeReaderResult.Error != CommandError.MultipleMatches)
{
if (typeReaderResult.Error == CommandError.MultipleMatches)
hasMultipleMatches = true;
else
return ParseResult.FromError(typeReaderResult); return ParseResult.FromError(typeReaderResult);
}
if (curParam.IsMultiple) if (curParam.IsMultiple)
{ {
@@ -162,7 +155,7 @@ namespace Discord.Commands
argList.Add(TypeReaderResult.FromSuccess(param.DefaultValue)); argList.Add(TypeReaderResult.FromSuccess(param.DefaultValue));
} }
return ParseResult.FromSuccess(argList.ToImmutable(), paramList?.ToImmutable()); return ParseResult.FromSuccess(argList.ToImmutable(), paramList.ToImmutable());
} }
} }
} }

View File

@@ -217,7 +217,7 @@ namespace Discord.Commands
{ {
case MultiMatchHandling.Best: case MultiMatchHandling.Best:
argList = parseResult.ArgValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToArray(); argList = parseResult.ArgValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToArray();
paramList = parseResult.ParamValues?.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToArray(); paramList = parseResult.ParamValues.Select(x => x.Values.OrderByDescending(y => y.Score).First()).ToArray();
parseResult = ParseResult.FromSuccess(argList, paramList); parseResult = ParseResult.FromSuccess(argList, paramList);
break; break;
} }

View File

@@ -57,6 +57,6 @@ namespace Discord.Commands
=> new ParseResult(null, null, result.Error, result.ErrorReason); => new ParseResult(null, null, result.Error, result.ErrorReason);
public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}"; public override string ToString() => IsSuccess ? "Success" : $"{Error}: {ErrorReason}";
private string DebuggerDisplay => IsSuccess ? $"Success ({ArgValues.Count}{(ParamValues != null ? $" +{ParamValues.Count} Values" : "")})" : $"{Error}: {ErrorReason}"; private string DebuggerDisplay => IsSuccess ? $"Success ({ArgValues.Count}{(ParamValues.Count > 0 ? $" +{ParamValues.Count} Values" : "")})" : $"{Error}: {ErrorReason}";
} }
} }