public static bool IsRefCounterType(ISymbol symbolInfo) { bool isRefCounter = false; if (symbolInfo is ITypeSymbol typeInfo) { if (RefCounter.IsAssignableTo(typeInfo)) { isRefCounter = true; } } return(isRefCounter); }
private static void HandleCreation(SyntaxNodeAnalysisContext context, ObjectCreationExpressionSyntax invocation) { var semanticModle = context.SemanticModel; var canel = context.CancellationToken; var symbolInfo = semanticModle.GetSymbolInfo(invocation.Type, canel); if (symbolInfo.Symbol is ITypeSymbol typeSymbol) { if (RefCounter.IsAssignableTo(typeSymbol)) { ProcessCreation(invocation, context); } } }
private static void HandleInvocation(SyntaxNodeAnalysisContext context, InvocationExpressionSyntax invocation) { var semanticModle = context.SemanticModel; var canel = context.CancellationToken; var symbolInfo = semanticModle.GetSymbolInfo(invocation.Expression, canel); if (symbolInfo.Symbol is IMethodSymbol methodSymbol) { if (RefCounter.IsAssignableTo(methodSymbol.ReturnType)) { if (!AssignmentUtils.IsGetMethod(invocation, context.SemanticModel, context.CancellationToken)) { ProcessCreation(invocation, context); } } } }