Exemplo n.º 1
0
        public override async ValueTask OnReferenceFoundAsync(SourceReferenceItem reference)
        {
            using (await _semaphore.DisposableWaitAsync(CancellationToken).ConfigureAwait(false))
            {
                // Each reference should be associated with a definition. If this somehow isn't the
                // case, we bail out early.
                if (!_definitionToId.TryGetValue(reference.Definition, out var definitionId))
                {
                    return;
                }

                // If the definition hasn't been reported yet, add it to our list of references to report.
                if (_definitionsWithoutReference.TryGetValue(definitionId, out var definition))
                {
                    _workQueue.AddWork(definition);
                    _definitionsWithoutReference.Remove(definitionId);
                }

                _id++;

                // Creating a new VSReferenceItem for the reference
                var referenceItem = await GenerateVSReferenceItemAsync(
                    _id, definitionId, _document, _position, reference.SourceSpan,
                    reference.AdditionalProperties, _metadataAsSourceFileService, definitionText : null,
                    definitionGlyph : Glyph.None, reference.SymbolUsageInfo, reference.IsWrittenTo, CancellationToken).ConfigureAwait(false);

                if (referenceItem != null)
                {
                    _workQueue.AddWork(referenceItem);
                }
            }
        }
Exemplo n.º 2
0
 public VSTypeScriptSourceReferenceItem(
     VSTypeScriptDefinitionItem definition,
     VSTypeScriptDocumentSpan sourceSpan,
     VSTypeScriptSymbolUsageInfo symbolUsageInfo)
 {
     UnderlyingObject = new SourceReferenceItem(definition.UnderlyingObject, sourceSpan.ToDocumentSpan(), symbolUsageInfo.UnderlyingObject);
 }
Exemplo n.º 3
0
        public override async Task OnReferenceFoundAsync(SourceReferenceItem reference)
        {
            using (await _semaphore.DisposableWaitAsync(CancellationToken).ConfigureAwait(false))
            {
                // Each reference should be associated with a definition. If this somehow isn't the
                // case, we bail out early.
                if (!_definitionToId.TryGetValue(reference.Definition, out var definitionId))
                {
                    return;
                }

                _id++;

                // Creating a new VSReferenceItem for the reference
                var referenceItem = await GenerateVSReferenceItemAsync(
                    _id, definitionId, _document, _position, reference.SourceSpan,
                    reference.AdditionalProperties, _metadataAsSourceFileService, definitionText : null,
                    reference.SymbolUsageInfo, CancellationToken).ConfigureAwait(false);

                if (referenceItem != null)
                {
                    AddToReferencesToReport_MustBeCalledUnderLock(referenceItem);
                }
            }
        }
Exemplo n.º 4
0
        public override Task OnReferenceFoundAsync(SourceReferenceItem reference)
        {
            lock (_gate)
            {
                _referenceItems.Add(reference);
            }

            return(SpecializedTasks.EmptyTask);
        }
Exemplo n.º 5
0
        public override Task OnReferenceFoundAsync(SourceReferenceItem reference)
        {
            lock (_gate)
            {
                _referenceItems.Add(reference);
            }

            return(Task.CompletedTask);
        }
Exemplo n.º 6
0
 public override Task OnReferenceFoundAsync(SourceReferenceItem reference)
 {
     // Normal references go into both sets of entries.
     return(OnEntryFoundAsync(
                reference.Definition,
                bucket => CreateDocumentLocationEntryAsync(
                    bucket, reference.SourceSpan, isDefinitionLocation: false),
                addToEntriesWithDeclarations: true,
                addToEntriesWithoutDeclarations: true));
 }
 protected override Task OnReferenceFoundWorkerAsync(SourceReferenceItem reference)
 {
     // Normal references go into both sets of entries.
     return(OnEntryFoundAsync(
                reference.Definition,
                bucket => CreateDocumentSpanEntryAsync(
                    bucket, reference.SourceSpan, isDefinitionLocation: false),
                addToEntriesWhenGroupingByDefinition: true,
                addToEntriesWhenNotGroupingByDefinition: true));
 }
            public Task OnReferenceFoundAsync(SourceReferenceItem reference)
            {
                var definitionItem = GetOrAddDefinitionItemId(reference.Definition);

                return(_endPoint.InvokeAsync(nameof(OnReferenceFoundAsync),
                                             new object[]
                {
                    SerializableSourceReferenceItem.Dehydrate(definitionItem, reference),
                },
                                             CancellationToken));
            }
