Exemple #1
0
        async Task <SymbolDefinitionInfo> WithUsageDataAsync(SymbolDefinitionInfo definition, ProgramComposition composition)
        {
            var references = (await SymbolFinder.FindReferencesAsync(definition.Symbol, composition.Document.Project.Solution))
                             .ToImmutableArray();

            return(definition.WithUsageData(references));
        }
Exemple #2
0
 SymbolDefinitionInfo WithUpdatedProtectionFlag(SymbolDefinitionInfo d)
 {
     return(ProtectedNames.Contains(d.Symbol.Name) ||
            ProtectedSymbols.Contains(d.Symbol.GetFullName(DeclarationFullNameFlags.WithoutNamespaceName)) ||
            d.SyntaxNode.ShouldBePreserved()
         ? d.AsProtected()
         : d.AsUnprotected());
 }
Exemple #3
0
        async Task <SymbolDefinitionInfo> WithUsageDataAsync(SymbolDefinitionInfo definition, ProgramComposition composition)
        {
            var references = (await SymbolFinder.FindReferencesAsync(definition.Symbol, composition.Document.Project.Solution))
                             .ToImmutableArray();

            definition = definition.WithUsageData(references);

            // Check for extension class usage
            var symbol = definition.Symbol;

            if (symbol.IsDefinition && symbol is ITypeSymbol typeSymbol && typeSymbol.TypeKind == TypeKind.Class && typeSymbol.IsStatic && typeSymbol.ContainingType == null)
            {
                var members = typeSymbol.GetMembers().Where(m => m is IMethodSymbol methodSymbol && methodSymbol.IsStatic && methodSymbol.IsExtensionMethod).ToArray();
                foreach (var member in members)
                {
                    references = references.AddRange((await SymbolFinder.FindReferencesAsync(member, composition.Document.Project.Solution)));
                }
                definition = definition.WithUsageData(references);
            }

            return(definition);
        }
Exemple #4
0
 static bool IsNotSpecialDefinitions(SymbolDefinitionInfo s)
 {
     return(s.Symbol != null && !s.Symbol.IsOverride && !s.Symbol.IsInterfaceImplementation());
 }