public override Task <CodeLens> Handle(CodeLens request, CancellationToken cancellationToken) { // TODO: Catch deserializtion exception on bad object CodeLensData codeLensData = request.Data.ToObject <CodeLensData>(); ICodeLensProvider originalProvider = _symbolsService .GetCodeLensProviders() .FirstOrDefault(provider => provider.ProviderId.Equals(codeLensData.ProviderId, StringComparison.Ordinal)); ScriptFile scriptFile = _workspaceService.GetFile(codeLensData.Uri); return(originalProvider.ResolveCodeLens(request, scriptFile)); }
public Task <CodeLens> Handle(CodeLens request, CancellationToken cancellationToken) { // TODO: Catch deserializtion exception on bad object CodeLensData codeLensData = request.Data.ToObject <CodeLensData>(); ICodeLensProvider originalProvider = _providers.FirstOrDefault( provider => provider.ProviderId.Equals(codeLensData.ProviderId)); ScriptFile scriptFile = _workspaceService.GetFile( codeLensData.Uri); var resolvedCodeLens = originalProvider.ResolveCodeLens(request, scriptFile); return(Task.FromResult(resolvedCodeLens)); }
public static CodeLensData ToCodeLensData(this MethodDefinition method) { var instrs = method.Body?.Instructions ?? new Collection <Instruction>(capacity: 0); var boxOpsCount = 0; var callvirtOpsCount = 0; foreach (var instr in instrs) { if (instr.OpCode.Code == Code.Box) { boxOpsCount++; } else if (instr.OpCode.Code == Code.Callvirt && instr.Previous.OpCode.Code != Code.Constrained) { callvirtOpsCount++; } } return(CodeLensData.Success(instrs.Count, boxOpsCount, callvirtOpsCount, method.Body?.CodeSize ?? 0)); }
public bool CanResolve(CodeLens value) { CodeLensData codeLensData = value.Data.ToObject <CodeLensData>(); return(value?.Data != null && _providers.Any(provider => provider.ProviderId.Equals(codeLensData.ProviderId))); }
public CodeLensData Merge(CodeLensData other) => (IsFailure, other.IsFailure) switch { (true, _) => this,