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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        public bool CanResolve(CodeLens value)
        {
            CodeLensData codeLensData = value.Data.ToObject <CodeLensData>();

            return(value?.Data != null && _providers.Any(provider => provider.ProviderId.Equals(codeLensData.ProviderId)));
        }
Ejemplo n.º 5
0
 public CodeLensData Merge(CodeLensData other) => (IsFailure, other.IsFailure) switch
 {
     (true, _) => this,