private IList <ICSharpExpression> CollectUsages(IElement scope)
        {
            var elementsWithUnresolvedReferences = CollectElementsWithUnresolvedReferences(
                scope,
                _myReference.GetName());

            return(FilterUsages(elementsWithUnresolvedReferences.Cast <ICSharpExpression>()));
        }
Example #2
0
        private static IDeclaredElement GetFieldDeclaredElement([NotNull] IReference reference,
                                                                [NotNull] FSharpUnionCase unionCase, [NotNull] IFSharpReferenceOwner referenceOwner)
        {
            var field = unionCase.UnionCaseFields.FirstOrDefault(f => f.Name == reference.GetName());

            return(field?.GetDeclaredElement(referenceOwner.GetPsiModule(), referenceOwner));
        }
Example #3
0
        protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress)
        {
            var addStub = new AddRhinoStub(_myReference.GetName(), _myReferenceExpression, _anchor);

            addStub.Execute();

            return(tc => { });
        }
Example #4
0
        public static string UpwardsDebugTraceRecursive(IReference reference, int depth, string value = "")
        {
            value += depth + ": " + reference.GetTypeName() + ": " + reference.GetName() + "\n";
            if (reference.GetParentReference() != null)
            {
                value = UpwardsDebugTraceRecursive(reference.GetParentReference(), --depth, value);
            }

            return(value);
        }
        // I(Reference)Qualifier.GetSymbolTable - returns the symbol table of items available from the resolved
        // reference, when being used as a qualifier. Not used to resolve this reference, but can be used to resolve
        // another reference, when this instance is used as a qualifier. E.g. if this reference is a namespace,
        // return all applicable items available in the namespace.
        // Contrast with IReference.GetReferenceSymbolTable, which returns the symbol table used to resolve a
        // reference. For a qualified reference, this will call GetQualifier.GetSymbolTable(mode). If there is no
        // qualifier, it gets a symbol table based on current scope
        public ISymbolTable GetSymbolTable(SymbolTableMode mode, IReference reference, bool useReferenceName)
        {
            if (!(Resolve().DeclaredElement is INamespace @namespace))
            {
                return(EmptySymbolTable.INSTANCE);
            }
            var module      = myOwner.GetPsiModule();
            var symbolTable = ResolveUtil.GetSymbolTableByNamespace(@namespace, module, true);

            return(useReferenceName ? symbolTable.Filter(new ExactNameFilter(reference.GetName())) : symbolTable);
        }
Example #6
0
        static string GetPathString(IReference reference, string path = null)
        {
            if (reference == null)
            {
                return("null");
            }

            if (path == null)
            {
                path = reference.GetName();
            }
            else
            {
                path = reference.GetName() + " / " + path;
            }

            if (reference.GetParentReference() != null)
            {
                path = GetPathString(reference.GetParentReference(), path);
            }

            return(path);
        }
        public void MakeCallExtension(IReference reference)
        {
            var treeNode = reference.GetTreeNode();
            if (!treeNode.IsVB9Supported()) return;

            var referenceExpression = treeNode as IReferenceExpression;
            if (referenceExpression == null) return;

            IIndexExpression byExpression = IndexExpressionNavigator.GetByExpression(referenceExpression);
            if (byExpression == null) return;

            IVBArgument vbArgument = null;
            int index = 0;
            using (var enumerator = byExpression.ArgumentList.Arguments.GetEnumerator()) {
                while (enumerator.MoveNext()) {
                    var current = enumerator.Current;
                    var matchingParameter = current.GetMatchingParameter();
                    if (matchingParameter != null && matchingParameter.Element.IndexOf() == 0) {
                        vbArgument = current;
                        break;
                    }

                    ++index;
                }
            }

            if (vbArgument == null) return;

            IVBExpression vbExpression = null;
            var expressionArgument = vbArgument as IExpressionArgument;
            if (expressionArgument != null)
                vbExpression = expressionArgument.Expression;
            if (vbExpression == null) return;

            var indexExpression1 =
                (IIndexExpression) VBElementFactory.GetInstance(treeNode.GetPsiModule())
                    .CreateExpression("$0." + reference.GetName() + "()", new object[] { vbExpression });
            indexExpression1.SetArgumentList(byExpression.ArgumentList);
            indexExpression1.RemoveArgument(indexExpression1.Arguments[index]);
            byExpression.ReplaceBy(indexExpression1);
        }
        private bool ReferenceNamePredicate(IReference reference)
        {
            if (myReferenceNameContainer == null)
            {
                return(true);
            }

            if (reference.HasMultipleNames)
            {
                foreach (var name in reference.GetAllNames())
                {
                    if (myReferenceNameContainer.Contains(name))
                    {
                        return(true);
                    }
                }

                return(false);
            }

            return(myReferenceNameContainer.Contains(reference.GetName()));
        }
Example #9
0
 public bool IsLive(IReference reference)
 {
     return liveLocalVariableNames.Contains(reference.GetName());
 }
Example #10
0
 public bool IsLive(IReference reference)
 {
     return(liveLocalVariableNames.Contains(reference.GetName()));
 }
Example #11
0
        public void MakeCallExtension(IReference reference)
        {
            var treeNode = reference.GetTreeNode();

            if (!treeNode.IsVB9Supported())
            {
                return;
            }

            var referenceExpression = treeNode as IReferenceExpression;

            if (referenceExpression == null)
            {
                return;
            }

            IIndexExpression byExpression = IndexExpressionNavigator.GetByExpression(referenceExpression);

            if (byExpression == null)
            {
                return;
            }

            IVBArgument vbArgument = null;
            int         index      = 0;

            using (var enumerator = byExpression.ArgumentList.Arguments.GetEnumerator()) {
                while (enumerator.MoveNext())
                {
                    var current           = enumerator.Current;
                    var matchingParameter = current.GetMatchingParameter();
                    if (matchingParameter != null && matchingParameter.Element.IndexOf() == 0)
                    {
                        vbArgument = current;
                        break;
                    }

                    ++index;
                }
            }

            if (vbArgument == null)
            {
                return;
            }

            IVBExpression vbExpression       = null;
            var           expressionArgument = vbArgument as IExpressionArgument;

            if (expressionArgument != null)
            {
                vbExpression = expressionArgument.Expression;
            }
            if (vbExpression == null)
            {
                return;
            }

            var indexExpression1 =
                (IIndexExpression)VBElementFactory.GetInstance(treeNode.GetPsiModule())
                .CreateExpression("$0." + reference.GetName() + "()", new object[] { vbExpression });

            indexExpression1.SetArgumentList(byExpression.ArgumentList);
            indexExpression1.RemoveArgument(indexExpression1.Arguments[index]);
            byExpression.ReplaceBy(indexExpression1);
        }