SignatureHelp\TupleConstructionSignatureHelpProvider.cs (5)
125private IEnumerable<INamedTypeSymbol>? FindNearestTupleConstructionWithInferrableType(SyntaxNode root, SemanticModel semanticModel, int position, SignatureHelpTriggerInfo triggerInfo,
137var tupleTypes = inferredTypes.Where(t => t.IsTupleType).OfType<INamedTypeSymbol>().ToList();
151SyntaxNode targetExpression, SemanticModel semanticModel, IEnumerable<INamedTypeSymbol> tupleTypes, CancellationToken cancellationToken)
165private static SignatureHelpItem Convert(INamedTypeSymbol tupleType, ImmutableArray<TaggedText> prefixParts, ImmutableArray<TaggedText> suffixParts,
179private static IEnumerable<SignatureHelpParameter> ConvertTupleMembers(INamedTypeSymbol tupleType, SemanticModel semanticModel, int position)
Completion\Providers\AbstractPartialTypeCompletionProvider.cs (10)
41if (semanticModel.GetDeclaredSymbol(node, cancellationToken) is INamedTypeSymbol declaredSymbol)
61private CompletionItem CreateCompletionItem(INamedTypeSymbol symbol, TSyntaxContext context)
75protected abstract ImmutableDictionary<string, string> GetProperties(INamedTypeSymbol symbol, TSyntaxContext context);
79protected abstract (string displayText, string suffix, string insertionText) GetDisplayAndSuffixAndInsertionText(INamedTypeSymbol symbol, TSyntaxContext context);
81protected virtual IEnumerable<INamedTypeSymbol>? LookupCandidateSymbols(TSyntaxContext context, INamedTypeSymbol declaredSymbol, CancellationToken cancellationToken)
92return SpecializedCollections.EmptyEnumerable<INamedTypeSymbol>();
96.OfType<INamedTypeSymbol>()
102private static bool InSameProject(INamedTypeSymbol symbol, Compilation compilation)
105private static bool NotNewDeclaredMember(INamedTypeSymbol symbol, TSyntaxContext context)
ConvertAnonymousType\AbstractConvertAnonymousTypeToClassCodeRefactoringProvider.cs (8)
106var namedTypeSymbol = await GenerateFinalNamedTypeAsync(
180Document document, SyntaxEditor editor, INamedTypeSymbol classSymbol,
182INamedTypeSymbol anonymousType, CancellationToken cancellationToken)
216SyntaxEditor editor, INamedTypeSymbol classSymbol,
244private static async Task<INamedTypeSymbol> GenerateFinalNamedTypeAsync(
285var namedTypeWithoutMembers = CreateNamedType(typeName, isRecord: false, capturedTypeParameters, members: default);
314private static INamedTypeSymbol CreateNamedType(
323Document document, INamedTypeSymbol anonymousType)
ConvertForToForEach\AbstractConvertForToForEachCodeRefactoringProvider.cs (16)
108var containingType = semanticModel.GetEnclosingNamedType(textSpan.Start, cancellationToken);
112var ienumerableType = semanticModel.Compilation.GetSpecialType(SpecialType.System_Collections_Generic_IEnumerable_T);
113var ienumeratorType = semanticModel.Compilation.GetSpecialType(SpecialType.System_Collections_Generic_IEnumerator_T);
232INamedTypeSymbol containingType, ITypeSymbol type, string memberName) where TSymbol : class, ISymbol
239INamedTypeSymbol containingType, ITypeSymbol type, string memberName) where TSymbol : class, ISymbol
245INamedTypeSymbol containingType, ITypeSymbol collectionType,
246INamedTypeSymbol ienumerableType, INamedTypeSymbol ienumeratorType,
267var instantiatedIEnumerableType = collectionType.GetAllInterfacesIncludingThis().FirstOrDefault(
281INamedTypeSymbol containingType, IMethodSymbol getEnumeratorMethod,
282INamedTypeSymbol ienumeratorType, [NotNullWhen(true)] out ITypeSymbol? iterationType)
296var instantiatedIEnumeratorType = getEnumeratorReturnType.GetAllInterfacesIncludingThis().FirstOrDefault(
314INamedTypeSymbol containingType,
500INamedTypeSymbol containingType,
502INamedTypeSymbol ienumerableType)
524foreach (var interfaceType in collectionType.GetAllInterfacesIncludingThis())
ConvertTupleToStruct\AbstractConvertTupleToStructCodeRefactoringProvider.cs (26)
185private static async Task<(SyntaxNode, INamedTypeSymbol)> TryGetTupleInfoAsync(
198var tupleType = semanticModel.GetTypeInfo(expressionOrType, cancellationToken).Type as INamedTypeSymbol;
291var namedTypeSymbol = await GenerateFinalNamedTypeAsync(
319SyntaxNode tupleExprOrTypeNode, INamedTypeSymbol tupleType,
412INamedTypeSymbol tupleType, Scope scope, CancellationToken cancellationToken)
428Project startingProject, INamedTypeSymbol tupleType, CancellationToken cancellationToken)
470Project project, INamedTypeSymbol tupleType, CancellationToken cancellationToken)
518var typeSymbol = (INamedTypeSymbol)semanticModel.GetRequiredDeclaredSymbol(containingType, cancellationToken);
545Document document, SyntaxNode tupleExprOrTypeNode, INamedTypeSymbol namedTypeSymbol,
607SyntaxNode startingNode, INamedTypeSymbol tupleType, TNameSyntax fullyQualifiedStructName,
627SyntaxNode startingNode, INamedTypeSymbol tupleType, TNameSyntax qualifiedTypeName,
641if (semanticModel.GetTypeInfo(childCreation, cancellationToken).Type is not INamedTypeSymbol childType)
658private static bool AreEquivalent(StringComparer comparer, INamedTypeSymbol tupleType, INamedTypeSymbol childType)
741INamedTypeSymbol tupleType, TNameSyntax qualifiedTypeName,
754if (semanticModel.GetTypeInfo(childTupleType, cancellationToken).Type is not INamedTypeSymbol childType)
790private static async Task<INamedTypeSymbol> GenerateFinalNamedTypeAsync(
792INamedTypeSymbol tupleType, NamingRule parameterNamingRule, CancellationToken cancellationToken)
804var namedTypeWithoutMembers = CreateNamedType(
840var namedTypeSymbol = CreateNamedType(
847INamedTypeSymbol tupleType, IMethodSymbol constructor)
873INamedTypeSymbol tupleType, INamedTypeSymbol structType)
900private static INamedTypeSymbol CreateNamedType(
EditAndContinue\AbstractEditAndContinueAnalyzer.cs (68)
334SymbolKind.NamedType => GetDisplayName((INamedTypeSymbol)symbol),
344internal virtual string GetDisplayName(INamedTypeSymbol symbol)
487internal abstract bool IsPropertyAccessorDeclarationMatchingPrimaryConstructorParameter(SyntaxNode declaration, INamedTypeSymbol newContainingType, out bool isFirstAccessor);
494internal abstract bool IsPartial(INamedTypeSymbol type);
744if (oldSymbol is INamedTypeSymbol { DelegateInvokeMethod: not null and var oldDelegateInvoke } &&
745newSymbol is INamedTypeSymbol { DelegateInvokeMethod: not null and var newDelegateInvoke })
2337protected static bool BaseTypesEquivalent(INamedTypeSymbol oldType, INamedTypeSymbol newType, bool exact)
2382public readonly INamedTypeSymbol OldType;
2390public ConstructorEdit(INamedTypeSymbol oldType)
2427PooledDictionary<INamedTypeSymbol, ConstructorEdit>? instanceConstructorEdits = null;
2428PooledDictionary<INamedTypeSymbol, ConstructorEdit>? staticConstructorEdits = null;
2440INamedTypeSymbol? lazyLayoutAttribute = null;
2470Debug.Assert(oldSymbol is INamedTypeSymbol);
2471Debug.Assert(newSymbol is INamedTypeSymbol);
2527var oldContainingType = oldSymbol?.ContainingType;
2528var newContainingType = newSymbol?.ContainingType;
2529var containingType = newContainingType ?? oldContainingType;
2534oldContainingType ??= (INamedTypeSymbol?)containingTypeSymbolKey.Resolve(oldCompilation, ignoreAssemblyKey: true, cancellationToken).Symbol;
2535newContainingType ??= (INamedTypeSymbol?)containingTypeSymbolKey.Resolve(newCompilation, ignoreAssemblyKey: true, cancellationToken).Symbol;
2556var oldType = oldSymbol as INamedTypeSymbol;
2557var newType = newSymbol as INamedTypeSymbol;
2787INamedTypeSymbol? oldContainingType;
2788var newContainingType = newSymbol.ContainingType;
2938oldContainingType = containingSymbolKey.Resolve(oldCompilation, ignoreAssemblyKey: true, cancellationToken).Symbol as INamedTypeSymbol;
2977Contract.ThrowIfFalse(newSymbol is INamedTypeSymbol || IsGlobalMain(newSymbol));
3122if (newSymbol is INamedTypeSymbol or IFieldSymbol or IParameterSymbol or ITypeParameterSymbol)
3223var oldContainingType = oldSymbol.ContainingType;
3224var newContainingType = newSymbol.ContainingType;
3564using var _3 = PooledHashSet<INamedTypeSymbol>.GetInstance(out var processedTypes);
3572var oldType = (INamedTypeSymbol?)oldModel.GetDeclaredSymbol(oldTypeDeclaration, cancellationToken);
3605var newType = (INamedTypeSymbol?)newModel.GetDeclaredSymbol(newTypeDeclaration, cancellationToken);
3638private static bool IsReloadable(INamedTypeSymbol type)
3640var current = type;
3892else if (oldSymbol is INamedTypeSymbol oldType && newSymbol is INamedTypeSymbol newType)
3999private static void AnalyzeBaseTypes(INamedTypeSymbol oldType, INamedTypeSymbol newType, ref RudeEditKind rudeEdit, ref bool hasGeneratedAttributeChange)
4244if (newSymbol is INamedTypeSymbol { DelegateInvokeMethod: not null and var newDelegateInvokeMethod } newDelegateType)
4258else if (newSymbol is INamedTypeSymbol)
4297if (newContainingSymbol.ContainingSymbol is INamedTypeSymbol { TypeKind: TypeKind.Delegate } newContainingDelegateType)
4304private static void AddDelegateBeginInvokeEdit(ArrayBuilder<SemanticEditInfo> semanticEdits, INamedTypeSymbol delegateType, Func<SyntaxNode, SyntaxNode?>? syntaxMap, CancellationToken cancellationToken)
4337else if (oldSymbol is INamedTypeSymbol { DelegateInvokeMethod: not null and var oldInvokeMethod } &&
4338newSymbol is INamedTypeSymbol { DelegateInvokeMethod: not null and var newInvokeMethod })
4485static bool IsSecurityAttribute(INamedTypeSymbol namedTypeSymbol)
4489var symbol = namedTypeSymbol;
4521private static void AddEditsForSynthesizedRecordMembers(Compilation compilation, INamedTypeSymbol recordType, ArrayBuilder<SemanticEditInfo> semanticEdits, CancellationToken cancellationToken)
4530private static IEnumerable<ISymbol> GetRecordUpdatedSynthesizedMembers(Compilation compilation, INamedTypeSymbol record)
4677ref INamedTypeSymbol? lazyLayoutAttribute)
4733INamedTypeSymbol type,
4735ref INamedTypeSymbol? lazyLayoutAttribute)
4826INamedTypeSymbol oldType,
4827INamedTypeSymbol newType,
4831ref PooledDictionary<INamedTypeSymbol, ConstructorEdit>? instanceConstructorEdits,
4832ref PooledDictionary<INamedTypeSymbol, ConstructorEdit>? staticConstructorEdits)
4834Dictionary<INamedTypeSymbol, ConstructorEdit> constructorEdits;
4837constructorEdits = staticConstructorEdits ??= PooledDictionary<INamedTypeSymbol, ConstructorEdit>.GetInstance();
4841constructorEdits = instanceConstructorEdits ??= PooledDictionary<INamedTypeSymbol, ConstructorEdit>.GetInstance();
4856IReadOnlyDictionary<INamedTypeSymbol, ConstructorEdit> updatedTypes,
4873var oldType = updatesInCurrentDocument.OldType;
5058private bool HasMemberInitializerContainingLambda(INamedTypeSymbol type, bool isStatic, ref bool? lazyHasMemberInitializerContainingLambda, CancellationToken cancellationToken)
5066private bool HasMemberInitializerContainingLambda(INamedTypeSymbol type, bool isStatic, CancellationToken cancellationToken)
5087private static ISymbol? TryGetParameterlessConstructor(INamedTypeSymbol type, bool isStatic)
6067if (current is INamedTypeSymbol { Arity: > 0 })
ExtractInterface\AbstractExtractInterfaceService.cs (11)
41INamedTypeSymbol extractedInterfaceSymbol,
42INamedTypeSymbol typeToExtractFrom,
47internal abstract string GetContainingNamespaceDisplay(INamedTypeSymbol typeSymbol, CompilationOptions compilationOptions);
105var typeToExtractFrom = type as INamedTypeSymbol;
145var extractedInterfaceSymbol = CodeGenerationSymbolFactory.CreateNamedTypeSymbol(
179Solution solution, string containingNamespaceDisplay, INamedTypeSymbol extractedInterfaceSymbol,
223Solution solution, ExtractInterfaceTypeAnalysisResult refactoringResult, INamedTypeSymbol extractedInterfaceSymbol,
265INamedTypeSymbol type,
327INamedTypeSymbol typeToExtractFrom,
328INamedTypeSymbol extractedInterfaceSymbol,
GenerateComparisonOperators\GenerateComparisonOperatorsCodeRefactoringProvider.cs (17)
62var comparableType = compilation.GetTypeByMetadataName(typeof(IComparable<>).FullName!);
66var containingType = semanticModel.GetDeclaredSymbol(typeDeclaration, cancellationToken) as INamedTypeSymbol;
70using var _1 = ArrayBuilder<INamedTypeSymbol>.GetInstance(out var missingComparableTypes);
72foreach (var iface in containingType.Interfaces)
96var missingType = missingComparableTypes[0];
106foreach (var missingType in missingComparableTypes)
122private static IMethodSymbol? TryGetCompareMethodImpl(INamedTypeSymbol containingType, ITypeSymbol comparableType)
136INamedTypeSymbol comparableType,
142var containingType = (INamedTypeSymbol)semanticModel.GetRequiredDeclaredSymbol(typeDeclaration, cancellationToken);
162INamedTypeSymbol comparableType,
179INamedTypeSymbol containingType,
180INamedTypeSymbol comparableType,
185var boolType = compilation.GetSpecialType(SpecialType.System_Boolean);
231private static bool HasAllComparisonOperators(INamedTypeSymbol containingType, ITypeSymbol comparedType)
242private static bool HasComparisonOperator(INamedTypeSymbol containingType, ITypeSymbol comparedType, CodeGenerationOperatorKind kind)
GenerateEqualsAndGetHashCodeFromMembers\AbstractGenerateEqualsAndGetHashCodeService.cs (9)
41Document document, INamedTypeSymbol namedType, ImmutableArray<ISymbol> members,
53Document document, INamedTypeSymbol namedType,
54ImmutableArray<ISymbol> members, INamedTypeSymbol constructedEquatableType, CancellationToken cancellationToken)
64Document document, INamedTypeSymbol containingType, CancellationToken cancellationToken)
120Document document, INamedTypeSymbol namedType,
131INamedTypeSymbol namedType, ImmutableArray<ISymbol> members)
151INamedTypeSymbol namedType, ImmutableArray<ISymbol> members)
154var hashCodeType = compilation.GetTypeByMetadataName("System.HashCode");
185var valueTupleType = compilation.GetTypeByMetadataName(typeof(ValueTuple).FullName!);
GenerateEqualsAndGetHashCodeFromMembers\GenerateEqualsAndGetHashCodeFromMembersCodeRefactoringProvider.cs (13)
93var containingType = semanticModel.GetDeclaredSymbol(typeDeclaration) as INamedTypeSymbol;
123private static bool HasOperators(INamedTypeSymbol containingType)
127private static bool HasOperator(INamedTypeSymbol containingType, string operatorName)
136SemanticModel semanticModel, INamedTypeSymbol containingType,
137[NotNullWhen(true)] out INamedTypeSymbol? constructedType)
143var equatableTypeOpt = semanticModel.Compilation.GetTypeByMetadataName(typeof(IEquatable<>).FullName!);
158private static void GetExistingMemberInfo(INamedTypeSymbol containingType, out bool hasEquals, out bool hasGetHashCode)
202Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> selectedMembers,
242Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
252Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
260if (CanImplementIEquatable(semanticModel, containingType, out var equatableTypeOpt))
291Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
GenerateEqualsAndGetHashCodeFromMembers\IGenerateEqualsAndGetHashCodeService.cs (5)
29Task<IMethodSymbol> GenerateEqualsMethodAsync(Document document, INamedTypeSymbol namedType, ImmutableArray<ISymbol> members, string? localNameOpt, CancellationToken cancellationToken);
35Task<IMethodSymbol> GenerateEqualsMethodThroughIEquatableEqualsAsync(Document document, INamedTypeSymbol namedType, CancellationToken cancellationToken);
41Task<IMethodSymbol> GenerateIEquatableEqualsMethodAsync(Document document, INamedTypeSymbol namedType, ImmutableArray<ISymbol> members, INamedTypeSymbol constructedEquatableType, CancellationToken cancellationToken);
50Task<IMethodSymbol> GenerateGetHashCodeMethodAsync(Document document, INamedTypeSymbol namedType, ImmutableArray<ISymbol> members, CancellationToken cancellationToken);
GenerateMember\AbstractGenerateMemberService.cs (13)
33[NotNullWhen(true)] INamedTypeSymbol? typeToGenerateIn,
57INamedTypeSymbol containingType,
60[NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn,
74INamedTypeSymbol containingType,
77out INamedTypeSymbol? typeToGenerateIn,
112underlyingType is INamedTypeSymbol underlyingNamedType)
130typeToGenerateIn = pointerType.PointedAtType as INamedTypeSymbol;
146typeToGenerateIn = attributeType.Type as INamedTypeSymbol;
154typeToGenerateIn = semanticModel.GetTypeInfo(initializedObject, cancellationToken).Type as INamedTypeSymbol;
166typeToGenerateIn = inferenceService.InferType(semanticModel, propertyPatternClause, objectAsDefault: true, cancellationToken) as INamedTypeSymbol;
181out INamedTypeSymbol? typeToGenerateIn,
191: typeInfo.Type as INamedTypeSymbol;
193isStatic = semanticInfo.Symbol is INamedTypeSymbol;
GenerateMember\GenerateConstructor\AbstractGenerateConstructorService.cs (5)
29protected abstract bool ContainingTypesOrSelfHasUnsafeKeyword(INamedTypeSymbol containingType);
34protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument> arguments, out INamedTypeSymbol typeToGenerateIn);
35protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument> arguments, out INamedTypeSymbol typeToGenerateIn);
36protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument> arguments, out INamedTypeSymbol typeToGenerateIn);
37protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument> arguments, out INamedTypeSymbol typeToGenerateIn);
GenerateMember\GenerateParameterizedMember\AbstractGenerateConversionService.cs (2)
26protected abstract bool TryInitializeImplicitConversionState(SemanticDocument document, SyntaxNode expression, ISet<TypeKind> classInterfaceModuleStructTypes, CancellationToken cancellationToken, out SyntaxToken identifierToken, out IMethodSymbol methodSymbol, out INamedTypeSymbol typeToGenerateIn);
27protected abstract bool TryInitializeExplicitConversionState(SemanticDocument document, SyntaxNode expression, ISet<TypeKind> classInterfaceModuleStructTypes, CancellationToken cancellationToken, out SyntaxToken identifierToken, out IMethodSymbol methodSymbol, out INamedTypeSymbol typeToGenerateIn);
ImplementInterface\AbstractImplementInterfaceService.State.cs (11)
21public INamedTypeSymbol ClassOrStructType { get; }
22public IEnumerable<INamedTypeSymbol> InterfaceTypes { get; }
26public ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> MembersWithoutExplicitOrImplicitImplementationWhichCanBeImplicitlyImplemented { get; private set; }
27= ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)>.Empty;
28public ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> MembersWithoutExplicitOrImplicitImplementation { get; private set; }
29= ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)>.Empty;
32public ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> MembersWithoutExplicitImplementation { get; private set; }
33= ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)>.Empty;
35public State(SyntaxNode interfaceNode, SyntaxNode classOrStructDecl, INamedTypeSymbol classOrStructType, IEnumerable<INamedTypeSymbol> interfaceTypes, SemanticModel model)
52out var classOrStructDecl, out var classOrStructType, out var interfaceTypes))
LanguageServices\AnonymousTypeDisplayService\AbstractStructuralTypeDisplayService.cs (17)
23protected abstract ImmutableArray<SymbolDisplayPart> GetNormalAnonymousTypeParts(INamedTypeSymbol anonymousType, SemanticModel semanticModel, int position);
25public ImmutableArray<SymbolDisplayPart> GetAnonymousTypeParts(INamedTypeSymbol anonymousType, SemanticModel semanticModel, int position)
31INamedTypeSymbol anonymousType,
66ImmutableArray<INamedTypeSymbol> directStructuralTypeReferences,
73SpecializedCollections.EmptyDictionary<INamedTypeSymbol, string>(),
95var structuralType = transitiveStructuralTypeReferences[i];
123private static Dictionary<INamedTypeSymbol, string> GenerateStructuralTypeNames(
124IList<INamedTypeSymbol> anonymousTypes)
127var anonymousTypeToName = new Dictionary<INamedTypeSymbol, string>();
128foreach (var type in anonymousTypes)
148private static ImmutableArray<INamedTypeSymbol> OrderStructuralTypes(
149ImmutableArray<INamedTypeSymbol> structuralTypes,
188private static ImmutableArray<INamedTypeSymbol> GetTransitiveStructuralTypeReferences(
189ImmutableArray<INamedTypeSymbol> structuralTypes)
191var transitiveReferences = new Dictionary<INamedTypeSymbol, (int order, int count)>();
194foreach (var type in structuralTypes)
201using var _ = ArrayBuilder<INamedTypeSymbol>.GetInstance(out var result);
Shared\Utilities\ExtractTypeHelpers.cs (7)
29public static async Task<(Document containingDocument, SyntaxAnnotation typeAnnotation)> AddTypeToExistingFileAsync(Document document, INamedTypeSymbol newType, AnnotatedSymbolMapping symbolMapping, CodeGenerationOptionsProvider fallbackOptions, CancellationToken cancellationToken)
56INamedTypeSymbol newSymbol,
117public static string GetTypeParameterSuffix(Document document, SyntaxFormattingOptions formattingOptions, INamedTypeSymbol type, IEnumerable<ISymbol> extractableMembers, CancellationToken cancellationToken)
132public static ImmutableArray<ITypeParameterSymbol> GetRequiredTypeParametersForMembers(INamedTypeSymbol type, IEnumerable<ISymbol> includedMembers)
165private static ImmutableArray<ITypeParameterSymbol> GetPotentialTypeParameters(INamedTypeSymbol type)
169var typesToVisit = new Stack<INamedTypeSymbol>();
171var currentType = type;
CodeFixes\GenerateEvent\GenerateEventCodeFixProvider.vb (16)
97Dim targetType As INamedTypeSymbol = Nothing
110targetType = TryCast(sourceDefinition, INamedTypeSymbol)
124targetType As INamedTypeSymbol,
173Dim typeSymbol = TryCast(semanticModel.GetTypeInfo(handlerExpression, cancellationToken).Type, INamedTypeSymbol)
188Private Shared Function ResolveTargetType(ByRef targetType As INamedTypeSymbol, semanticModel As SemanticModel) As Boolean
195targetType = DirectCast(targetType.GetSymbolKey().Resolve(semanticModel.Compilation).Symbol, INamedTypeSymbol)
204Private Shared Function TryGetNameAndTargetType(eventExpression As ExpressionSyntax, containingSymbol As INamedTypeSymbol, semanticModel As SemanticModel, ByRef targetType As INamedTypeSymbol, ByRef actualEventName As String, cancellationToken As CancellationToken) As Boolean
206Dim eventType As INamedTypeSymbol = Nothing
214eventType = TryCast(semanticModel.GetTypeInfo(qualifier, cancellationToken).Type, INamedTypeSymbol)
260Dim targetType = TryCast(Await SymbolFinder.FindSourceDefinitionAsync(semanticModel.GetSymbolInfo(node.Left, cancellationToken).Symbol, document.Project.Solution, cancellationToken).ConfigureAwait(False), INamedTypeSymbol)
279Dim eventType = TryCast(boundEvent.Type, INamedTypeSymbol)
328Dim targetType As INamedTypeSymbol = Nothing
351targetType = TryCast(Await SymbolFinder.FindSourceDefinitionAsync(withEventsProperty.Type, document.Project.Solution, cancellationToken).ConfigureAwait(False), INamedTypeSymbol)
355targetType = TryCast(Await SymbolFinder.FindSourceDefinitionAsync(targetType, document.Project.Solution, cancellationToken).ConfigureAwait(False), INamedTypeSymbol)
364targetType = DirectCast(targetType.GetSymbolKey(cancellationToken).Resolve(semanticModel.Compilation, cancellationToken:=cancellationToken).Symbol, INamedTypeSymbol)
GenerateMember\GenerateParameterizedMember\VisualBasicGenerateConversionService.vb (11)
55Protected Overrides Function TryInitializeExplicitConversionState(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef identifierToken As SyntaxToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
69Protected Overrides Function TryInitializeImplicitConversionState(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef identifierToken As SyntaxToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
83Private Shared Function TryGetConversionMethodAndTypeToGenerateIn(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
113Private Shared Function TryGetExplicitConversionMethodAndTypeToGenerateIn(document As SemanticDocument, castExpression As CastExpressionSyntax, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
115typeToGenerateIn = TryCast(document.SemanticModel.GetTypeInfo(castExpression.Type, cancellationToken).Type, INamedTypeSymbol)
116Dim parameterSymbol = TryCast(document.SemanticModel.GetTypeInfo(castExpression.Expression, cancellationToken).Type, INamedTypeSymbol)
129Private Shared Function TryGetImplicitConversionMethodAndTypeToGenerateIn(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
131typeToGenerateIn = TryCast(document.SemanticModel.GetTypeInfo(expression, cancellationToken).ConvertedType, INamedTypeSymbol)
132Dim parameterSymbol = TryCast(document.SemanticModel.GetTypeInfo(expression, cancellationToken).Type, INamedTypeSymbol)
145Private Shared Function GenerateMethodSymbol(typeToGenerateIn As INamedTypeSymbol, parameterSymbol As INamedTypeSymbol) As IMethodSymbol
GenerateType\VisualBasicGenerateTypeService.vb (4)
333generateTypeServiceStateOptions.DelegateCreationMethodSymbol = DirectCast(type, INamedTypeSymbol).DelegateInvokeMethod
395cancellationToken As CancellationToken) As INamedTypeSymbol
400Return If(typeBlock Is Nothing, Nothing, TryCast(semanticModel.GetDeclaredSymbol(typeBlock.BlockStatement, cancellationToken), INamedTypeSymbol))
426Public Overrides Async Function GetOrGenerateEnclosingNamespaceSymbolAsync(namedTypeSymbol As INamedTypeSymbol, containers() As String, selectedDocument As Document, selectedDocumentRoot As SyntaxNode, cancellationToken As CancellationToken) As Task(Of (INamespaceSymbol, INamespaceOrTypeSymbol, Location))
NavigationBar\VisualBasicNavigationBarItemService.vb (9)
61Private Shared Function GetTypesAndDeclarationsInFile(semanticModel As SemanticModel, cancellationToken As CancellationToken) As IEnumerable(Of Tuple(Of INamedTypeSymbol, SyntaxNode))
63Dim typesAndDeclarations As New Dictionary(Of INamedTypeSymbol, SyntaxNode)
70Return SpecializedCollections.EmptyEnumerable(Of Tuple(Of INamedTypeSymbol, SyntaxNode))()
74Dim type = TryCast(semanticModel.GetDeclaredSymbol(node, cancellationToken), INamedTypeSymbol)
103type As INamedTypeSymbol,
157type As INamedTypeSymbol,
202type As INamedTypeSymbol,
311containingType As INamedTypeSymbol,
359DirectCast(e.Type, INamedTypeSymbol).DelegateInvokeMethod IsNot Nothing Then
AbstractCodeGenerationService.cs (15)
60public TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
89public SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
128protected abstract TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
151public abstract SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
350INamedTypeSymbol namedType => CreateNamedTypeDeclaration(namedType, codeGenerationDestination, info, cancellationToken),
368INamedTypeSymbol namedType => AddNamedType(currentDestination, namedType, info, availableIndices, cancellationToken),
393CodeGenerationSolutionContext context, INamedTypeSymbol destination, IEventSymbol @event, CancellationToken cancellationToken)
402public Task<Document> AddFieldAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IFieldSymbol field, CancellationToken cancellationToken)
411public Task<Document> AddPropertyAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IPropertySymbol property, CancellationToken cancellationToken)
420public Task<Document> AddNamedTypeAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, INamedTypeSymbol namedType, CancellationToken cancellationToken)
429public Task<Document> AddNamedTypeAsync(CodeGenerationSolutionContext context, INamespaceSymbol destination, INamedTypeSymbol namedType, CancellationToken cancellationToken)
447public Task<Document> AddMethodAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IMethodSymbol method, CancellationToken cancellationToken)
456public Task<Document> AddMembersAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IEnumerable<ISymbol> members, CancellationToken cancellationToken)
478return AddNamedTypeAsync(context, destination, (INamedTypeSymbol)namespaceOrType, cancellationToken);
AbstractFlagsEnumGenerator.cs (10)
15protected abstract SyntaxNode CreateExplicitlyCastedLiteralValue(SyntaxGenerator generator, INamedTypeSymbol enumType, SpecialType underlyingSpecialType, object constantValue);
16protected abstract bool IsValidName(INamedTypeSymbol enumType, string name);
18public SyntaxNode CreateEnumConstantValue(SyntaxGenerator generator, INamedTypeSymbol enumType, object constantValue)
34private static bool IsFlagsEnum(INamedTypeSymbol typeSymbol)
46var type = ctor.ContainingType;
63private SyntaxNode CreateFlagsEnumConstantValue(SyntaxGenerator generator, INamedTypeSymbol enumType, object constantValue)
75INamedTypeSymbol enumType,
141SyntaxGenerator generator, IFieldSymbol field, INamedTypeSymbol enumType, SpecialType underlyingSpecialType)
171INamedTypeSymbol enumType,
188private SyntaxNode CreateNonFlagsEnumConstantValue(SyntaxGenerator generator, INamedTypeSymbol enumType, object constantValue)
CodeGenerationSymbolFactory.cs (14)
48INamedTypeSymbol? containingType,
152INamedTypeSymbol? containingType,
226INamedTypeSymbol? containingType = null,
254INamedTypeSymbol? containingType = null,
406INamedTypeSymbol attributeClass,
416public static INamedTypeSymbol CreateNamedTypeSymbol(
422INamedTypeSymbol? baseType = null,
423ImmutableArray<INamedTypeSymbol> interfaces = default,
435public static INamedTypeSymbol CreateNamedTypeSymbol(
441INamedTypeSymbol? baseType = null,
442ImmutableArray<INamedTypeSymbol> interfaces = default,
453members.WhereAsArray(m => m is not INamedTypeSymbol),
454members.OfType<INamedTypeSymbol>().Select(n => n.ToCodeGenerationSymbol()).ToImmutableArray(),
521INamedTypeSymbol? containingType = null,
CodeGenerator.cs (8)
30public static Task<Document> AddEventDeclarationAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IEventSymbol @event, CancellationToken cancellationToken)
37public static Task<Document> AddFieldDeclarationAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IFieldSymbol field, CancellationToken cancellationToken)
44public static Task<Document> AddMethodDeclarationAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IMethodSymbol method, CancellationToken cancellationToken)
51public static Task<Document> AddPropertyDeclarationAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IPropertySymbol property, CancellationToken cancellationToken)
58public static Task<Document> AddNamedTypeDeclarationAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, INamedTypeSymbol namedType, CancellationToken cancellationToken)
65public static Task<Document> AddNamedTypeDeclarationAsync(CodeGenerationSolutionContext context, INamespaceSymbol destination, INamedTypeSymbol namedType, CancellationToken cancellationToken)
86public static Task<Document> AddMemberDeclarationsAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IEnumerable<ISymbol> members, CancellationToken cancellationToken)
FindSymbols\FindReferences\DependentTypeFinder.cs (30)
20using SymbolSet = HashSet<INamedTypeSymbol>;
45private static readonly Func<INamedTypeSymbol, bool> s_isInterface = static t => t is { TypeKind: TypeKind.Interface };
46private static readonly Func<INamedTypeSymbol, bool> s_isNonSealedClass = static t => t is { TypeKind: TypeKind.Class, IsSealed: false };
47private static readonly Func<INamedTypeSymbol, bool> s_isInterfaceOrNonSealedClass = static t => s_isInterface(t) || s_isNonSealedClass(t);
49private static readonly ObjectPool<PooledHashSet<INamedTypeSymbol>> s_symbolSetPool = PooledHashSet<INamedTypeSymbol>.CreatePool(SymbolEquivalenceComparer.Instance);
52/// Walks down a <paramref name="type"/>'s inheritance tree looking for more <see cref="INamedTypeSymbol"/>'s
60private static async Task<ImmutableArray<INamedTypeSymbol>> DescendInheritanceTreeAsync(
61INamedTypeSymbol type,
64Func<INamedTypeSymbol, SymbolSet, bool> typeMatches,
65Func<INamedTypeSymbol, bool> shouldContinueSearching,
209foreach (var type in typesToSearchFor)
245Func<INamedTypeSymbol, bool>? predicateOpt)
260if (resolvedSymbol is INamedTypeSymbol namedType)
282if (resolvedType is INamedTypeSymbol namedType &&
351foreach (var metadataType in metadataTypes)
360foreach (var derivedType in symbolTreeInfo.GetDerivedMetadataTypes(baseTypeName, compilation, cancellationToken))
377foreach (var type in foundTypes)
384foreach (var type in foundTypes)
388private static void AddRange(SymbolSet foundTypes, SymbolSet currentTypes, Func<INamedTypeSymbol, bool> shouldContinueSearching)
391foreach (var type in foundTypes)
399INamedTypeSymbol type,
514private static bool TypeHasBaseTypeInSet(INamedTypeSymbol type, SymbolSet set)
516var baseType = type.BaseType?.OriginalDefinition;
520private static bool TypeHasInterfaceInSet(INamedTypeSymbol type, SymbolSet set)
522foreach (var interfaceType in type.Interfaces)
541Func<INamedTypeSymbol, bool> shouldContinueSearching)
548foreach (var derivedType in tempBuffer)
562public static PooledDisposer<PooledHashSet<INamedTypeSymbol>> GetSymbolSet(out SymbolSet instance)
567return new PooledDisposer<PooledHashSet<INamedTypeSymbol>>(pooledInstance);
FindSymbols\FindReferences\Finders\NamedTypeSymbolReferenceFinder.cs (11)
17internal sealed class NamedTypeSymbolReferenceFinder : AbstractReferenceFinder<INamedTypeSymbol>
19protected override bool CanFind(INamedTypeSymbol symbol)
22protected override Task<ImmutableArray<string>> DetermineGlobalAliasesAsync(INamedTypeSymbol symbol, Project project, CancellationToken cancellationToken)
28INamedTypeSymbol symbol,
53INamedTypeSymbol symbol,
113INamedTypeSymbol namedType,
141INamedTypeSymbol namedType,
168INamedTypeSymbol symbol,
182INamedTypeSymbol namedType,
197INamedTypeSymbol symbol,
215INamedTypeSymbol namedType,
FindSymbols\SymbolFinder_Hierarchy.cs (27)
46var containingType = symbol.ContainingType;
50foreach (var type in derivedTypes)
133var containingType = symbol.ContainingType.OriginalDefinition;
136: SpecializedCollections.EmptyEnumerable<INamedTypeSymbol>();
141foreach (var type in allTypes)
143foreach (var interfaceType in type.AllInterfaces)
203public static Task<IEnumerable<INamedTypeSymbol>> FindDerivedClassesAsync(
204INamedTypeSymbol type, Solution solution, IImmutableSet<Project>? projects, CancellationToken cancellationToken)
221public static async Task<IEnumerable<INamedTypeSymbol>> FindDerivedClassesAsync(
222INamedTypeSymbol type, Solution solution, bool transitive = true, IImmutableSet<Project>? projects = null, CancellationToken cancellationToken = default)
234/// <inheritdoc cref="FindDerivedClassesArrayAsync(INamedTypeSymbol, Solution, bool, IImmutableSet{Project}, CancellationToken)"/>
236internal static async Task<ImmutableArray<INamedTypeSymbol>> FindDerivedClassesArrayAsync(
237INamedTypeSymbol type, Solution solution, bool transitive, IImmutableSet<Project>? projects = null, CancellationToken cancellationToken = default)
257public static async Task<IEnumerable<INamedTypeSymbol>> FindDerivedInterfacesAsync(
258INamedTypeSymbol type, Solution solution, bool transitive = true, IImmutableSet<Project>? projects = null, CancellationToken cancellationToken = default)
270/// <inheritdoc cref="FindDerivedInterfacesAsync(INamedTypeSymbol, Solution, bool, IImmutableSet{Project}, CancellationToken)"/>
272internal static async Task<ImmutableArray<INamedTypeSymbol>> FindDerivedInterfacesArrayAsync(
273INamedTypeSymbol type, Solution solution, bool transitive, IImmutableSet<Project>? projects = null, CancellationToken cancellationToken = default)
293public static async Task<IEnumerable<INamedTypeSymbol>> FindImplementationsAsync(
294INamedTypeSymbol type, Solution solution, bool transitive = true, IImmutableSet<Project>? projects = null, CancellationToken cancellationToken = default)
306/// <inheritdoc cref="FindImplementationsAsync(INamedTypeSymbol, Solution, bool, IImmutableSet{Project}, CancellationToken)"/>
308internal static async Task<ImmutableArray<INamedTypeSymbol>> FindImplementationsArrayAsync(
309INamedTypeSymbol type, Solution solution, bool transitive, IImmutableSet<Project>? projects = null, CancellationToken cancellationToken = default)
320/// cref="INamedTypeSymbol"/> this will be both immediate and transitive implementations.
333if (symbol is INamedTypeSymbol namedTypeSymbol)
352var containingType = symbol.ContainingType.OriginalDefinition;
362foreach (var t in allTypes)
ICodeGenerationService.cs (10)
44SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
74TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
134Task<Document> AddEventAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IEventSymbol @event, CancellationToken cancellationToken);
139Task<Document> AddFieldAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IFieldSymbol field, CancellationToken cancellationToken);
144Task<Document> AddMethodAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IMethodSymbol method, CancellationToken cancellationToken);
149Task<Document> AddPropertyAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IPropertySymbol property, CancellationToken cancellationToken);
154Task<Document> AddNamedTypeAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, INamedTypeSymbol namedType, CancellationToken cancellationToken);
159Task<Document> AddNamedTypeAsync(CodeGenerationSolutionContext context, INamespaceSymbol destination, INamedTypeSymbol namedType, CancellationToken cancellationToken);
174Task<Document> AddMembersAsync(CodeGenerationSolutionContext context, INamedTypeSymbol destination, IEnumerable<ISymbol> members, CancellationToken cancellationToken);
J\s\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\INamedTypeSymbolExtensions.cs\INamedTypeSymbolExtensions.cs (76)
19public static IEnumerable<INamedTypeSymbol> GetBaseTypesAndThis(this INamedTypeSymbol? namedType)
21var current = namedType;
29public static ImmutableArray<ITypeParameterSymbol> GetAllTypeParameters(this INamedTypeSymbol? symbol)
35public static IEnumerable<ITypeSymbol> GetAllTypeArguments(this INamedTypeSymbol? symbol)
41private static Stack<INamedTypeSymbol> GetContainmentStack(INamedTypeSymbol? symbol)
43var stack = new Stack<INamedTypeSymbol>();
44for (var current = symbol; current != null; current = current.ContainingType)
52public static bool IsContainedWithin([NotNullWhen(returnValue: true)] this INamedTypeSymbol? symbol, INamedTypeSymbol outer)
55for (var current = symbol; current != null; current = current.ContainingType)
66public static ISymbol? FindImplementationForAbstractMember(this INamedTypeSymbol? type, ISymbol symbol)
77private static bool ImplementationExists(INamedTypeSymbol classOrStructType, ISymbol member)
81this INamedTypeSymbol classOrStructType,
83Func<INamedTypeSymbol, ISymbol, bool> isValidImplementation,
113private static bool IsInterfacePropertyImplemented(INamedTypeSymbol classOrStructType, IPropertySymbol propertySymbol)
121static bool IsAccessorImplemented(IMethodSymbol? accessor, INamedTypeSymbol classOrStructType)
127private static bool IsAbstractPropertyImplemented(INamedTypeSymbol classOrStructType, IPropertySymbol propertySymbol)
150this INamedTypeSymbol classOrStructType,
152Func<INamedTypeSymbol, ISymbol, bool> isValid,
175public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
176this INamedTypeSymbol classOrStructType,
177IEnumerable<INamedTypeSymbol> interfaces,
181Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> GetMembers;
201static ImmutableArray<ISymbol> GetImplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
251public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
252this INamedTypeSymbol classOrStructType,
253IEnumerable<INamedTypeSymbol> interfacesOrAbstractClasses,
269public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembersInThis(
270this INamedTypeSymbol classOrStructType,
271IEnumerable<INamedTypeSymbol> interfacesOrAbstractClasses,
272Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
288public static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedExplicitMembers(
289this INamedTypeSymbol classOrStructType,
290IEnumerable<INamedTypeSymbol> interfaces,
302private static ImmutableArray<ISymbol> GetExplicitlyImplementableMembers(INamedTypeSymbol type, ISymbol within)
329private static ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)> GetAllUnimplementedMembers(
330this INamedTypeSymbol classOrStructType,
331IEnumerable<INamedTypeSymbol> interfacesOrAbstractClasses,
332Func<INamedTypeSymbol, ISymbol, Func<INamedTypeSymbol, ISymbol, bool>, CancellationToken, bool> isImplemented,
333Func<INamedTypeSymbol, ISymbol, bool> isValidImplementation,
334Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
344return ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)>.Empty;
349return ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)>.Empty;
355return ImmutableArray<(INamedTypeSymbol type, ImmutableArray<ISymbol> members)>.Empty;
363private static ImmutableArray<INamedTypeSymbol> GetTypesToImplement(
364INamedTypeSymbol classOrStructType,
365IEnumerable<INamedTypeSymbol> interfacesOrAbstractClasses,
374private static ImmutableArray<INamedTypeSymbol> GetAbstractClassesToImplement(
375IEnumerable<INamedTypeSymbol> abstractClasses)
382private static ImmutableArray<INamedTypeSymbol> GetInterfacesToImplement(
383INamedTypeSymbol classOrStructType,
384IEnumerable<INamedTypeSymbol> interfaces,
391var interfacesToImplement = new List<INamedTypeSymbol>(
396var baseType = classOrStructType.BaseType;
398? SpecializedCollections.EmptyEnumerable<INamedTypeSymbol>()
407this INamedTypeSymbol classOrStructType,
408INamedTypeSymbol interfaceType,
409Func<INamedTypeSymbol, ISymbol, Func<INamedTypeSymbol, ISymbol, bool>, CancellationToken, bool> isImplemented,
410Func<INamedTypeSymbol, ISymbol, bool> isValidImplementation,
411Func<INamedTypeSymbol, ISymbol, ImmutableArray<ISymbol>> interfaceMemberGetter,
426this INamedTypeSymbol attributeSymbol,
432var systemAttributeType = compilation.AttributeType();
434foreach (var type in attributeSymbol.GetBaseTypesAndThis())
494private static ImmutableArray<ISymbol> GetMembers(INamedTypeSymbol type, ISymbol within)
508this INamedTypeSymbol containingType, CancellationToken cancellationToken)
524foreach (var type in baseTypes)
544Dictionary<ISymbol, int> result, INamedTypeSymbol containingType,
545INamedTypeSymbol type, ref int index, CancellationToken cancellationToken)
558private static bool IsOverridable(ISymbol member, INamedTypeSymbol containingType)
579Dictionary<ISymbol, int> result, INamedTypeSymbol containingType, CancellationToken cancellationToken)
620public static INamedTypeSymbol TryConstruct(this INamedTypeSymbol type, ITypeSymbol[] typeArguments)
SymbolEquivalenceComparer.EquivalenceVisitor.cs (60)
37public bool AreEquivalent(ISymbol? x, ISymbol? y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
88internal bool AreEquivalent(CustomModifier x, CustomModifier y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
91internal bool AreEquivalent(ImmutableArray<CustomModifier> x, ImmutableArray<CustomModifier> y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
113private bool AreEquivalentWorker(ISymbol x, ISymbol y, SymbolKind k, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
127SymbolKind.NamedType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
128SymbolKind.ErrorType => NamedTypesAreEquivalent((INamedTypeSymbol)x, (INamedTypeSymbol)y, equivalentTypesWithDifferingAssemblies),
141private bool ArrayTypesAreEquivalent(IArrayTypeSymbol x, IArrayTypeSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
153private bool FieldsAreEquivalent(IFieldSymbol x, IFieldSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
171private bool MethodsAreEquivalent(IMethodSymbol x, IMethodSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies, bool considerReturnRefKinds = false)
282private bool NamedTypesAreEquivalent(INamedTypeSymbol x, INamedTypeSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
302private bool NamedTypesAreEquivalentError(INamedTypeSymbol x, INamedTypeSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
304foreach (var type1 in Unwrap(x))
307foreach (var type2 in Unwrap(y))
331private bool HandleNamedTypesWorker(INamedTypeSymbol x, INamedTypeSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
405private bool HandleTupleTypes(INamedTypeSymbol x, INamedTypeSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
450Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies,
473internal bool ReturnTypesAreEquivalent(IMethodSymbol x, IMethodSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies = null)
479private bool TypeArgumentsAreEquivalent(ImmutableArray<ITypeSymbol> xTypeArguments, ImmutableArray<ITypeSymbol> yTypeArguments, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
498private bool HandleAnonymousTypes(INamedTypeSymbol x, INamedTypeSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
534private bool NamespacesAreEquivalent(INamespaceSymbol x, INamespaceSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
551private bool ParametersAreEquivalent(IParameterSymbol x, IParameterSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
561private bool PointerTypesAreEquivalent(IPointerTypeSymbol x, IPointerTypeSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
568private bool FunctionPointerTypesAreEquivalent(IFunctionPointerTypeSymbol x, IFunctionPointerTypeSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
571private bool PropertiesAreEquivalent(IPropertySymbol x, IPropertySymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
593private bool EventsAreEquivalent(IEventSymbol x, IEventSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)
600private bool TypeParametersAreEquivalent(ITypeParameterSymbol x, ITypeParameterSymbol y, Dictionary<INamedTypeSymbol, INamedTypeSymbol>? equivalentTypesWithDifferingAssemblies)