From 1d20029c7b022ac98610b913278fadc1ae2888b2 Mon Sep 17 00:00:00 2001 From: AntiTcb Date: Wed, 2 Nov 2016 03:01:42 -0400 Subject: [PATCH 1/2] Enumerate over Enum.GetNames to ensure equal value names are not excluded. --- src/Discord.Net.Commands/Readers/EnumTypeReader.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Discord.Net.Commands/Readers/EnumTypeReader.cs b/src/Discord.Net.Commands/Readers/EnumTypeReader.cs index dca845704..4d4c9260b 100644 --- a/src/Discord.Net.Commands/Readers/EnumTypeReader.cs +++ b/src/Discord.Net.Commands/Readers/EnumTypeReader.cs @@ -32,10 +32,12 @@ namespace Discord.Commands var byNameBuilder = ImmutableDictionary.CreateBuilder(); var byValueBuilder = ImmutableDictionary.CreateBuilder(); - foreach (var v in Enum.GetValues(_enumType)) + foreach (var v in Enum.GetNames(_enumType)) { - byNameBuilder.Add(v.ToString().ToLower(), v); - byValueBuilder.Add((T)v, v); + byNameBuilder.Add(v.ToLower(), v); + var parsedValue = (T)Enum.Parse(_enumType, v); + if (!byValueBuilder.ContainsKey(parsedValue)) + byValueBuilder.Add(parsedValue, v); } _enumsByName = byNameBuilder.ToImmutable(); @@ -59,7 +61,7 @@ namespace Discord.Commands if (_enumsByName.TryGetValue(input.ToLower(), out enumValue)) return Task.FromResult(TypeReaderResult.FromSuccess(enumValue)); else - return Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, $"Value is not a {_enumType.Name}")); + return Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, $"Name is not a {_enumType.Name}")); } } } From d8440b764a6e6ee512934d18bde3ee7cf97da2cf Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 12 Nov 2016 00:07:25 -0500 Subject: [PATCH 2/2] Changes requested from review --- src/Discord.Net.Commands/Readers/EnumTypeReader.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord.Net.Commands/Readers/EnumTypeReader.cs b/src/Discord.Net.Commands/Readers/EnumTypeReader.cs index 4d4c9260b..cd8b73896 100644 --- a/src/Discord.Net.Commands/Readers/EnumTypeReader.cs +++ b/src/Discord.Net.Commands/Readers/EnumTypeReader.cs @@ -61,7 +61,7 @@ namespace Discord.Commands if (_enumsByName.TryGetValue(input.ToLower(), out enumValue)) return Task.FromResult(TypeReaderResult.FromSuccess(enumValue)); else - return Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, $"Name is not a {_enumType.Name}")); + return Task.FromResult(TypeReaderResult.FromError(CommandError.ParseFailed, $"Value is not a {_enumType.Name}")); } } }