public QuickFixResponse FindDerivedMembersAsQuickFixes (GotoImplementationRequest request) { var res = _bufferParser.ParsedContent(request.Buffer, request.FileName); var loc = new TextLocation(request.Line, request.Column); ResolveResult resolveResult = ResolveAtLocation.Resolve(res.Compilation, res.UnresolvedFile, res.SyntaxTree, loc); var rctx = new CSharpTypeResolveContext(res.Compilation.MainAssembly); var usingScope = res.UnresolvedFile.GetUsingScope(loc).Resolve(res.Compilation); rctx = rctx.WithUsingScope(usingScope); if (resolveResult is TypeResolveResult) { return(GetTypeResponse(rctx, resolveResult.Type.GetDefinition())); } if (resolveResult is MemberResolveResult) { return(GetMemberResponse(rctx, resolveResult as MemberResolveResult)); } return(new QuickFixResponse()); }
public void Should_find_usages_in_same_file() { const string editorText = @" public class BaseClass {} public class DerivedClassA : BaseClass {} public class DerivedClassB : BaseClass {} public class DerivedClassC : BaseClass {} "; var fileName = "test.cs"; var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText, fileName); solution.Projects.Add(project); var handler = new GotoImplementationHandler (solution, new BufferParser(solution), new ProjectFinder(solution)); var request = new GotoImplementationRequest { Buffer = editorText , Line = 2 , Column = 14 // At word 'BaseClass' , FileName = fileName }; var gotoImplementationResponse = handler.FindDerivedMembersAsQuickFixes(request); var quickFixes = gotoImplementationResponse.QuickFixes.ToArray(); Assert.AreEqual(3, quickFixes.Length); quickFixes[0].Text.Trim().ShouldEqual("public class DerivedClassA : BaseClass {}"); quickFixes[1].Text.Trim().ShouldEqual("public class DerivedClassB : BaseClass {}"); quickFixes[2].Text.Trim().ShouldEqual("public class DerivedClassC : BaseClass {}"); }
public void Should_find_usages_in_same_file() { const string editorText = @" public class BaseClass {} public class DerivedClassA : BaseClass {} public class DerivedClassB : BaseClass {} public class DerivedClassC : BaseClass {} "; var fileName = "test.cs"; var solution = new FakeSolution(); var project = new FakeProject(); project.AddFile(editorText, fileName: fileName); solution.Projects.Add(project); var handler = new GotoImplementationHandler (solution, new BufferParser(solution)); var request = new GotoImplementationRequest { Buffer = editorText , Line = 2 , Column = 14 // At word 'BaseClass' , FileName = fileName}; var gotoImplementationResponse = handler.FindDerivedMembersAsQuickFixes(request); var quickFixes = gotoImplementationResponse.QuickFixes.ToArray(); Assert.AreEqual(3, quickFixes.Length); quickFixes[0].Text.Trim().ShouldEqual("public class DerivedClassA : BaseClass {}"); quickFixes[1].Text.Trim().ShouldEqual("public class DerivedClassB : BaseClass {}"); quickFixes[2].Text.Trim().ShouldEqual("public class DerivedClassC : BaseClass {}"); }
public QuickFixResponse FindDerivedMembersAsQuickFixes(GotoImplementationRequest request) { var res = _bufferParser.ParsedContent(request.Buffer, request.FileName); var loc = new TextLocation(request.Line, request.Column); ResolveResult resolveResult = ResolveAtLocation.Resolve(res.Compilation, res.UnresolvedFile, res.SyntaxTree, loc); var rctx = new CSharpTypeResolveContext(res.Compilation.MainAssembly); var usingScope = res.UnresolvedFile.GetUsingScope(loc).Resolve(res.Compilation); rctx = rctx.WithUsingScope(usingScope); if (resolveResult is TypeResolveResult) { return GetTypeResponse(rctx, resolveResult.Type.GetDefinition()); } if (resolveResult is MemberResolveResult) { return GetMemberResponse(rctx, resolveResult as MemberResolveResult); } return new QuickFixResponse(); }
static QuickFixResponse FindDerivedMembersAsQuickFixes(FakeSolution solution, GotoImplementationRequest request) { var handler = new GotoImplementationHandler(solution, new BufferParser(solution), new ProjectFinder(solution)); var gotoImplementationResponse = handler.FindDerivedMembersAsQuickFixes(request); return(gotoImplementationResponse); }
static QuickFixResponse FindDerivedMembersAsQuickFixes(FakeSolution solution, GotoImplementationRequest request) { var handler = new GotoImplementationHandler(solution, new BufferParser(solution), new ProjectFinder(solution)); var gotoImplementationResponse = handler.FindDerivedMembersAsQuickFixes(request); return gotoImplementationResponse; }