Exemplo n.º 9
0
 protected override Task OnReferenceFoundWorkerAsync(SourceReferenceItem reference)
 {
     // Normal references go into both sets of entries.
     return(OnEntryFoundAsync(
                reference.Definition,
                bucket => CreateDocumentSpanEntryAsync(
                    bucket, reference.SourceSpan,
                    reference.IsWrittenTo ? HighlightSpanKind.WrittenReference : HighlightSpanKind.Reference,
                    reference.ReferenceInfo),
                addToEntriesWhenGroupingByDefinition: true,
                addToEntriesWhenNotGroupingByDefinition: true));
 }
 protected override Task OnReferenceFoundWorkerAsync(SourceReferenceItem reference)
 {
     // Normal references go into both sets of entries.
     return(OnEntryFoundAsync(
                reference.Definition,
                bucket => TryCreateDocumentSpanEntryAsync(
                    bucket, reference.SourceSpan,
                    reference.IsWrittenTo ? HighlightSpanKind.WrittenReference : HighlightSpanKind.Reference,
                    reference.AdditionalPropertiesWithMultipleValues,
                    reference.FindUsagesProperties),
                addToEntriesWhenGroupingByDefinition: true,
                addToEntriesWhenNotGroupingByDefinition: true));
 }
 protected override ValueTask OnReferenceFoundWorkerAsync(SourceReferenceItem reference)
 {
     // Normal references go into both sets of entries.  We ensure an entry for the definition, and an entry
     // for the reference itself.
     return(OnEntryFoundAsync(
                reference.Definition,
                bucket => TryCreateDocumentSpanEntryAsync(
                    bucket, reference.SourceSpan,
                    reference.IsWrittenTo ? HighlightSpanKind.WrittenReference : HighlightSpanKind.Reference,
                    reference.SymbolUsageInfo,
                    reference.AdditionalProperties),
                addToEntriesWhenGroupingByDefinition: true,
                addToEntriesWhenNotGroupingByDefinition: true));
 }
Exemplo n.º 12
0
        public override Task OnReferenceFoundAsync(SourceReferenceItem reference)
        {
            var    loc      = reference.SourceSpan;
            var    fileName = loc.Document.FilePath;
            var    offset   = loc.SourceSpan.Start;
            string projectedName;
            int    projectedOffset;
            var    workspace = loc.Document.Project.Solution.Workspace as MonoDevelopWorkspace;

            if (workspace != null && workspace.TryGetOriginalFileFromProjection(fileName, offset, out projectedName, out projectedOffset))
            {
                fileName = projectedName;
                offset   = projectedOffset;
            }
            var sr = new MemberReference(loc, fileName, offset, loc.SourceSpan.Length);

            if (antiDuplicatesSet.Add(sr))
            {
                sr.ReferenceUsageType = reference.IsWrittenTo ? ReferenceUsageType.Write : ReferenceUsageType.Read;
            }
            return(Task.CompletedTask);
        }
Exemplo n.º 13
0
 public sealed override Task OnReferenceFoundAsync(SourceReferenceItem reference)
 {
     UpdateCustomColumnsVisibility(reference.AdditionalPropertiesWithMultipleValues);
     return(OnReferenceFoundWorkerAsync(reference));
 }
 // We should never be called in a context where we get references.
 protected override Task OnReferenceFoundWorkerAsync(SourceReferenceItem reference)
 => throw new InvalidOperationException();
 public override void OnReferenceFound(SourceReferenceItem reference)
 {
     OnEntryFound(reference.Definition,
                  (db, c) => CreateDocumentLocationEntryAsync(
                      db, reference.SourceSpan, isDefinitionLocation: false, cancellationToken: c));
 }
Exemplo n.º 16
0
 // We should never be called in a context where we get references.
 protected override ValueTask OnReferenceFoundWorkerAsync(SourceReferenceItem reference, CancellationToken cancellationToken)
 => throw new InvalidOperationException();
 public override Task OnReferenceFoundAsync(SourceReferenceItem reference)
 {
     return(OnEntryFoundAsync(reference.Definition,
                              bucket => CreateDocumentLocationEntryAsync(
                                  bucket, reference.SourceSpan, isDefinitionLocation: false)));
 }
 public Task OnReferenceFoundAsync(SourceReferenceItem reference)
 => _underlyingContext.OnReferenceFoundAsync(reference);
 public sealed override Task OnReferenceFoundAsync(SourceReferenceItem reference)
 {
     UpdateCustomColumnsVisibility(reference.ReferenceInfo);
     return(OnReferenceFoundWorkerAsync(reference));
 }
Exemplo n.º 20
0
 public sealed override Task OnReferenceFoundAsync(SourceReferenceItem reference)
 {
     return(OnReferenceFoundWorkerAsync(reference));
 }
Exemplo n.º 21
0
 public virtual void OnReferenceFound(SourceReferenceItem reference)
 {
 }
Exemplo n.º 22
0
 public virtual Task OnReferenceFoundAsync(SourceReferenceItem reference) => SpecializedTasks.EmptyTask;
Exemplo n.º 23
0
 protected abstract Task OnReferenceFoundWorkerAsync(SourceReferenceItem reference);
Exemplo n.º 24
0
 public sealed override Task OnReferenceFoundAsync(SourceReferenceItem reference)
 => OnReferenceFoundWorkerAsync(reference);