Beispiel #1
0
        /// <summary>
        /// Swap reference expression to built in type.
        /// </summary>
        /// <param name="referenceExpression">
        /// The reference expression.
        /// </param>
        private static void SwapReferenceExpressionToBuiltInType(IReferenceExpression referenceExpression)
        {
            IPsiModule        project             = referenceExpression.GetPsiModule();
            ICSharpExpression qualifierExpression = referenceExpression.QualifierExpression;

            if (qualifierExpression != null)
            {
                using (WriteLockCookie.Create(true))
                {
                    foreach (string[] builtInType in BuiltInTypes)
                    {
                        string text = qualifierExpression.GetText();
                        if (text == builtInType[0] || text == builtInType[1])
                        {
                            ICSharpExpression expression = CSharpElementFactory.GetInstance(project).CreateExpression(builtInType[2], new object[0]);
                            referenceExpression.SetQualifierExpression(expression);
                            break;
                        }
                    }
                }
            }
        }
        [NotNull] private static ISymbolTable GetStaticMethodsSymbolTable(
            [NotNull] IReferenceExpression referenceExpression, [NotNull] IType qualifierType, [NotNull] IType firstArgumentType)
        {
            var symbolTable     = EmptySymbolTable.INSTANCE;
            var typesToTraverse = DeclaredTypesCollector.Accept(qualifierType);
            var psiModule       = referenceExpression.GetPsiModule();

            foreach (var type in typesToTraverse)
            {
                symbolTable = symbolTable.Merge(type.GetSymbolTable(psiModule));
            }

            var existingArgumentsCount = GetExistingArgumentsCount(referenceExpression);

            // prepare symbol table of suitable static methods
            var accessFilter        = new AccessRightsFilter(referenceExpression.Reference.GetAccessContext());
            var qualifierExpression = referenceExpression.QualifierExpression.NotNull("qualifierExpression != null");

            var staticMethodsFilter = new StaticMethodsByFirstArgumentTypeFilter(firstArgumentType, qualifierExpression, existingArgumentsCount);
            var filteredSymbolTable = symbolTable.Filter(staticMethodsFilter, OverriddenFilter.INSTANCE, accessFilter);

            return(filteredSymbolTable);
        }
        /// <summary>
        /// Swap reference expression to built in type.
        /// </summary>
        /// <param name="referenceExpression">
        /// The reference expression.
        /// </param>
        private static void SwapReferenceExpressionToBuiltInType(IReferenceExpression referenceExpression)
        {
            IPsiModule project = referenceExpression.GetPsiModule();
            ICSharpExpression qualifierExpression = referenceExpression.QualifierExpression;

            if (qualifierExpression != null)
            {
                using (WriteLockCookie.Create(true))
                {
                    foreach (string[] builtInType in BuiltInTypes)
                    {
                        string text = qualifierExpression.GetText();
                        if (text == builtInType[0] || text == builtInType[1])
                        {
                            ICSharpExpression expression = CSharpElementFactory.GetInstance(project).CreateExpression(builtInType[2], new object[0]);
                            referenceExpression.SetQualifierExpression(expression);
                            break;
                        }
                    }
                }
            }
        }