| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- using Microsoft.CodeAnalysis;
- namespace Lua.SourceGenerator;
- internal static class SymbolExtensions
- {
- public static bool ContainsAttribute(this ISymbol symbol, INamedTypeSymbol attribtue)
- {
- return symbol.GetAttributes().Any(x => SymbolEqualityComparer.Default.Equals(x.AttributeClass, attribtue));
- }
- public static AttributeData? GetAttribute(this ISymbol symbol, INamedTypeSymbol attribtue)
- {
- return symbol.GetAttributes().FirstOrDefault(x => SymbolEqualityComparer.Default.Equals(x.AttributeClass, attribtue));
- }
- public static IEnumerable<ISymbol> GetAllMembers(this INamedTypeSymbol symbol, bool withoutOverride = true)
- {
- // Iterate Parent -> Derived
- if (symbol.BaseType != null)
- {
- foreach (var item in GetAllMembers(symbol.BaseType))
- {
- // override item already iterated in parent type
- if (!withoutOverride || !item.IsOverride)
- {
- yield return item;
- }
- }
- }
- foreach (var item in symbol.GetMembers())
- {
- if (!withoutOverride || !item.IsOverride)
- {
- yield return item;
- }
- }
- }
- }
|