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());
        }
Пример #2
0
        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 {}");
        }
Пример #3
0
        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();
        }
Пример #5
0
        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);
        }
Пример #6
0
 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;
 }