From cd648ba7d0cf4ee68ed3468cf7758689dab0b5d3 Mon Sep 17 00:00:00 2001 From: Joe4evr Date: Fri, 15 Dec 2017 09:45:48 +0100 Subject: [PATCH] Quick refactoring --- src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs | 8 ++++---- src/Discord.Net.Analyzers/SymbolExtensions.cs | 7 ++----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs b/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs index 995bd3f15..473bcee8e 100644 --- a/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs +++ b/src/Discord.Net.Analyzers/GuildAccessAnalyzer.cs @@ -39,9 +39,9 @@ namespace Discord.Analyzers return; // Bail out if the containing class doesn't derive from 'ModuleBase' - var classNode = context.Node.FirstAncestorOrSelf(); - var classSymbol = context.SemanticModel.GetDeclaredSymbol(classNode); - if (!classSymbol.DerivesFromModuleBase()) + var typeNode = context.Node.FirstAncestorOrSelf(); + var typeSymbol = context.SemanticModel.GetDeclaredSymbol(typeNode); + if (!typeSymbol.DerivesFromModuleBase()) return; // Bail out if the containing method isn't marked with '[Command]' @@ -54,7 +54,7 @@ namespace Discord.Analyzers // Is the '[RequireContext]' attribute not applied to either the // method or the class, or its argument isn't 'ContextType.Guild'? var ctxAttribute = methodAttributes.SingleOrDefault(_attributeDataPredicate) - ?? classSymbol.GetAttributes().SingleOrDefault(_attributeDataPredicate); + ?? typeSymbol.GetAttributes().SingleOrDefault(_attributeDataPredicate); if (ctxAttribute == null || ctxAttribute.ConstructorArguments.Any(arg => !arg.Value.Equals((int)ContextType.Guild))) { diff --git a/src/Discord.Net.Analyzers/SymbolExtensions.cs b/src/Discord.Net.Analyzers/SymbolExtensions.cs index fa7bc30a6..680de66b5 100644 --- a/src/Discord.Net.Analyzers/SymbolExtensions.cs +++ b/src/Discord.Net.Analyzers/SymbolExtensions.cs @@ -8,15 +8,12 @@ namespace Discord.Analyzers { private static readonly string _moduleBaseName = typeof(ModuleBase<>).Name; - public static bool DerivesFromModuleBase(this INamedTypeSymbol symbol) + public static bool DerivesFromModuleBase(this ITypeSymbol symbol) { - var bType = symbol.BaseType; - while (bType != null) + for (var bType = symbol.BaseType; bType != null; bType = bType.BaseType) { if (bType.MetadataName == _moduleBaseName) return true; - - bType = bType.BaseType; } return false; }