Beispiel #1
0
        /// <summary>
        ///   Returns the available overridable members in the given
        ///   request.
        /// </summary>
        public IEnumerable <GetOverrideTargetsResponse> GetOverrideTargets
            (Request request)
        {
            var overrideContext = new OverrideContext(request, _parser);

            return(overrideContext.OverrideTargets);
        }
        public void Should_not_offer_already_overridden_method()
        {
            var buffer = @"
public class WeirdString : String
{
    public override string ToString()
    {
        return ""weird"";
    }
$
}";
            var location = TestHelpers.GetLineAndColumnFromDollar(buffer);
            var request = new Request { Buffer = buffer, FileName = "myfile.cs", Line = location.Line, Column = location.Column };
            var solution = new FakeSolutionBuilder().AddFile(buffer, "myfile.cs").Build();
            var parser = new BufferParser(solution);
           
            var context = new OverrideContext(request, parser);
            var overrides = context.OverrideTargets.Select(m => m.OverrideTargetName).ToArray();
            overrides.ShouldNotContain("public virtual string ToString ();");

        }
Beispiel #3
0
        /// <summary>
        ///   Takes an editing context. Inserts an override
        ///   declaration of the chosen member in the context. Returns
        ///   the new context.
        /// </summary>
        /// <remarks>
        ///   The text editor cursor stays in the same line and column
        ///   it originally was.
        /// </remarks>
        public RunOverrideTargetResponse RunOverrideTarget
            (RunOverrideTargetRequest request)
        {
            var overrideContext    = new OverrideContext(request, _parser);
            var refactoringContext = OmniSharpRefactoringContext.GetContext
                                         (overrideContext.BufferParser, request);

            var memberToOverride = overrideContext.GetOverridableMembers()
                                   .First(ot => {
                var memberSignature =
                    GetOverrideTargetsResponse.GetOverrideTargetName
                        (ot, overrideContext.CompletionContext.ResolveContext);

                return(memberSignature == request.OverrideTargetName);
            });

            var builder = new TypeSystemAstBuilder
                              (new CSharpResolver
                                  (overrideContext.CompletionContext.ResolveContext))
                          // Will generate a "throw new
                          // NotImplementedException();" statement in the
                          // bodies
            {
                GenerateBody = true
            };

            var newEditorContents = runOverrideTargetWorker
                                        (request
                                        , refactoringContext
                                        , overrideContext.CompletionContext.ParsedContent
                                        , script: new OmniSharpScript(refactoringContext, _config)
                                        , memberDeclaration:
                                        builder.ConvertEntity(memberToOverride));

            return(new RunOverrideTargetResponse
                       (fileName: request.FileName
                       , buffer: newEditorContents.Text
                       , line: request.Line
                       , column: request.Column));
        }
Beispiel #4
0
        /// <summary>
        ///   Takes an editing context. Inserts an override
        ///   declaration of the chosen member in the context. Returns
        ///   the new context.
        /// </summary>
        /// <remarks>
        ///   The text editor cursor stays in the same line and column
        ///   it originally was.
        /// </remarks>
        public RunOverrideTargetResponse RunOverrideTarget
            (RunOverrideTargetRequest request) {
            var overrideContext = new OverrideContext(request, _parser);
            var refactoringContext = OmniSharpRefactoringContext.GetContext
                (overrideContext.BufferParser, request);

            var memberToOverride = overrideContext.GetOverridableMembers()
                .First(ot => {
                    var memberSignature =
                     GetOverrideTargetsResponse.GetOverrideTargetName
                      (ot, overrideContext.CompletionContext.ResolveContext);

                    return memberSignature == request.OverrideTargetName;});

            var builder = new TypeSystemAstBuilder
                (new CSharpResolver
                 (overrideContext.CompletionContext.ResolveContext))
                 // Will generate a "throw new
                 // NotImplementedException();" statement in the
                 // bodies
                 {GenerateBody = true};

            var newEditorContents = runOverrideTargetWorker
                ( request
                , refactoringContext
                , overrideContext.CompletionContext.ParsedContent
                , script: new OmniSharpScript(refactoringContext, _config)
                , memberDeclaration:
                    builder.ConvertEntity(memberToOverride));

            return new RunOverrideTargetResponse
                ( fileName : request.FileName
                , buffer   : newEditorContents.Text
                , line     : request.Line
                , column   : request.Column);
        }
Beispiel #5
0
        /// <summary>
        ///   Returns the available overridable members in the given
        ///   request.
        /// </summary>
        public IEnumerable<GetOverrideTargetsResponse> GetOverrideTargets
            (Request request) {
            var overrideContext = new OverrideContext(request, _parser);

            return overrideContext.OverrideTargets;
        }