internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, SymbolUsageInfo symbolUsageInfo, ImmutableArray <FindUsageProperty> findUsagesProperties) : this(definition, sourceSpan, GetOrCreateAdditionalPropertiesWithMultipleValuesMap(symbolUsageInfo)) { IsWrittenTo = symbolUsageInfo.IsWrittenTo(); FindUsagesProperties = findUsagesProperties.NullToEmpty(); }
internal ReferenceLocation(Document document, IAliasSymbol alias, Location location, bool isImplicit, SymbolUsageInfo symbolUsageInfo, ImmutableDictionary <string, string> additionalProperties, CandidateReason candidateReason) : this(document, alias, location, isImplicit, symbolUsageInfo, additionalProperties, candidateReason, containingStringLocation : Location.None) { }
public SymbolUsageInfo Rehydrate() { return(IsValueUsageInfo ? SymbolUsageInfo.Create((ValueUsageInfo)UsageInfoUnderlyingValue) : SymbolUsageInfo.Create((TypeOrNamespaceUsageInfo)UsageInfoUnderlyingValue)); }
private VSTypeScriptSymbolUsageInfo(SymbolUsageInfo underlyingObject) => UnderlyingObject = underlyingObject;
private ReferenceLocation(Document document, IAliasSymbol alias, Location location, bool isImplicit, SymbolUsageInfo symbolUsageInfo, ImmutableDictionary <string, string> additionalProperties, CandidateReason candidateReason, Location containingStringLocation) : this() { this.Document = document; this.Alias = alias; this.Location = location; this.IsImplicit = isImplicit; this.SymbolUsageInfo = symbolUsageInfo; this.AdditionalProperties = additionalProperties ?? ImmutableDictionary <string, string> .Empty; this.CandidateReason = candidateReason; this.ContainingStringLocation = containingStringLocation; }
// The mappings here are roughly based off of SymbolUsageInfoExtensions.ToSymbolReferenceKinds. public static LSP.ReferenceKind[] SymbolUsageInfoToReferenceKinds(SymbolUsageInfo symbolUsageInfo) { var referenceKinds = ArrayBuilder <LSP.ReferenceKind> .GetInstance(); if (symbolUsageInfo.ValueUsageInfoOpt.HasValue) { var usageInfo = symbolUsageInfo.ValueUsageInfoOpt.Value; if (usageInfo.IsReadFrom()) { referenceKinds.Add(LSP.ReferenceKind.Read); } if (usageInfo.IsWrittenTo()) { referenceKinds.Add(LSP.ReferenceKind.Write); } if (usageInfo.IsReference()) { referenceKinds.Add(LSP.ReferenceKind.Reference); } if (usageInfo.IsNameOnly()) { referenceKinds.Add(LSP.ReferenceKind.Name); } } if (symbolUsageInfo.TypeOrNamespaceUsageInfoOpt.HasValue) { var usageInfo = symbolUsageInfo.TypeOrNamespaceUsageInfoOpt.Value; if ((usageInfo & TypeOrNamespaceUsageInfo.Qualified) != 0) { referenceKinds.Add(LSP.ReferenceKind.Qualified); } if ((usageInfo & TypeOrNamespaceUsageInfo.TypeArgument) != 0) { referenceKinds.Add(LSP.ReferenceKind.TypeArgument); } if ((usageInfo & TypeOrNamespaceUsageInfo.TypeConstraint) != 0) { referenceKinds.Add(LSP.ReferenceKind.TypeConstraint); } if ((usageInfo & TypeOrNamespaceUsageInfo.Base) != 0) { referenceKinds.Add(LSP.ReferenceKind.BaseType); } // Preserving the same mapping logic that SymbolUsageInfoExtensions.ToSymbolReferenceKinds uses if ((usageInfo & TypeOrNamespaceUsageInfo.ObjectCreation) != 0) { referenceKinds.Add(LSP.ReferenceKind.Constructor); } if ((usageInfo & TypeOrNamespaceUsageInfo.Import) != 0) { referenceKinds.Add(LSP.ReferenceKind.Import); } // Preserving the same mapping logic that SymbolUsageInfoExtensions.ToSymbolReferenceKinds uses if ((usageInfo & TypeOrNamespaceUsageInfo.NamespaceDeclaration) != 0) { referenceKinds.Add(LSP.ReferenceKind.Declaration); } } return(referenceKinds.ToArrayAndFree()); }
internal ReferenceLocation(Document document, IAliasSymbol alias, Location location, bool isImplicit, SymbolUsageInfo symbolUsageInfo, ImmutableArray <FindUsageProperty> additionalProperties, CandidateReason candidateReason) : this() { this.Document = document; this.Alias = alias; this.Location = location; this.IsImplicit = isImplicit; this.SymbolUsageInfo = symbolUsageInfo; this.FindUsagesProperties = additionalProperties.NullToEmpty(); this.CandidateReason = candidateReason; }
internal ReferenceLocation(Document document, IAliasSymbol alias, Location location, bool isImplicit, SymbolUsageInfo symbolUsageInfo, CandidateReason candidateReason) : this() { this.Document = document; this.Alias = alias; this.Location = location; this.IsImplicit = isImplicit; this.SymbolUsageInfo = symbolUsageInfo; this.CandidateReason = candidateReason; }
private static ReferenceInfoMap GetOrCreateReferenceInfo(SymbolUsageInfo symbolUsageInfo) => s_symbolUsageInfoToReferenceInfoMap.GetOrAdd(symbolUsageInfo, v => CreateReferenceInfo(v));
internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, SymbolUsageInfo symbolUsageInfo) : this(definition, sourceSpan, GetOrCreateReferenceInfo(symbolUsageInfo)) { IsWrittenTo = symbolUsageInfo.IsWrittenTo(); }
internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, SymbolUsageInfo symbolUsageInfo, ImmutableDictionary <string, string> additionalProperties) : this(definition, sourceSpan, symbolUsageInfo, additionalProperties, isWrittenTo : symbolUsageInfo.IsWrittenTo()) { }
// Used by TypeScript internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, SymbolUsageInfo symbolUsageInfo) : this(definition, sourceSpan, symbolUsageInfo, additionalProperties : ImmutableDictionary <string, string> .Empty) { }