Ensure aliases are built in the correct order

Fixes #462
This commit is contained in:
FiniteReality
2017-01-15 21:19:08 +00:00
parent cf2596db58
commit c2b50b56d8

View File

@@ -40,16 +40,17 @@ namespace Discord.Commands
private static IEnumerable<string> BuildAliases(ModuleBuilder builder, CommandService service) private static IEnumerable<string> BuildAliases(ModuleBuilder builder, CommandService service)
{ {
var result = builder.Aliases.ToList(); var result = builder.Aliases.ToList();
var builderStack = new Stack<ModuleBuilder>(); var builderQueue = new Queue<ModuleBuilder>();
var parent = builder; var parent = builder;
while ((parent = parent.Parent) != null) while ((parent = parent.Parent) != null)
builderStack.Push(parent); builderQueue.Enqueue(parent);
while (builderStack.Count > 0) while (builderQueue.Count > 0)
{ {
var level = builderStack.Pop(); var level = builderQueue.Dequeue();
result = result.Permutate(level.Aliases, (first, second) => // permute in reverse because we want to *prefix* our aliases
result = level.Aliases.Permutate(result, (first, second) =>
{ {
if (first == "") if (first == "")
return second; return second;