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(); }
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); }
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); }
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); }
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); }
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); }
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); }
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)); } }