Ejemplo n.º 1
0
        public override IEnumerable <MemberReference> FindReferences(ProjectDom dom, FilePath fileName, IEnumerable <INode> searchedMembers)
        {
            HashSet <int>        positions = new HashSet <int> ();
            var                  editor    = TextFileProvider.Instance.GetTextEditorData(fileName);
            FindMemberAstVisitor visitor   = new FindMemberAstVisitor(editor.Document);

            visitor.IncludeXmlDocumentation = IncludeDocumentation;
            visitor.Init(searchedMembers);
            if (!visitor.FileContainsMemberName())
            {
                yield break;
            }
            var doc = ProjectDomService.ParseFile(dom, fileName, () => editor.Text);

            if (doc == null || doc.CompilationUnit == null)
            {
                yield break;
            }
            var resolver = new NRefactoryResolver(dom, doc.CompilationUnit, ICSharpCode.NRefactory.SupportedLanguage.CSharp, editor, fileName);

            visitor.ParseFile(resolver);
            visitor.RunVisitor(resolver);
            foreach (var reference in visitor.FoundReferences)
            {
                if (positions.Contains(reference.Position))
                {
                    continue;
                }
                positions.Add(reference.Position);
                yield return(reference);
            }
            visitor.ClearParsers();
        }
Ejemplo n.º 2
0
        public override IEnumerable <MemberReference> FindClassReferences(RefactorerContext ctx, string fileName, IType cls, bool includeXmlComment)
        {
            IEditableTextFile  file     = ctx.GetFile(fileName);
            NRefactoryResolver resolver = new NRefactoryResolver(ctx.ParserContext, cls.CompilationUnit, ICSharpCode.NRefactory.SupportedLanguage.CSharp, null, fileName);

            FindMemberAstVisitor visitor = new FindMemberAstVisitor(resolver, file, cls);

            visitor.IncludeXmlDocumentation = includeXmlComment;
            visitor.RunVisitor();
            SetContext(visitor.FoundReferences, ctx);
            return(visitor.FoundReferences);
        }
Ejemplo n.º 3
0
        public override IEnumerable <MemberReference> FindParameterReferences(RefactorerContext ctx, string fileName, IParameter param, bool includeXmlComment)
        {
            NRefactoryResolver resolver = new NRefactoryResolver(ctx.ParserContext, param.DeclaringMember.DeclaringType.CompilationUnit, ICSharpCode.NRefactory.SupportedLanguage.CSharp, null, fileName);

            resolver.CallingMember = param.DeclaringMember;

            FindMemberAstVisitor visitor = new FindMemberAstVisitor(resolver, ctx.GetFile(fileName), param);

            visitor.IncludeXmlDocumentation = includeXmlComment;
            visitor.RunVisitor();
            SetContext(visitor.FoundReferences, ctx);
            return(visitor.FoundReferences);
        }
Ejemplo n.º 4
0
        public override IEnumerable <MemberReference> FindVariableReferences(RefactorerContext ctx, string fileName, LocalVariable var)
        {
            var editor = ((Mono.TextEditor.ITextEditorDataProvider)ctx.GetFile(fileName)).GetTextEditorData();

            NRefactoryResolver resolver = new NRefactoryResolver(ctx.ParserContext, var.CompilationUnit, ICSharpCode.OldNRefactory.SupportedLanguage.CSharp, editor, fileName);

            resolver.CallingMember = var.DeclaringMember;

            FindMemberAstVisitor visitor = new FindMemberAstVisitor(editor.Document, var);

            visitor.RunVisitor(resolver);
            SetContext(visitor.FoundReferences, ctx);
            return(visitor.FoundReferences);
        }
Ejemplo n.º 5
0
        public override IEnumerable <MemberReference> FindVariableReferences(RefactorerContext ctx, string fileName, LocalVariable var)
        {
            //System.Console.WriteLine("Find variable references !!!");
//			ParsedDocument parsedDocument = ProjectDomService.ParseFile (fileName);
            NRefactoryResolver resolver = new NRefactoryResolver(ctx.ParserContext, var.CompilationUnit, ICSharpCode.NRefactory.SupportedLanguage.CSharp, null, fileName);

            resolver.CallingMember = var.DeclaringMember;

            FindMemberAstVisitor visitor = new FindMemberAstVisitor(resolver, ctx.GetFile(fileName), var);

            visitor.RunVisitor();
            SetContext(visitor.FoundReferences, ctx);
            return(visitor.FoundReferences);
        }
