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