コード例 #1
0
 internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, SymbolUsageInfo symbolUsageInfo, ImmutableArray <FindUsageProperty> findUsagesProperties)
     : this(definition, sourceSpan, GetOrCreateAdditionalPropertiesWithMultipleValuesMap(symbolUsageInfo))
 {
     IsWrittenTo          = symbolUsageInfo.IsWrittenTo();
     FindUsagesProperties = findUsagesProperties.NullToEmpty();
 }
コード例 #2
0
 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)
 {
 }
コード例 #3
0
 public SymbolUsageInfo Rehydrate()
 {
     return(IsValueUsageInfo
         ? SymbolUsageInfo.Create((ValueUsageInfo)UsageInfoUnderlyingValue)
         : SymbolUsageInfo.Create((TypeOrNamespaceUsageInfo)UsageInfoUnderlyingValue));
 }
コード例 #4
0
 private VSTypeScriptSymbolUsageInfo(SymbolUsageInfo underlyingObject)
 => UnderlyingObject = underlyingObject;
コード例 #5
0
 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;
 }
コード例 #6
0
        // 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());
        }
コード例 #7
0
 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;
 }
コード例 #8
0
 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;
 }
コード例 #9
0
 private static ReferenceInfoMap GetOrCreateReferenceInfo(SymbolUsageInfo symbolUsageInfo)
 => s_symbolUsageInfoToReferenceInfoMap.GetOrAdd(symbolUsageInfo, v => CreateReferenceInfo(v));
コード例 #10
0
 internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, SymbolUsageInfo symbolUsageInfo)
     : this(definition, sourceSpan, GetOrCreateReferenceInfo(symbolUsageInfo))
 {
     IsWrittenTo = symbolUsageInfo.IsWrittenTo();
 }
コード例 #11
0
 internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, SymbolUsageInfo symbolUsageInfo, ImmutableDictionary <string, string> additionalProperties)
     : this(definition, sourceSpan, symbolUsageInfo, additionalProperties, isWrittenTo : symbolUsageInfo.IsWrittenTo())
 {
 }
コード例 #12
0
 // Used by TypeScript
 internal SourceReferenceItem(DefinitionItem definition, DocumentSpan sourceSpan, SymbolUsageInfo symbolUsageInfo)
     : this(definition, sourceSpan, symbolUsageInfo, additionalProperties : ImmutableDictionary <string, string> .Empty)
 {
 }