public static string GetQualifiedName([NotNull] this IReferenceName referenceName)
        {
            var qualifier = referenceName.Qualifier;
            var shortName = referenceName.ShortName;

            return(qualifier == null
        ? shortName
        : qualifier.QualifiedName + "." + shortName);
        }
Example #2
0
        private static string GetNamespaceFromUsingDirective([NotNull] ITreeNode usingDirective)
        {
            IReferenceName namespaceNode = (usingDirective as IUsingDirective).GetUsedNamespaceNode();

            if (namespaceNode == null)
            {
                throw new FailPsiTransactionException("Cannot create namespace alias.");
            }
            return(namespaceNode.QualifiedName);
        }
Example #3
0
        private void EndNamespaceQualifier([CanBeNull] IReferenceName referenceName)
        {
            if (referenceName == null)
            {
                return;
            }

            EndNamespaceQualifier(referenceName.Qualifier);
            Builder.EndPart();
        }
Example #4
0
        private void StartNamespaceQualifier([CanBeNull] IReferenceName referenceName)
        {
            if (referenceName == null)
            {
                return;
            }

            StartNamespaceQualifier(referenceName.Qualifier);
            var qualifierName = Builder.Intern(referenceName.ShortName);

            Builder.StartPart(new QualifiedNamespacePart(referenceName.Identifier.GetTreeStartOffset(), qualifierName));
        }
        public static IReferenceName GetFirstQualifier([NotNull] this IReferenceName referenceName)
        {
            var qualifier = referenceName.Qualifier;

            while (qualifier != null)
            {
                referenceName = qualifier;
                qualifier     = referenceName.Qualifier;
            }

            return(referenceName);
        }
        public static IList <string> GetNames([CanBeNull] this IReferenceName referenceName)
        {
            var result = new List <string>();

            while (referenceName != null)
            {
                var shortName = referenceName.ShortName;
                if (shortName.IsEmpty() || shortName == SharedImplUtil.MISSING_DECLARATION_NAME)
                {
                    break;
                }

                result.Insert(0, shortName);
                referenceName = referenceName.Qualifier;
            }

            return(result);
        }
        private static (NamedElementKinds?, IReferenceName) GetKindAndDeclaration(ILocalVariableDeclaration localVarDeclaration, IFieldDeclaration fieldDeclaration,
                                                                                  IRegularParameterDeclaration regularParameterDeclaration)
        {
            NamedElementKinds?kind           = null;
            IReferenceName    scalarTypeName = null;

            if (localVarDeclaration != null)
            {
                kind           = NamedElementKinds.Locals;
                scalarTypeName = localVarDeclaration.GetScalarTypename();
            }

            else if (fieldDeclaration != null)
            {
                scalarTypeName = fieldDeclaration.GetScalarTypename();
                var isPrivate = fieldDeclaration.GetAccessRights().Has(AccessRights.PRIVATE);

                if (fieldDeclaration.IsStatic)
                {
                    if (isPrivate)
                    {
                        kind = fieldDeclaration.IsReadonly ? NamedElementKinds.PrivateStaticReadonly : NamedElementKinds.PrivateStaticFields;
                    }
                    else
                    {
                        kind = fieldDeclaration.IsReadonly ? NamedElementKinds.StaticReadonly : NamedElementKinds.PublicFields;
                    }
                }
                else
                {
                    kind = isPrivate ? NamedElementKinds.PrivateInstanceFields : NamedElementKinds.PublicFields;
                }
            }

            else if (regularParameterDeclaration != null)
            {
                kind           = NamedElementKinds.Parameters;
                scalarTypeName = regularParameterDeclaration.ScalarTypeName;
            }

            return(kind, scalarTypeName);
        }
        public override bool IsAvailable(IDataContext context)
        {
            // check text control
            if (!base.IsAvailable(context))
                return false;
            var sourceTokenAtCaret = JetBrains.ReSharper.Feature.Services.Util.TextControlToPsi.GetSourceTokenAtCaret(Solution, TextControl);

            var usingDirective = sourceTokenAtCaret.FindParent<IUsingDirective>();

            if (usingDirective == null || usingDirective.ImportedSymbolName == null)
                return false;

            // Does not support Linq
            if (_ignoredNamespaces.Contains(usingDirective.ImportedSymbolName.QualifiedName, StringComparer.Ordinal))
                return false;

            ImportedNamespacePointer = usingDirective.ImportedSymbolName;

            return true;
        }
        public static IReferenceName GetScalarTypename(this IDeclaration fieldDeclaration)
        {
            CompositeElement compositeElement = (CompositeElement)fieldDeclaration;

            if (!(compositeElement.parent is IMultipleFieldDeclaration) || compositeElement.parent.GetChildRole((TreeElement)compositeElement) != (short)104)
            {
                return((IReferenceName)null);
            }
            CompositeElement parent        = compositeElement.parent;
            IReferenceName   referenceName = (IReferenceName)null;
            CompositeElement childByRole1  = (CompositeElement)parent.FindChildByRole((short)19);

            if (childByRole1 != null)
            {
                TreeElement childByRole2 = childByRole1.FindChildByRole((short)19);
                if (childByRole2 != null)
                {
                    referenceName = (IReferenceName)childByRole2;
                }
            }
            return(referenceName);
        }
        private static bool IsInsideSignatureWhereTypeUsageExpected([NotNull] IMethodDeclaration methodDeclaration, [NotNull] IReferenceName referenceName)
        {
            // require method declaration to at least have a name identifier
            if (methodDeclaration.NameIdentifier == null)
            {
                return(false);
            }

            var returnTypeUsage = methodDeclaration.TypeUsage;

            if (returnTypeUsage != null) // THere M()
            {
                if (returnTypeUsage.Contains(referenceName))
                {
                    return(true);
                }
            }

            if (methodDeclaration.LPar != null) // void M(int id, THere t, string s)
            {
                foreach (var parameterDeclaration in methodDeclaration.ParameterDeclarationsEnumerable)
                {
                    if (parameterDeclaration.Contains(referenceName))
                    {
                        return(true);
                    }
                }
            }

            if (methodDeclaration.RPar != null) // void M<T>() where T : THere
            {
                foreach (var constraintsClause in methodDeclaration.TypeParameterConstraintsClausesEnumerable)
                {
                    if (constraintsClause.Contains(referenceName))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
 public ReferenceNamePostfixTemplateContext([NotNull] IReferenceName reference,
                                            [NotNull] ICSharpExpression expression,
                                            [NotNull] PostfixExecutionContext executionContext)
     : base(reference, expression, executionContext)
 {
 }
Example #12
0
 public IReferenceName SetScalarTypeName(IReferenceName param)
 {
     return(_fieldDeclaration.SetScalarTypeName(param));
 }
 public static IReferenceName GetFirstName([NotNull] this IReferenceName referenceName) =>
 referenceName.GetFirstQualifier() ?? referenceName;
Example #14
0
 public ReferenceNameCompiler(IReferenceName node, AbstractILCompilerParams myParams) : base(myParams)
 {
     myReferenceName = node;
 }
 public static IReferenceName GetByQualifier([CanBeNull] IReferenceName param) =>
 (IReferenceName)ExpressionReferenceNameNavigator.GetByQualifier(param as IExpressionReferenceName) ??
 TypeReferenceNameNavigator.GetByQualifier(param as ITypeReferenceName);
        private static void AddToCollector(CSharpCodeCompletionContext context, IItemsCollector collector, IReferenceName referenceName, NamedElementKinds elementKinds, ScopeKind localSelfScoped)
        {
            var referenceNameResolveResult = referenceName.Reference.Resolve();
            var referencedElementAsString  = referenceNameResolveResult.DeclaredElement.ConvertToString();

            if (referencedElementAsString == "Class:Moq.Mock`1")
            {
                var typeArgumentList = referenceName.TypeArgumentList;
                var typeArguments    = typeArgumentList.TypeArguments;

                if (typeArguments.Count == 1)
                {
                    var typeArgument = typeArguments[0];
                    var scalarType   = typeArgument.GetScalarType();

                    if (scalarType == null)
                    {
                        return;
                    }

                    var    genericTypeResolveResult = scalarType.Resolve();
                    var    namingManager            = typeArgument.GetPsiServices().Naming;
                    var    suggestionOptions        = new SuggestionOptions();
                    string proposedName;

                    if (genericTypeResolveResult.IsEmpty)
                    {
                        proposedName = namingManager.Suggestion.GetDerivedName(typeArgument.GetPresentableName(CSharpLanguage.Instance), elementKinds, localSelfScoped,
                                                                               CSharpLanguage.Instance, suggestionOptions, referenceName.GetSourceFile());
                    }
                    else
                    {
                        proposedName = namingManager.Suggestion.GetDerivedName(genericTypeResolveResult.DeclaredElement, elementKinds, localSelfScoped,
                                                                               CSharpLanguage.Instance, suggestionOptions, referenceName.GetSourceFile());
                    }

                    var textLookupItem = new TextLookupItem(proposedName);
                    textLookupItem.InitializeRanges(context.CompletionRanges, context.BasicContext);
                    textLookupItem.SetTopPriority();
                    collector.Add(textLookupItem);

                    var textLookupItem2 = new TextLookupItem(proposedName + "Mock");
                    textLookupItem2.InitializeRanges(context.CompletionRanges, context.BasicContext);
                    textLookupItem2.SetTopPriority();
                    collector.Add(textLookupItem2);
                }
            }
        }