src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Options\SymbolNamesWithValueOption.cs (24)
26internal const SymbolKind AllKinds = SymbolKind.ErrorType;
54private readonly ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> _wildcardNamesBySymbolKind;
64ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> wildcardNamesBySymbolKind)
77_wildcardNamesBySymbolKind = ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>>.Empty;
92var wildcardNamesBuilder = PooledDictionary<SymbolKind, PooledDictionary<string, TValue>>.GetInstance();
142static void ProcessWildcardName(NameParts parts, PooledDictionary<SymbolKind, PooledDictionary<string, TValue>> wildcardNamesBuilder)
161'E' => (SymbolKind?)SymbolKind.Event,
162'F' => SymbolKind.Field,
163'M' => SymbolKind.Method,
164'N' => SymbolKind.Namespace,
165'P' => SymbolKind.Property,
166'T' => SymbolKind.NamedType,
271case SymbolKind.Event:
272case SymbolKind.Field:
273case SymbolKind.Method:
274case SymbolKind.NamedType:
275case SymbolKind.Namespace:
276case SymbolKind.Property:
279case SymbolKind.Assembly:
280case SymbolKind.ErrorType:
281case SymbolKind.NetModule:
377internal ref readonly ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> WildcardNamesBySymbolKind => ref _symbolNamesWithValueOption._wildcardNamesBySymbolKind;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\NamingStyles\Serialization\SymbolSpecification.cs (27)
61new SymbolKindOrTypeKind(SymbolKind.Namespace),
69new SymbolKindOrTypeKind(SymbolKind.Property),
72new SymbolKindOrTypeKind(SymbolKind.Field),
73new SymbolKindOrTypeKind(SymbolKind.Event),
74new SymbolKindOrTypeKind(SymbolKind.Parameter),
76new SymbolKindOrTypeKind(SymbolKind.Local),
96public bool AppliesTo(SymbolKind symbolKind, Accessibility accessibility)
159case SymbolKind.Namespace:
162case SymbolKind.Parameter:
163case SymbolKind.TypeParameter:
166case SymbolKind.Method:
288foreach (var symbolKindElement in symbolKindListElement.Elements(nameof(SymbolKind)))
339public SymbolKindOrTypeKind(SymbolKind symbolKind)
354public SymbolKind? SymbolKind => (_category == SymbolCategory.Other) ? (SymbolKind)_kind : null;
361SymbolCategory.Other => symbol.IsKind((SymbolKind)_kind),
370SymbolCategory.Other => new XElement(nameof(SymbolKind), (SymbolKind)_kind),
421var symbolKind = (SymbolKind)Enum.Parse(typeof(SymbolKind), symbolKindElement.Value);
427CodeAnalysis.SymbolKind.Method => new(CodeAnalysis.MethodKind.Ordinary),
438public static implicit operator SymbolKindOrTypeKind(SymbolKind symbolKind)
506var kind = symbol.Kind;
507if (Modifiers.HasFlag(Modifiers.Async) && kind == SymbolKind.Method && ((IMethodSymbol)symbol).IsAsync)
514if (kind == SymbolKind.Field && ((IFieldSymbol)symbol).IsReadOnly)
522if ((kind == SymbolKind.Field && ((IFieldSymbol)symbol).IsConst) ||
523(kind == SymbolKind.Local && ((ILocalSymbol)symbol).IsConst))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\ISymbolExtensions.cs (25)
40case SymbolKind.Alias:
45case SymbolKind.Parameter:
49case SymbolKind.TypeParameter:
54while (symbol != null && symbol.Kind != SymbolKind.Namespace)
121if (symbol.Kind is SymbolKind.Event or SymbolKind.Property)
152if (symbol.Kind is not SymbolKind.Method and not SymbolKind.Property and not SymbolKind.Event)
189if (symbol.Kind == SymbolKind.Event)
194if (symbol.Kind == SymbolKind.Property)
235=> symbol is { Kind: SymbolKind.ArrayType };
243public static bool IsKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind)
246public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind)
249public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind1, SymbolKind kind2)
255public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind1, SymbolKind kind2, SymbolKind kind3)
261public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, params SymbolKind[] kinds)
271=> symbol is { Kind: SymbolKind.Field, ContainingType.TypeKind: TypeKind.Enum };
354SymbolKind.NamedType => ((INamedTypeSymbol)symbol).Arity,
355SymbolKind.Method => ((IMethodSymbol)symbol).Arity,
636if (symbol.Kind != SymbolKind.Local)
822public static bool IsKind<TSymbol>(this ISymbol symbol, SymbolKind kind, [NotNullWhen(true)] out TSymbol? result) where TSymbol : class, ISymbol
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\SymbolEquivalenceComparer.EquivalenceVisitor.cs (28)
30var xKind = GetKindAndUnwrapAlias(ref x);
31var yKind = GetKindAndUnwrapAlias(ref y);
40if ((xKind == SymbolKind.DynamicType && IsObjectType(y)) ||
41(yKind == SymbolKind.DynamicType && IsObjectType(x)))
49if (xKind == SymbolKind.ArrayType && y.IsReadOnlySpan())
53else if (x.IsReadOnlySpan() && yKind == SymbolKind.ArrayType)
112private bool AreEquivalentWorker(ISymbol x, ISymbol y, SymbolKind k, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
117SymbolKind.ArrayType => ArrayTypesAreEquivalent((IArrayTypeSymbol)x, (IArrayTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
118SymbolKind.Assembly => AssembliesAreEquivalent((IAssemblySymbol)x, (IAssemblySymbol)y),
119SymbolKind.DynamicType => NullableAnnotationsEquivalent((IDynamicTypeSymbol)x, (IDynamicTypeSymbol)y),
120SymbolKind.Event => EventsAreEquivalent((IEventSymbol)x, (IEventSymbol)y, equivalentTypesWithDifferingAssemblies),
121SymbolKind.Field => FieldsAreEquivalent((IFieldSymbol)x, (IFieldSymbol)y, equivalentTypesWithDifferingAssemblies),
122SymbolKind.Label => LabelsAreEquivalent((ILabelSymbol)x, (ILabelSymbol)y),
123SymbolKind.Local => LocalsAreEquivalent((ILocalSymbol)x, (ILocalSymbol)y),
124SymbolKind.Method => MethodsAreEquivalent((IMethodSymbol)x, (IMethodSymbol)y, equivalentTypesWithDifferingAssemblies),
125SymbolKind.NetModule => ModulesAreEquivalent((IModuleSymbol)x, (IModuleSymbol)y),
126SymbolKind.NamedType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
127SymbolKind.ErrorType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
128SymbolKind.Namespace => NamespacesAreEquivalent((INamespaceSymbol)x, (INamespaceSymbol)y, equivalentTypesWithDifferingAssemblies),
129SymbolKind.Parameter => ParametersAreEquivalent((IParameterSymbol)x, (IParameterSymbol)y, equivalentTypesWithDifferingAssemblies),
130SymbolKind.PointerType => PointerTypesAreEquivalent((IPointerTypeSymbol)x, (IPointerTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
131SymbolKind.Property => PropertiesAreEquivalent((IPropertySymbol)x, (IPropertySymbol)y, equivalentTypesWithDifferingAssemblies),
132SymbolKind.RangeVariable => RangeVariablesAreEquivalent((IRangeVariableSymbol)x, (IRangeVariableSymbol)y),
133SymbolKind.TypeParameter => TypeParametersAreEquivalent((ITypeParameterSymbol)x, (ITypeParameterSymbol)y, equivalentTypesWithDifferingAssemblies),
134SymbolKind.Preprocessing => PreprocessingSymbolsAreEquivalent((IPreprocessingSymbol)x, (IPreprocessingSymbol)y),
135SymbolKind.FunctionPointerType => FunctionPointerTypesAreEquivalent((IFunctionPointerTypeSymbol)x, (IFunctionPointerTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
367if (x.Kind == SymbolKind.ErrorType &&
371Debug.Assert(y.Kind == SymbolKind.ErrorType);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\SymbolEquivalenceComparer.GetHashCodeVisitor.cs (17)
47if (x.Kind == SymbolKind.DynamicType ||
62SymbolKind.ArrayType => CombineHashCodes((IArrayTypeSymbol)x, currentHash),
63SymbolKind.Assembly => CombineHashCodes((IAssemblySymbol)x, currentHash),
64SymbolKind.Event => CombineHashCodes((IEventSymbol)x, currentHash),
65SymbolKind.Field => CombineHashCodes((IFieldSymbol)x, currentHash),
66SymbolKind.Label => CombineHashCodes((ILabelSymbol)x, currentHash),
67SymbolKind.Local => CombineHashCodes((ILocalSymbol)x, currentHash),
68SymbolKind.Method => CombineHashCodes((IMethodSymbol)x, currentHash),
69SymbolKind.NetModule => CombineHashCodes((IModuleSymbol)x, currentHash),
70SymbolKind.NamedType => CombineHashCodes((INamedTypeSymbol)x, currentHash),
71SymbolKind.Namespace => CombineHashCodes((INamespaceSymbol)x, currentHash),
72SymbolKind.Parameter => CombineHashCodes((IParameterSymbol)x, currentHash),
73SymbolKind.PointerType => CombineHashCodes((IPointerTypeSymbol)x, currentHash),
74SymbolKind.Property => CombineHashCodes((IPropertySymbol)x, currentHash),
75SymbolKind.RangeVariable => CombineHashCodes((IRangeVariableSymbol)x, currentHash),
76SymbolKind.TypeParameter => CombineHashCodes((ITypeParameterSymbol)x, currentHash),
77SymbolKind.Preprocessing => CombineHashCodes((IPreprocessingSymbol)x, currentHash),
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\CodeAnalysisMetricData.cs (27)
36symbol.Kind is SymbolKind.Assembly or
37SymbolKind.Namespace or
38SymbolKind.NamedType or
39SymbolKind.Method or
40SymbolKind.Field or
41SymbolKind.Event or
42SymbolKind.Property);
43Debug.Assert(depthOfInheritance.HasValue == (symbol.Kind == SymbolKind.Assembly || symbol.Kind == SymbolKind.Namespace || symbol.Kind == SymbolKind.NamedType));
123case SymbolKind.Assembly:
127case SymbolKind.Namespace:
138case SymbolKind.NamedType:
267SymbolKind.Assembly => await AssemblyMetricData.ComputeAsync((IAssemblySymbol)symbol, context).ConfigureAwait(false),
269SymbolKind.Namespace => await NamespaceMetricData.ComputeAsync((INamespaceSymbol)symbol, context).ConfigureAwait(false),
271SymbolKind.NamedType => await NamedTypeMetricData.ComputeAsync((INamedTypeSymbol)symbol, context).ConfigureAwait(false),
273SymbolKind.Method => MethodMetricData.Compute((IMethodSymbol)symbol, context),
275SymbolKind.Property => PropertyMetricData.Compute((IPropertySymbol)symbol, context),
277SymbolKind.Field => FieldMetricData.Compute((IFieldSymbol)symbol, context),
279SymbolKind.Event => EventMetricData.Compute((IEventSymbol)symbol, context),
305SymbolKind.Assembly => AssemblyMetricData.ComputeSynchronously((IAssemblySymbol)symbol, context),
307SymbolKind.Namespace => NamespaceMetricData.ComputeSynchronously((INamespaceSymbol)symbol, context),
309SymbolKind.NamedType => NamedTypeMetricData.ComputeSynchronously((INamedTypeSymbol)symbol, context),
311SymbolKind.Method => MethodMetricData.Compute((IMethodSymbol)symbol, context),
313SymbolKind.Property => PropertyMetricData.Compute((IPropertySymbol)symbol, context),
315SymbolKind.Field => FieldMetricData.Compute((IFieldSymbol)symbol, context),
317SymbolKind.Event => EventMetricData.Compute((IEventSymbol)symbol, context),
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Options\SymbolNamesWithValueOption.cs (24)
26internal const SymbolKind AllKinds = SymbolKind.ErrorType;
54private readonly ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> _wildcardNamesBySymbolKind;
64ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> wildcardNamesBySymbolKind)
77_wildcardNamesBySymbolKind = ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>>.Empty;
92var wildcardNamesBuilder = PooledDictionary<SymbolKind, PooledDictionary<string, TValue>>.GetInstance();
142static void ProcessWildcardName(NameParts parts, PooledDictionary<SymbolKind, PooledDictionary<string, TValue>> wildcardNamesBuilder)
161'E' => (SymbolKind?)SymbolKind.Event,
162'F' => SymbolKind.Field,
163'M' => SymbolKind.Method,
164'N' => SymbolKind.Namespace,
165'P' => SymbolKind.Property,
166'T' => SymbolKind.NamedType,
271case SymbolKind.Event:
272case SymbolKind.Field:
273case SymbolKind.Method:
274case SymbolKind.NamedType:
275case SymbolKind.Namespace:
276case SymbolKind.Property:
279case SymbolKind.Assembly:
280case SymbolKind.ErrorType:
281case SymbolKind.NetModule:
377internal ref readonly ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> WildcardNamesBySymbolKind => ref _symbolNamesWithValueOption._wildcardNamesBySymbolKind;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\NamingStyles\Serialization\SymbolSpecification.cs (27)
61new SymbolKindOrTypeKind(SymbolKind.Namespace),
69new SymbolKindOrTypeKind(SymbolKind.Property),
72new SymbolKindOrTypeKind(SymbolKind.Field),
73new SymbolKindOrTypeKind(SymbolKind.Event),
74new SymbolKindOrTypeKind(SymbolKind.Parameter),
76new SymbolKindOrTypeKind(SymbolKind.Local),
96public bool AppliesTo(SymbolKind symbolKind, Accessibility accessibility)
159case SymbolKind.Namespace:
162case SymbolKind.Parameter:
163case SymbolKind.TypeParameter:
166case SymbolKind.Method:
288foreach (var symbolKindElement in symbolKindListElement.Elements(nameof(SymbolKind)))
339public SymbolKindOrTypeKind(SymbolKind symbolKind)
354public SymbolKind? SymbolKind => (_category == SymbolCategory.Other) ? (SymbolKind)_kind : null;
361SymbolCategory.Other => symbol.IsKind((SymbolKind)_kind),
370SymbolCategory.Other => new XElement(nameof(SymbolKind), (SymbolKind)_kind),
421var symbolKind = (SymbolKind)Enum.Parse(typeof(SymbolKind), symbolKindElement.Value);
427CodeAnalysis.SymbolKind.Method => new(CodeAnalysis.MethodKind.Ordinary),
438public static implicit operator SymbolKindOrTypeKind(SymbolKind symbolKind)
506var kind = symbol.Kind;
507if (Modifiers.HasFlag(Modifiers.Async) && kind == SymbolKind.Method && ((IMethodSymbol)symbol).IsAsync)
514if (kind == SymbolKind.Field && ((IFieldSymbol)symbol).IsReadOnly)
522if ((kind == SymbolKind.Field && ((IFieldSymbol)symbol).IsConst) ||
523(kind == SymbolKind.Local && ((ILocalSymbol)symbol).IsConst))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\ISymbolExtensions.cs (25)
40case SymbolKind.Alias:
45case SymbolKind.Parameter:
49case SymbolKind.TypeParameter:
54while (symbol != null && symbol.Kind != SymbolKind.Namespace)
121if (symbol.Kind is SymbolKind.Event or SymbolKind.Property)
152if (symbol.Kind is not SymbolKind.Method and not SymbolKind.Property and not SymbolKind.Event)
189if (symbol.Kind == SymbolKind.Event)
194if (symbol.Kind == SymbolKind.Property)
235=> symbol is { Kind: SymbolKind.ArrayType };
243public static bool IsKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind)
246public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind)
249public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind1, SymbolKind kind2)
255public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind1, SymbolKind kind2, SymbolKind kind3)
261public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, params SymbolKind[] kinds)
271=> symbol is { Kind: SymbolKind.Field, ContainingType.TypeKind: TypeKind.Enum };
354SymbolKind.NamedType => ((INamedTypeSymbol)symbol).Arity,
355SymbolKind.Method => ((IMethodSymbol)symbol).Arity,
636if (symbol.Kind != SymbolKind.Local)
822public static bool IsKind<TSymbol>(this ISymbol symbol, SymbolKind kind, [NotNullWhen(true)] out TSymbol? result) where TSymbol : class, ISymbol
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\SymbolEquivalenceComparer.EquivalenceVisitor.cs (28)
30var xKind = GetKindAndUnwrapAlias(ref x);
31var yKind = GetKindAndUnwrapAlias(ref y);
40if ((xKind == SymbolKind.DynamicType && IsObjectType(y)) ||
41(yKind == SymbolKind.DynamicType && IsObjectType(x)))
49if (xKind == SymbolKind.ArrayType && y.IsReadOnlySpan())
53else if (x.IsReadOnlySpan() && yKind == SymbolKind.ArrayType)
112private bool AreEquivalentWorker(ISymbol x, ISymbol y, SymbolKind k, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
117SymbolKind.ArrayType => ArrayTypesAreEquivalent((IArrayTypeSymbol)x, (IArrayTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
118SymbolKind.Assembly => AssembliesAreEquivalent((IAssemblySymbol)x, (IAssemblySymbol)y),
119SymbolKind.DynamicType => NullableAnnotationsEquivalent((IDynamicTypeSymbol)x, (IDynamicTypeSymbol)y),
120SymbolKind.Event => EventsAreEquivalent((IEventSymbol)x, (IEventSymbol)y, equivalentTypesWithDifferingAssemblies),
121SymbolKind.Field => FieldsAreEquivalent((IFieldSymbol)x, (IFieldSymbol)y, equivalentTypesWithDifferingAssemblies),
122SymbolKind.Label => LabelsAreEquivalent((ILabelSymbol)x, (ILabelSymbol)y),
123SymbolKind.Local => LocalsAreEquivalent((ILocalSymbol)x, (ILocalSymbol)y),
124SymbolKind.Method => MethodsAreEquivalent((IMethodSymbol)x, (IMethodSymbol)y, equivalentTypesWithDifferingAssemblies),
125SymbolKind.NetModule => ModulesAreEquivalent((IModuleSymbol)x, (IModuleSymbol)y),
126SymbolKind.NamedType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
127SymbolKind.ErrorType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
128SymbolKind.Namespace => NamespacesAreEquivalent((INamespaceSymbol)x, (INamespaceSymbol)y, equivalentTypesWithDifferingAssemblies),
129SymbolKind.Parameter => ParametersAreEquivalent((IParameterSymbol)x, (IParameterSymbol)y, equivalentTypesWithDifferingAssemblies),
130SymbolKind.PointerType => PointerTypesAreEquivalent((IPointerTypeSymbol)x, (IPointerTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
131SymbolKind.Property => PropertiesAreEquivalent((IPropertySymbol)x, (IPropertySymbol)y, equivalentTypesWithDifferingAssemblies),
132SymbolKind.RangeVariable => RangeVariablesAreEquivalent((IRangeVariableSymbol)x, (IRangeVariableSymbol)y),
133SymbolKind.TypeParameter => TypeParametersAreEquivalent((ITypeParameterSymbol)x, (ITypeParameterSymbol)y, equivalentTypesWithDifferingAssemblies),
134SymbolKind.Preprocessing => PreprocessingSymbolsAreEquivalent((IPreprocessingSymbol)x, (IPreprocessingSymbol)y),
135SymbolKind.FunctionPointerType => FunctionPointerTypesAreEquivalent((IFunctionPointerTypeSymbol)x, (IFunctionPointerTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
367if (x.Kind == SymbolKind.ErrorType &&
371Debug.Assert(y.Kind == SymbolKind.ErrorType);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\SymbolEquivalenceComparer.GetHashCodeVisitor.cs (17)
47if (x.Kind == SymbolKind.DynamicType ||
62SymbolKind.ArrayType => CombineHashCodes((IArrayTypeSymbol)x, currentHash),
63SymbolKind.Assembly => CombineHashCodes((IAssemblySymbol)x, currentHash),
64SymbolKind.Event => CombineHashCodes((IEventSymbol)x, currentHash),
65SymbolKind.Field => CombineHashCodes((IFieldSymbol)x, currentHash),
66SymbolKind.Label => CombineHashCodes((ILabelSymbol)x, currentHash),
67SymbolKind.Local => CombineHashCodes((ILocalSymbol)x, currentHash),
68SymbolKind.Method => CombineHashCodes((IMethodSymbol)x, currentHash),
69SymbolKind.NetModule => CombineHashCodes((IModuleSymbol)x, currentHash),
70SymbolKind.NamedType => CombineHashCodes((INamedTypeSymbol)x, currentHash),
71SymbolKind.Namespace => CombineHashCodes((INamespaceSymbol)x, currentHash),
72SymbolKind.Parameter => CombineHashCodes((IParameterSymbol)x, currentHash),
73SymbolKind.PointerType => CombineHashCodes((IPointerTypeSymbol)x, currentHash),
74SymbolKind.Property => CombineHashCodes((IPropertySymbol)x, currentHash),
75SymbolKind.RangeVariable => CombineHashCodes((IRangeVariableSymbol)x, currentHash),
76SymbolKind.TypeParameter => CombineHashCodes((ITypeParameterSymbol)x, currentHash),
77SymbolKind.Preprocessing => CombineHashCodes((IPreprocessingSymbol)x, currentHash),
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateVariable\AbstractGenerateVariableService.cs (4)
102document.Document, state, SymbolKind.Property, state.DetermineMaximalAccessibility(), cancellationToken).ConfigureAwait(false))
118Document document, State state, SymbolKind kind, Accessibility accessibility, CancellationToken cancellationToken)
184document, state, SymbolKind.Local, Accessibility.NotApplicable, cancellationToken).ConfigureAwait(false))
200document, state, SymbolKind.Parameter, Accessibility.NotApplicable, cancellationToken).ConfigureAwait(false))
Binder\BinderFactory.BinderFactoryVisitor.cs (11)
521return (SourceMemberMethodSymbol)GetMemberSymbol(methodName, baseMethodDeclarationSyntax.FullSpan, container, SymbolKind.Method);
540return (SourcePropertySymbol)GetMemberSymbol(propertyName, basePropertyDeclarationSyntax.Span, container, SymbolKind.Property);
557return (SourceEventSymbol)GetMemberSymbol(eventName, eventDeclarationSyntax.Span, container, SymbolKind.Event);
560private Symbol GetMemberSymbol(string memberName, TextSpan memberSpan, NamedTypeSymbol container, SymbolKind kind)
562Debug.Assert(kind is SymbolKind.Method or SymbolKind.Property or SymbolKind.Event);
592bool checkSymbol(Symbol sym, TextSpan memberSpan, SymbolKind kind, out Symbol result)
601if (kind is SymbolKind.Method or SymbolKind.Property or SymbolKind.Event)
Completion\CompletionProviders\DeclarationName\DeclarationNameInfo.cs (30)
30[new SymbolKindOrTypeKind(SymbolKind.Parameter)];
33[new SymbolKindOrTypeKind(SymbolKind.Property)];
107_ => [new SymbolKindOrTypeKind(SymbolKind.Local)], cancellationToken);
129_ => [new SymbolKindOrTypeKind(SymbolKind.Local)], cancellationToken);
144[new SymbolKindOrTypeKind(SymbolKind.Local)],
155[new SymbolKindOrTypeKind(SymbolKind.Local)],
222[new SymbolKindOrTypeKind(SymbolKind.Local)],
243_ => [new SymbolKindOrTypeKind(SymbolKind.Local), new SymbolKindOrTypeKind(MethodKind.LocalFunction)],
426(_ => [new SymbolKindOrTypeKind(SymbolKind.Local)])
473possibleDeclarationComputer: d => [new SymbolKindOrTypeKind(SymbolKind.Local)],
489possibleDeclarationComputer: d => [new SymbolKindOrTypeKind(SymbolKind.Local)],
500[new SymbolKindOrTypeKind(SymbolKind.TypeParameter)],
600return [new SymbolKindOrTypeKind(SymbolKind.Field)];
604new SymbolKindOrTypeKind(SymbolKind.Field),
605new SymbolKindOrTypeKind(SymbolKind.Property),
610possibleTypes = possibleTypes.Remove(new SymbolKindOrTypeKind(SymbolKind.Field));
616possibleTypes = possibleTypes.Remove(new SymbolKindOrTypeKind(SymbolKind.Field));
617possibleTypes = possibleTypes.Remove(new SymbolKindOrTypeKind(SymbolKind.Property));
627? [new SymbolKindOrTypeKind(SymbolKind.Local)] :
630[new SymbolKindOrTypeKind(SymbolKind.Local), new SymbolKindOrTypeKind(MethodKind.LocalFunction)];
716public static Glyph GetGlyph(SymbolKind kind, Accessibility? declaredAccessibility)
720SymbolKind.Field => Glyph.FieldPublic,
721SymbolKind.Local => Glyph.Local,
722SymbolKind.Method => Glyph.MethodPublic,
723SymbolKind.Parameter => Glyph.Parameter,
724SymbolKind.Property => Glyph.PropertyPublic,
725SymbolKind.RangeVariable => Glyph.RangeVariable,
726SymbolKind.TypeParameter => Glyph.TypeParameter,
750public static SymbolKind GetSymbolKind(SymbolKindOrTypeKind symbolKindOrTypeKind)
755(symbolKindOrTypeKind.MethodKind.HasValue ? SymbolKind.Method : throw ExceptionUtilities.Unreachable());
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructFieldsWritable\CSharpMakeStructFieldsWritableDiagnosticAnalyzer.cs (1)
69}, SymbolKind.NamedType);
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (1)
51}, SymbolKind.NamedType);
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructReadOnly\CSharpMakeStructReadOnlyDiagnosticAnalyzer.cs (1)
67}, SymbolKind.NamedType);
EditAndContinue\AbstractEditAndContinueAnalyzer.cs (38)
316SymbolKind.Event => GetDisplayName((IEventSymbol)symbol),
317SymbolKind.Field => GetDisplayName((IFieldSymbol)symbol),
318SymbolKind.Method => GetDisplayName((IMethodSymbol)symbol),
319SymbolKind.NamedType => GetDisplayName((INamedTypeSymbol)symbol),
320SymbolKind.Parameter => FeaturesResources.parameter,
321SymbolKind.Local => FeaturesResources.local_variable,
322SymbolKind.Property => GetDisplayName((IPropertySymbol)symbol),
323SymbolKind.TypeParameter => FeaturesResources.type_parameter,
2641case SymbolKind.Field:
2644case SymbolKind.Event:
2647case SymbolKind.Property:
2653case SymbolKind.Method:
2660case SymbolKind.NamedType when oldMember is INamedTypeSymbol { DelegateInvokeMethod: { } oldInvokeMethod }:
3717=> symbol.Kind is SymbolKind.Method or SymbolKind.Property or SymbolKind.Field or SymbolKind.Event;
4337rudeEdit = (oldSymbol.Kind == SymbolKind.Field || newSymbol.Kind == SymbolKind.Field) ? RudeEditKind.FieldKindUpdate : RudeEditKind.Update;
4712oldMember is not IMethodSymbol { AssociatedSymbol.Kind: SymbolKind.Property or SymbolKind.Event })
4896var rudeEdit = oldSymbol.ContainingSymbol.Kind == SymbolKind.Method ? RudeEditKind.GenericMethodUpdate : RudeEditKind.GenericTypeUpdate;
5229if (newDiagnosticSymbol.Kind is not (SymbolKind.Parameter or SymbolKind.TypeParameter))
5244if (oldSymbol.Kind is not (SymbolKind.Parameter or SymbolKind.TypeParameter))
5388case SymbolKind.Field:
5396case SymbolKind.Property:
5405case SymbolKind.Event:
5414case SymbolKind.Parameter:
5428parameter.ContainingType.GetMembers($"<{parameter.Name}>P").Any(m => m.Kind == SymbolKind.Field);
5783member.Kind is SymbolKind.Field or SymbolKind.Property &&
6623if (oldSymbol.Kind == SymbolKind.RangeVariable)
6643if (oldSymbol.Kind == SymbolKind.Parameter)
6739SymbolKind.Parameter => ((IParameterSymbol)localOrParameter).Type,
6740SymbolKind.Local => ((ILocalSymbol)localOrParameter).Type,
6746Debug.Assert(local.Kind is not SymbolKind.RangeVariable);
MetadataAsSource\AbstractMetadataAsSourceService.WrappedNamedTypeSymbol.cs (10)
34where m.Kind is SymbolKind.Event or
35SymbolKind.Field or
36SymbolKind.Method or
37SymbolKind.NamedType or
38SymbolKind.Property
47SymbolKind.Field => new WrappedFieldSymbol((IFieldSymbol)m, docCommentFormattingService),
48SymbolKind.Event => new WrappedEventSymbol((IEventSymbol)m, canImplementImplicitly, docCommentFormattingService),
49SymbolKind.Method => new WrappedMethodSymbol((IMethodSymbol)m, canImplementImplicitly, docCommentFormattingService),
50SymbolKind.NamedType => new WrappedNamedTypeSymbol((INamedTypeSymbol)m, canImplementImplicitly, docCommentFormattingService),
51SymbolKind.Property => new WrappedPropertySymbol((IPropertySymbol)m, canImplementImplicitly, docCommentFormattingService),
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateVariable\AbstractGenerateVariableService.cs (4)
102document.Document, state, SymbolKind.Property, state.DetermineMaximalAccessibility(), cancellationToken).ConfigureAwait(false))
118Document document, State state, SymbolKind kind, Accessibility accessibility, CancellationToken cancellationToken)
184document, state, SymbolKind.Local, Accessibility.NotApplicable, cancellationToken).ConfigureAwait(false))
200document, state, SymbolKind.Parameter, Accessibility.NotApplicable, cancellationToken).ConfigureAwait(false))
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\CancellationTokenParametersMustComeLast.cs (1)
155SymbolKind.Method);
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\DoNotDeclareVisibleInstanceFields.cs (1)
76}, SymbolKind.Field);
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\DoNotOverloadOperatorEqualsOnReferenceTypes.cs (1)
78}, SymbolKind.Method);
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\EventsShouldNotHaveBeforeOrAfterPrefix.cs (1)
63}, SymbolKind.Event);
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\IdentifiersShouldNotMatchKeywords.cs (16)
76private static readonly ImmutableHashSet<SymbolKind> s_defaultAnalyzedSymbolKinds =
78SymbolKind.Namespace,
79SymbolKind.NamedType,
80SymbolKind.Method,
81SymbolKind.Property,
82SymbolKind.Event,
83SymbolKind.Parameter
98SymbolKind.NamedType);
100compilationStartAnalysisContext.RegisterSymbolAction(AnalyzeTypeRule, SymbolKind.NamedType);
101compilationStartAnalysisContext.RegisterSymbolAction(AnalyzeMemberRule, SymbolKind.Event, SymbolKind.Method, SymbolKind.Property);
102compilationStartAnalysisContext.RegisterSymbolAction(AnalyzeMemberParameterRule, SymbolKind.Method);
116private static ImmutableHashSet<SymbolKind> GetSymbolKindsToAnalyze(SymbolAnalysisContext context, DiagnosticDescriptor rule)
128if (!GetSymbolKindsToAnalyze(context, NamespaceRule).Contains(SymbolKind.Namespace))
218if (!GetSymbolKindsToAnalyze(context, MemberParameterRule).Contains(SymbolKind.Parameter) ||
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\NonConstantFieldsShouldNotBeVisible.cs (1)
48}, SymbolKind.Field);
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\OverloadOperatorEqualsOnOverridingValueTypeEquals.cs (1)
51SymbolKind.NamedType);
Microsoft.CodeQuality.Analyzers\Maintainability\CodeMetricsAnalyzer.cs (33)
131out ImmutableDictionary<string, IReadOnlyList<(SymbolKind?, uint)>>? ruleIdToThresholdMap,
156if (symbol.Kind == SymbolKind.NamedType && codeAnalysisMetricData.DepthOfInheritance.HasValue)
214uint? getThreshold(string ruleId, SymbolKind symbolKind)
218ruleIdToThresholdMap.TryGetValue(ruleId, out IReadOnlyList<(SymbolKind? symbolKindOpt, uint threshold)>? values))
220foreach ((SymbolKind? symbolKindOpt, uint threshold) in values)
239static bool isApplicableByDefault(string ruleId, SymbolKind symbolKind)
243CA1501RuleId => symbolKind == SymbolKind.NamedType,
244CA1502RuleId => symbolKind == SymbolKind.Method,
247SymbolKind.NamedType or SymbolKind.Method or SymbolKind.Field or SymbolKind.Property or SymbolKind.Event => true,
252SymbolKind.NamedType or SymbolKind.Method or SymbolKind.Field or SymbolKind.Property or SymbolKind.Event => true,
259static uint? getDefaultThreshold(string ruleId, SymbolKind symbolKind)
275CA1506RuleId => symbolKind == SymbolKind.NamedType ? 95 : (uint)40,
287[NotNullWhen(returnValue: true)] out ImmutableDictionary<string, IReadOnlyList<(SymbolKind?, uint)>>? ruleIdToThresholdMap,
320[NotNullWhen(returnValue: true)] out ImmutableDictionary<string, IReadOnlyList<(SymbolKind?, uint)>>? ruleIdToThresholdMap,
330var builder = ImmutableDictionary.CreateBuilder<string, IReadOnlyList<(SymbolKind?, uint)>>(StringComparer.OrdinalIgnoreCase);
357SymbolKind? symbolKind = null;
387symbolKind = SymbolKind.Assembly;
390symbolKind = SymbolKind.Namespace;
393symbolKind = SymbolKind.NamedType;
396symbolKind = SymbolKind.Method;
399symbolKind = SymbolKind.Field;
402symbolKind = SymbolKind.Event;
405symbolKind = SymbolKind.Property;
419values = new List<(SymbolKind?, uint)>();
423((List<(SymbolKind?, uint)>)values).Add((symbolKind, threshold));
Microsoft.NetCore.Analyzers\Runtime\ModuleInitializerAttributeShouldNotBeUsedInLibraries.cs (1)
81SymbolKind.Method);
Microsoft.NetCore.Analyzers\Runtime\UseAsyncMethodInAsyncContext.cs (14)
70GetSymbolAndAddToList("Wait", WellKnownTypeNames.SystemThreadingTasksTask, SymbolKind.Method, syncBlockingSymbols, wellKnownTypeProvider);
71GetSymbolAndAddToList("WaitAll", WellKnownTypeNames.SystemThreadingTasksTask, SymbolKind.Method, syncBlockingSymbols, wellKnownTypeProvider);
72GetSymbolAndAddToList("WaitAny", WellKnownTypeNames.SystemThreadingTasksTask, SymbolKind.Method, syncBlockingSymbols, wellKnownTypeProvider);
73GetSymbolAndAddToList("Result", WellKnownTypeNames.SystemThreadingTasksTask1, SymbolKind.Property, syncBlockingSymbols, wellKnownTypeProvider);
74GetSymbolAndAddToList("Result", WellKnownTypeNames.SystemThreadingTasksValueTask, SymbolKind.Property, syncBlockingSymbols, wellKnownTypeProvider);
75GetSymbolAndAddToList("GetResult", WellKnownTypeNames.SystemRuntimeCompilerServicesTaskAwaiter, SymbolKind.Method, syncBlockingSymbols, wellKnownTypeProvider);
76GetSymbolAndAddToList("GetResult", WellKnownTypeNames.SystemRuntimeCompilerServicesValueTaskAwaiter, SymbolKind.Method, syncBlockingSymbols, wellKnownTypeProvider);
77GetSymbolAndAddToList("Sleep", WellKnownTypeNames.SystemThreadingThread, SymbolKind.Method, syncBlockingSymbols, wellKnownTypeProvider);
112|| InspectAndReportBlockingMemberAccess(context, methodSymbol, syncBlockingSymbols, SymbolKind.Method)
162InspectAndReportBlockingMemberAccess(context, propertyReferenceOperation.Property, syncBlockingSymbols, SymbolKind.Property);
192public SyncBlockingSymbol(string Name, string Namespace, SymbolKind Kind, ISymbol Value)
202public SymbolKind Kind { get; set; }
214private static void GetSymbolAndAddToList(string symbolName, string metadataName, SymbolKind kind, List<SyncBlockingSymbol> syncBlockingSymbols, WellKnownTypeProvider wellKnownTypeProvider)
334private static bool InspectAndReportBlockingMemberAccess(OperationAnalysisContext context, ISymbol memberSymbol, List<SyncBlockingSymbol> syncBlockingSymbols, SymbolKind kind)
Microsoft.NetFramework.Analyzers\MarkVerbHandlersWithValidateAntiforgeryTokenAnalyzer.cs (1)
164SymbolKind.Method);
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\CodeMetrics\CodeAnalysisMetricData.cs (27)
35symbol.Kind is SymbolKind.Assembly or
36SymbolKind.Namespace or
37SymbolKind.NamedType or
38SymbolKind.Method or
39SymbolKind.Field or
40SymbolKind.Event or
41SymbolKind.Property);
42Debug.Assert(depthOfInheritance.HasValue == (symbol.Kind == SymbolKind.Assembly || symbol.Kind == SymbolKind.Namespace || symbol.Kind == SymbolKind.NamedType));
122case SymbolKind.Assembly:
126case SymbolKind.Namespace:
137case SymbolKind.NamedType:
266SymbolKind.Assembly => await AssemblyMetricData.ComputeAsync((IAssemblySymbol)symbol, context).ConfigureAwait(false),
268SymbolKind.Namespace => await NamespaceMetricData.ComputeAsync((INamespaceSymbol)symbol, context).ConfigureAwait(false),
270SymbolKind.NamedType => await NamedTypeMetricData.ComputeAsync((INamedTypeSymbol)symbol, context).ConfigureAwait(false),
272SymbolKind.Method => MethodMetricData.Compute((IMethodSymbol)symbol, context),
274SymbolKind.Property => PropertyMetricData.Compute((IPropertySymbol)symbol, context),
276SymbolKind.Field => FieldMetricData.Compute((IFieldSymbol)symbol, context),
278SymbolKind.Event => EventMetricData.Compute((IEventSymbol)symbol, context),
304SymbolKind.Assembly => AssemblyMetricData.ComputeSynchronously((IAssemblySymbol)symbol, context),
306SymbolKind.Namespace => NamespaceMetricData.ComputeSynchronously((INamespaceSymbol)symbol, context),
308SymbolKind.NamedType => NamedTypeMetricData.ComputeSynchronously((INamedTypeSymbol)symbol, context),
310SymbolKind.Method => MethodMetricData.Compute((IMethodSymbol)symbol, context),
312SymbolKind.Property => PropertyMetricData.Compute((IPropertySymbol)symbol, context),
314SymbolKind.Field => FieldMetricData.Compute((IFieldSymbol)symbol, context),
316SymbolKind.Event => EventMetricData.Compute((IEventSymbol)symbol, context),
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\Options\SymbolNamesWithValueOption.cs (24)
21internal const SymbolKind AllKinds = SymbolKind.ErrorType;
49private readonly ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> _wildcardNamesBySymbolKind;
59ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> wildcardNamesBySymbolKind)
72_wildcardNamesBySymbolKind = ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>>.Empty;
87var wildcardNamesBuilder = PooledDictionary<SymbolKind, PooledDictionary<string, TValue>>.GetInstance();
129static void ProcessWildcardName(NameParts parts, PooledDictionary<SymbolKind, PooledDictionary<string, TValue>> wildcardNamesBuilder)
148'E' => (SymbolKind?)SymbolKind.Event,
149'F' => SymbolKind.Field,
150'M' => SymbolKind.Method,
151'N' => SymbolKind.Namespace,
152'P' => SymbolKind.Property,
153'T' => SymbolKind.NamedType,
258case SymbolKind.Event:
259case SymbolKind.Field:
260case SymbolKind.Method:
261case SymbolKind.NamedType:
262case SymbolKind.Namespace:
263case SymbolKind.Property:
266case SymbolKind.Assembly:
267case SymbolKind.ErrorType:
268case SymbolKind.NetModule:
371internal ref readonly ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> WildcardNamesBySymbolKind => ref _symbolNamesWithValueOption._wildcardNamesBySymbolKind;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\NamingStyles\Serialization\SymbolSpecification.cs (27)
61new SymbolKindOrTypeKind(SymbolKind.Namespace),
69new SymbolKindOrTypeKind(SymbolKind.Property),
72new SymbolKindOrTypeKind(SymbolKind.Field),
73new SymbolKindOrTypeKind(SymbolKind.Event),
74new SymbolKindOrTypeKind(SymbolKind.Parameter),
76new SymbolKindOrTypeKind(SymbolKind.Local),
96public bool AppliesTo(SymbolKind symbolKind, Accessibility accessibility)
159case SymbolKind.Namespace:
162case SymbolKind.Parameter:
163case SymbolKind.TypeParameter:
166case SymbolKind.Method:
288foreach (var symbolKindElement in symbolKindListElement.Elements(nameof(SymbolKind)))
339public SymbolKindOrTypeKind(SymbolKind symbolKind)
354public SymbolKind? SymbolKind => (_category == SymbolCategory.Other) ? (SymbolKind)_kind : null;
361SymbolCategory.Other => symbol.IsKind((SymbolKind)_kind),
370SymbolCategory.Other => new XElement(nameof(SymbolKind), (SymbolKind)_kind),
421var symbolKind = (SymbolKind)Enum.Parse(typeof(SymbolKind), symbolKindElement.Value);
427CodeAnalysis.SymbolKind.Method => new(CodeAnalysis.MethodKind.Ordinary),
438public static implicit operator SymbolKindOrTypeKind(SymbolKind symbolKind)
506var kind = symbol.Kind;
507if (Modifiers.HasFlag(Modifiers.Async) && kind == SymbolKind.Method && ((IMethodSymbol)symbol).IsAsync)
514if (kind == SymbolKind.Field && ((IFieldSymbol)symbol).IsReadOnly)
522if ((kind == SymbolKind.Field && ((IFieldSymbol)symbol).IsConst) ||
523(kind == SymbolKind.Local && ((ILocalSymbol)symbol).IsConst))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\ISymbolExtensions.cs (25)
40case SymbolKind.Alias:
45case SymbolKind.Parameter:
49case SymbolKind.TypeParameter:
54while (symbol != null && symbol.Kind != SymbolKind.Namespace)
121if (symbol.Kind is SymbolKind.Event or SymbolKind.Property)
152if (symbol.Kind is not SymbolKind.Method and not SymbolKind.Property and not SymbolKind.Event)
189if (symbol.Kind == SymbolKind.Event)
194if (symbol.Kind == SymbolKind.Property)
235=> symbol is { Kind: SymbolKind.ArrayType };
243public static bool IsKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind)
246public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind)
249public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind1, SymbolKind kind2)
255public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind1, SymbolKind kind2, SymbolKind kind3)
261public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, params SymbolKind[] kinds)
271=> symbol is { Kind: SymbolKind.Field, ContainingType.TypeKind: TypeKind.Enum };
354SymbolKind.NamedType => ((INamedTypeSymbol)symbol).Arity,
355SymbolKind.Method => ((IMethodSymbol)symbol).Arity,
636if (symbol.Kind != SymbolKind.Local)
822public static bool IsKind<TSymbol>(this ISymbol symbol, SymbolKind kind, [NotNullWhen(true)] out TSymbol? result) where TSymbol : class, ISymbol
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\SymbolEquivalenceComparer.EquivalenceVisitor.cs (28)
30var xKind = GetKindAndUnwrapAlias(ref x);
31var yKind = GetKindAndUnwrapAlias(ref y);
40if ((xKind == SymbolKind.DynamicType && IsObjectType(y)) ||
41(yKind == SymbolKind.DynamicType && IsObjectType(x)))
49if (xKind == SymbolKind.ArrayType && y.IsReadOnlySpan())
53else if (x.IsReadOnlySpan() && yKind == SymbolKind.ArrayType)
112private bool AreEquivalentWorker(ISymbol x, ISymbol y, SymbolKind k, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
117SymbolKind.ArrayType => ArrayTypesAreEquivalent((IArrayTypeSymbol)x, (IArrayTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
118SymbolKind.Assembly => AssembliesAreEquivalent((IAssemblySymbol)x, (IAssemblySymbol)y),
119SymbolKind.DynamicType => NullableAnnotationsEquivalent((IDynamicTypeSymbol)x, (IDynamicTypeSymbol)y),
120SymbolKind.Event => EventsAreEquivalent((IEventSymbol)x, (IEventSymbol)y, equivalentTypesWithDifferingAssemblies),
121SymbolKind.Field => FieldsAreEquivalent((IFieldSymbol)x, (IFieldSymbol)y, equivalentTypesWithDifferingAssemblies),
122SymbolKind.Label => LabelsAreEquivalent((ILabelSymbol)x, (ILabelSymbol)y),
123SymbolKind.Local => LocalsAreEquivalent((ILocalSymbol)x, (ILocalSymbol)y),
124SymbolKind.Method => MethodsAreEquivalent((IMethodSymbol)x, (IMethodSymbol)y, equivalentTypesWithDifferingAssemblies),
125SymbolKind.NetModule => ModulesAreEquivalent((IModuleSymbol)x, (IModuleSymbol)y),
126SymbolKind.NamedType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
127SymbolKind.ErrorType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
128SymbolKind.Namespace => NamespacesAreEquivalent((INamespaceSymbol)x, (INamespaceSymbol)y, equivalentTypesWithDifferingAssemblies),
129SymbolKind.Parameter => ParametersAreEquivalent((IParameterSymbol)x, (IParameterSymbol)y, equivalentTypesWithDifferingAssemblies),
130SymbolKind.PointerType => PointerTypesAreEquivalent((IPointerTypeSymbol)x, (IPointerTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
131SymbolKind.Property => PropertiesAreEquivalent((IPropertySymbol)x, (IPropertySymbol)y, equivalentTypesWithDifferingAssemblies),
132SymbolKind.RangeVariable => RangeVariablesAreEquivalent((IRangeVariableSymbol)x, (IRangeVariableSymbol)y),
133SymbolKind.TypeParameter => TypeParametersAreEquivalent((ITypeParameterSymbol)x, (ITypeParameterSymbol)y, equivalentTypesWithDifferingAssemblies),
134SymbolKind.Preprocessing => PreprocessingSymbolsAreEquivalent((IPreprocessingSymbol)x, (IPreprocessingSymbol)y),
135SymbolKind.FunctionPointerType => FunctionPointerTypesAreEquivalent((IFunctionPointerTypeSymbol)x, (IFunctionPointerTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
367if (x.Kind == SymbolKind.ErrorType &&
371Debug.Assert(y.Kind == SymbolKind.ErrorType);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\SymbolEquivalenceComparer.GetHashCodeVisitor.cs (17)
47if (x.Kind == SymbolKind.DynamicType ||
62SymbolKind.ArrayType => CombineHashCodes((IArrayTypeSymbol)x, currentHash),
63SymbolKind.Assembly => CombineHashCodes((IAssemblySymbol)x, currentHash),
64SymbolKind.Event => CombineHashCodes((IEventSymbol)x, currentHash),
65SymbolKind.Field => CombineHashCodes((IFieldSymbol)x, currentHash),
66SymbolKind.Label => CombineHashCodes((ILabelSymbol)x, currentHash),
67SymbolKind.Local => CombineHashCodes((ILocalSymbol)x, currentHash),
68SymbolKind.Method => CombineHashCodes((IMethodSymbol)x, currentHash),
69SymbolKind.NetModule => CombineHashCodes((IModuleSymbol)x, currentHash),
70SymbolKind.NamedType => CombineHashCodes((INamedTypeSymbol)x, currentHash),
71SymbolKind.Namespace => CombineHashCodes((INamespaceSymbol)x, currentHash),
72SymbolKind.Parameter => CombineHashCodes((IParameterSymbol)x, currentHash),
73SymbolKind.PointerType => CombineHashCodes((IPointerTypeSymbol)x, currentHash),
74SymbolKind.Property => CombineHashCodes((IPropertySymbol)x, currentHash),
75SymbolKind.RangeVariable => CombineHashCodes((IRangeVariableSymbol)x, currentHash),
76SymbolKind.TypeParameter => CombineHashCodes((ITypeParameterSymbol)x, currentHash),
77SymbolKind.Preprocessing => CombineHashCodes((IPreprocessingSymbol)x, currentHash),
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\CodeAnalysisMetricData.cs (27)
36symbol.Kind is SymbolKind.Assembly or
37SymbolKind.Namespace or
38SymbolKind.NamedType or
39SymbolKind.Method or
40SymbolKind.Field or
41SymbolKind.Event or
42SymbolKind.Property);
43Debug.Assert(depthOfInheritance.HasValue == (symbol.Kind == SymbolKind.Assembly || symbol.Kind == SymbolKind.Namespace || symbol.Kind == SymbolKind.NamedType));
123case SymbolKind.Assembly:
127case SymbolKind.Namespace:
138case SymbolKind.NamedType:
267SymbolKind.Assembly => await AssemblyMetricData.ComputeAsync((IAssemblySymbol)symbol, context).ConfigureAwait(false),
269SymbolKind.Namespace => await NamespaceMetricData.ComputeAsync((INamespaceSymbol)symbol, context).ConfigureAwait(false),
271SymbolKind.NamedType => await NamedTypeMetricData.ComputeAsync((INamedTypeSymbol)symbol, context).ConfigureAwait(false),
273SymbolKind.Method => MethodMetricData.Compute((IMethodSymbol)symbol, context),
275SymbolKind.Property => PropertyMetricData.Compute((IPropertySymbol)symbol, context),
277SymbolKind.Field => FieldMetricData.Compute((IFieldSymbol)symbol, context),
279SymbolKind.Event => EventMetricData.Compute((IEventSymbol)symbol, context),
305SymbolKind.Assembly => AssemblyMetricData.ComputeSynchronously((IAssemblySymbol)symbol, context),
307SymbolKind.Namespace => NamespaceMetricData.ComputeSynchronously((INamespaceSymbol)symbol, context),
309SymbolKind.NamedType => NamedTypeMetricData.ComputeSynchronously((INamedTypeSymbol)symbol, context),
311SymbolKind.Method => MethodMetricData.Compute((IMethodSymbol)symbol, context),
313SymbolKind.Property => PropertyMetricData.Compute((IPropertySymbol)symbol, context),
315SymbolKind.Field => FieldMetricData.Compute((IFieldSymbol)symbol, context),
317SymbolKind.Event => EventMetricData.Compute((IEventSymbol)symbol, context),
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Options\SymbolNamesWithValueOption.cs (24)
26internal const SymbolKind AllKinds = SymbolKind.ErrorType;
54private readonly ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> _wildcardNamesBySymbolKind;
64ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> wildcardNamesBySymbolKind)
77_wildcardNamesBySymbolKind = ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>>.Empty;
92var wildcardNamesBuilder = PooledDictionary<SymbolKind, PooledDictionary<string, TValue>>.GetInstance();
142static void ProcessWildcardName(NameParts parts, PooledDictionary<SymbolKind, PooledDictionary<string, TValue>> wildcardNamesBuilder)
161'E' => (SymbolKind?)SymbolKind.Event,
162'F' => SymbolKind.Field,
163'M' => SymbolKind.Method,
164'N' => SymbolKind.Namespace,
165'P' => SymbolKind.Property,
166'T' => SymbolKind.NamedType,
271case SymbolKind.Event:
272case SymbolKind.Field:
273case SymbolKind.Method:
274case SymbolKind.NamedType:
275case SymbolKind.Namespace:
276case SymbolKind.Property:
279case SymbolKind.Assembly:
280case SymbolKind.ErrorType:
281case SymbolKind.NetModule:
377internal ref readonly ImmutableDictionary<SymbolKind, ImmutableDictionary<string, TValue>> WildcardNamesBySymbolKind => ref _symbolNamesWithValueOption._wildcardNamesBySymbolKind;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\NamingStyles\Serialization\SymbolSpecification.cs (27)
61new SymbolKindOrTypeKind(SymbolKind.Namespace),
69new SymbolKindOrTypeKind(SymbolKind.Property),
72new SymbolKindOrTypeKind(SymbolKind.Field),
73new SymbolKindOrTypeKind(SymbolKind.Event),
74new SymbolKindOrTypeKind(SymbolKind.Parameter),
76new SymbolKindOrTypeKind(SymbolKind.Local),
96public bool AppliesTo(SymbolKind symbolKind, Accessibility accessibility)
159case SymbolKind.Namespace:
162case SymbolKind.Parameter:
163case SymbolKind.TypeParameter:
166case SymbolKind.Method:
288foreach (var symbolKindElement in symbolKindListElement.Elements(nameof(SymbolKind)))
339public SymbolKindOrTypeKind(SymbolKind symbolKind)
354public SymbolKind? SymbolKind => (_category == SymbolCategory.Other) ? (SymbolKind)_kind : null;
361SymbolCategory.Other => symbol.IsKind((SymbolKind)_kind),
370SymbolCategory.Other => new XElement(nameof(SymbolKind), (SymbolKind)_kind),
421var symbolKind = (SymbolKind)Enum.Parse(typeof(SymbolKind), symbolKindElement.Value);
427CodeAnalysis.SymbolKind.Method => new(CodeAnalysis.MethodKind.Ordinary),
438public static implicit operator SymbolKindOrTypeKind(SymbolKind symbolKind)
506var kind = symbol.Kind;
507if (Modifiers.HasFlag(Modifiers.Async) && kind == SymbolKind.Method && ((IMethodSymbol)symbol).IsAsync)
514if (kind == SymbolKind.Field && ((IFieldSymbol)symbol).IsReadOnly)
522if ((kind == SymbolKind.Field && ((IFieldSymbol)symbol).IsConst) ||
523(kind == SymbolKind.Local && ((ILocalSymbol)symbol).IsConst))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\ISymbolExtensions.cs (25)
40case SymbolKind.Alias:
45case SymbolKind.Parameter:
49case SymbolKind.TypeParameter:
54while (symbol != null && symbol.Kind != SymbolKind.Namespace)
121if (symbol.Kind is SymbolKind.Event or SymbolKind.Property)
152if (symbol.Kind is not SymbolKind.Method and not SymbolKind.Property and not SymbolKind.Event)
189if (symbol.Kind == SymbolKind.Event)
194if (symbol.Kind == SymbolKind.Property)
235=> symbol is { Kind: SymbolKind.ArrayType };
243public static bool IsKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind)
246public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind)
249public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind1, SymbolKind kind2)
255public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, SymbolKind kind1, SymbolKind kind2, SymbolKind kind3)
261public static bool MatchesKind([NotNullWhen(true)] this ISymbol? symbol, params SymbolKind[] kinds)
271=> symbol is { Kind: SymbolKind.Field, ContainingType.TypeKind: TypeKind.Enum };
354SymbolKind.NamedType => ((INamedTypeSymbol)symbol).Arity,
355SymbolKind.Method => ((IMethodSymbol)symbol).Arity,
636if (symbol.Kind != SymbolKind.Local)
822public static bool IsKind<TSymbol>(this ISymbol symbol, SymbolKind kind, [NotNullWhen(true)] out TSymbol? result) where TSymbol : class, ISymbol
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\SymbolEquivalenceComparer.EquivalenceVisitor.cs (28)
30var xKind = GetKindAndUnwrapAlias(ref x);
31var yKind = GetKindAndUnwrapAlias(ref y);
40if ((xKind == SymbolKind.DynamicType && IsObjectType(y)) ||
41(yKind == SymbolKind.DynamicType && IsObjectType(x)))
49if (xKind == SymbolKind.ArrayType && y.IsReadOnlySpan())
53else if (x.IsReadOnlySpan() && yKind == SymbolKind.ArrayType)
112private bool AreEquivalentWorker(ISymbol x, ISymbol y, SymbolKind k, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
117SymbolKind.ArrayType => ArrayTypesAreEquivalent((IArrayTypeSymbol)x, (IArrayTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
118SymbolKind.Assembly => AssembliesAreEquivalent((IAssemblySymbol)x, (IAssemblySymbol)y),
119SymbolKind.DynamicType => NullableAnnotationsEquivalent((IDynamicTypeSymbol)x, (IDynamicTypeSymbol)y),
120SymbolKind.Event => EventsAreEquivalent((IEventSymbol)x, (IEventSymbol)y, equivalentTypesWithDifferingAssemblies),
121SymbolKind.Field => FieldsAreEquivalent((IFieldSymbol)x, (IFieldSymbol)y, equivalentTypesWithDifferingAssemblies),
122SymbolKind.Label => LabelsAreEquivalent((ILabelSymbol)x, (ILabelSymbol)y),
123SymbolKind.Local => LocalsAreEquivalent((ILocalSymbol)x, (ILocalSymbol)y),
124SymbolKind.Method => MethodsAreEquivalent((IMethodSymbol)x, (IMethodSymbol)y, equivalentTypesWithDifferingAssemblies),
125SymbolKind.NetModule => ModulesAreEquivalent((IModuleSymbol)x, (IModuleSymbol)y),
126SymbolKind.NamedType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
127SymbolKind.ErrorType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
128SymbolKind.Namespace => NamespacesAreEquivalent((INamespaceSymbol)x, (INamespaceSymbol)y, equivalentTypesWithDifferingAssemblies),
129SymbolKind.Parameter => ParametersAreEquivalent((IParameterSymbol)x, (IParameterSymbol)y, equivalentTypesWithDifferingAssemblies),
130SymbolKind.PointerType => PointerTypesAreEquivalent((IPointerTypeSymbol)x, (IPointerTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
131SymbolKind.Property => PropertiesAreEquivalent((IPropertySymbol)x, (IPropertySymbol)y, equivalentTypesWithDifferingAssemblies),
132SymbolKind.RangeVariable => RangeVariablesAreEquivalent((IRangeVariableSymbol)x, (IRangeVariableSymbol)y),
133SymbolKind.TypeParameter => TypeParametersAreEquivalent((ITypeParameterSymbol)x, (ITypeParameterSymbol)y, equivalentTypesWithDifferingAssemblies),
134SymbolKind.Preprocessing => PreprocessingSymbolsAreEquivalent((IPreprocessingSymbol)x, (IPreprocessingSymbol)y),
135SymbolKind.FunctionPointerType => FunctionPointerTypesAreEquivalent((IFunctionPointerTypeSymbol)x, (IFunctionPointerTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
367if (x.Kind == SymbolKind.ErrorType &&
371Debug.Assert(y.Kind == SymbolKind.ErrorType);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Extensions\Symbols\SymbolEquivalenceComparer.GetHashCodeVisitor.cs (17)
47if (x.Kind == SymbolKind.DynamicType ||
62SymbolKind.ArrayType => CombineHashCodes((IArrayTypeSymbol)x, currentHash),
63SymbolKind.Assembly => CombineHashCodes((IAssemblySymbol)x, currentHash),
64SymbolKind.Event => CombineHashCodes((IEventSymbol)x, currentHash),
65SymbolKind.Field => CombineHashCodes((IFieldSymbol)x, currentHash),
66SymbolKind.Label => CombineHashCodes((ILabelSymbol)x, currentHash),
67SymbolKind.Local => CombineHashCodes((ILocalSymbol)x, currentHash),
68SymbolKind.Method => CombineHashCodes((IMethodSymbol)x, currentHash),
69SymbolKind.NetModule => CombineHashCodes((IModuleSymbol)x, currentHash),
70SymbolKind.NamedType => CombineHashCodes((INamedTypeSymbol)x, currentHash),
71SymbolKind.Namespace => CombineHashCodes((INamespaceSymbol)x, currentHash),
72SymbolKind.Parameter => CombineHashCodes((IParameterSymbol)x, currentHash),
73SymbolKind.PointerType => CombineHashCodes((IPointerTypeSymbol)x, currentHash),
74SymbolKind.Property => CombineHashCodes((IPropertySymbol)x, currentHash),
75SymbolKind.RangeVariable => CombineHashCodes((IRangeVariableSymbol)x, currentHash),
76SymbolKind.TypeParameter => CombineHashCodes((ITypeParameterSymbol)x, currentHash),
77SymbolKind.Preprocessing => CombineHashCodes((IPreprocessingSymbol)x, currentHash),