Ejemplo n.º 6
0
        public override IEnumerable <MemberReference> FindMemberReferences(RefactorerContext ctx, string fileName, IType cls, IMember member, bool includeXmlComment)
        {
            ParsedDocument parsedDocument = parser.Parse(cls.SourceProjectDom, fileName, ctx.GetFile(fileName).Text);

            NRefactoryResolver resolver = new NRefactoryResolver(ctx.ParserContext, parsedDocument.CompilationUnit, ICSharpCode.NRefactory.SupportedLanguage.CSharp, null, fileName);

            resolver.SetupParsedCompilationUnit(parser.LastUnit);
            resolver.CallingMember = member;
            FindMemberAstVisitor visitor = new FindMemberAstVisitor(resolver, ctx.GetFile(fileName), member);

            visitor.IncludeXmlDocumentation = includeXmlComment;
            visitor.RunVisitor();
            SetContext(visitor.FoundReferences, ctx);
            return(visitor.FoundReferences);
        }
Ejemplo n.º 7
0
        IEnumerable <MemberReference> FindReferences(ProjectDom dom, FilePath fileName, INode member)
        {
            var editor = TextFileProvider.Instance.GetTextEditorData(fileName);
            var doc    = ProjectDomService.GetParsedDocument(dom, fileName);

            if (doc == null || doc.CompilationUnit == null)
            {
                return(null);
            }
            var resolver = new NRefactoryResolver(dom, doc.CompilationUnit, ICSharpCode.NRefactory.SupportedLanguage.CSharp, editor, fileName);

            FindMemberAstVisitor visitor = new FindMemberAstVisitor(editor.Document, resolver, member);

            visitor.IncludeXmlDocumentation = IncludeDocumentation;
            visitor.RunVisitor();
            return(visitor.FoundReferences);
        }
Ejemplo n.º 8
0
        public override IEnumerable <MemberReference> FindClassReferences(RefactorerContext ctx, string fileName, IType cls, bool includeXmlComment)
        {
            var editor = ((Mono.TextEditor.ITextEditorDataProvider)ctx.GetFile(fileName)).GetTextEditorData();
            var doc    = ProjectDomService.GetParsedDocument(ctx.ParserContext, fileName);

            if (doc == null || doc.CompilationUnit == null)
            {
                return(null);
            }
            NRefactoryResolver resolver = new NRefactoryResolver(ctx.ParserContext, doc.CompilationUnit, ICSharpCode.OldNRefactory.SupportedLanguage.CSharp, editor, fileName);

            FindMemberAstVisitor visitor = new FindMemberAstVisitor(editor.Document, cls);

            visitor.IncludeXmlDocumentation = includeXmlComment;
            visitor.RunVisitor(resolver);
            SetContext(visitor.FoundReferences, ctx);
            return(visitor.FoundReferences);
        }
        IEnumerable <MemberReference> SearchMember(INode member, ProjectDom dom, FilePath fileName, Mono.TextEditor.TextEditorData editor, Mono.TextEditor.Document buildDocument, List <LocalDocumentInfo.OffsetInfo> offsetInfos, ParsedDocument parsedDocument)
        {
            var resolver = new NRefactoryResolver(dom, parsedDocument.CompilationUnit, ICSharpCode.NRefactory.SupportedLanguage.CSharp, editor, fileName);

            FindMemberAstVisitor visitor = new FindMemberAstVisitor(buildDocument, member);

            visitor.IncludeXmlDocumentation = IncludeDocumentation;
            visitor.RunVisitor(resolver);

            foreach (var result in visitor.FoundReferences)
            {
                var offsetInfo = offsetInfos.FirstOrDefault(info => info.ToOffset <= result.Position && result.Position < info.ToOffset + info.Length);
                if (offsetInfo == null)
                {
                    continue;
                }
                var offset = offsetInfo.FromOffset + result.Position - offsetInfo.ToOffset;
                var loc    = editor.OffsetToLocation(offset);
                yield return(new MemberReference(null, fileName, offset, loc.Line, loc.Column, result.Name, null));
            }
        }