Ejemplo n.º 1
0
        public static bool IsRefCounterType(ISymbol symbolInfo)
        {
            bool isRefCounter = false;

            if (symbolInfo is ITypeSymbol typeInfo)
            {
                if (RefCounter.IsAssignableTo(typeInfo))
                {
                    isRefCounter = true;
                }
            }
            return(isRefCounter);
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }
Ejemplo n.º 3
0
        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);
                    }
                }
            }
        }