Binder\Binder_Attributes.cs (19)
30ImmutableArray<Binder> binders, ImmutableArray<AttributeSyntax> attributesToBind, Symbol ownerSymbol, NamedTypeSymbol[] boundAttributeTypes,
55var boundTypeSymbol = (NamedTypeSymbol)boundType.Type;
74ImmutableArray<NamedTypeSymbol> boundAttributeTypes,
91NamedTypeSymbol boundAttributeType = boundAttributeTypes[i];
127AttributeSyntax node, NamedTypeSymbol boundAttributeType,
138internal BoundAttribute BindAttribute(AttributeSyntax node, NamedTypeSymbol attributeType, Symbol? attributedMember, BindingDiagnosticBag diagnostics)
155private static BoundAttribute BindAttributeCore(Binder binder, AttributeSyntax node, NamedTypeSymbol attributeType, Symbol? attributedMember, BindingDiagnosticBag diagnostics)
168NamedTypeSymbol attributeTypeForBinding = attributeType;
174if (errorType.CandidateSymbols.Length == 1 && errorType.CandidateSymbols[0] is NamedTypeSymbol)
176attributeTypeForBinding = (NamedTypeSymbol)errorType.CandidateSymbols[0];
286var attributeType = (NamedTypeSymbol)boundAttribute.Type;
413protected bool IsAttributeConditionallyOmitted(NamedTypeSymbol attributeType, SyntaxTree? syntaxTree, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
434var baseType = attributeType.BaseTypeWithDefinitionUseSiteDiagnostics(ref useSiteInfo);
453NamedTypeSymbol attributeType,
516private BoundAssignmentOperator BindNamedAttributeArgument(AttributeArgumentSyntax namedArgument, NamedTypeSymbol attributeType, BindingDiagnosticBag diagnostics)
600private Symbol BindNamedAttributeArgumentName(AttributeArgumentSyntax namedArgument, NamedTypeSymbol attributeType, BindingDiagnosticBag diagnostics, out bool wasError, out LookupResultKind resultKind)
615private TypeSymbol BindNamedAttributeArgumentType(AttributeArgumentSyntax namedArgument, Symbol namedArgumentNameSymbol, NamedTypeSymbol attributeType, BindingDiagnosticBag diagnostics)
Binder\Binder_Conversions.cs (47)
154NamedTypeSymbol.ReportTupleNamesMismatchesIfAny(destination, sourceTuple, diagnostics);
242BindUnconvertedInterpolatedExpressionToHandlerType(source, (NamedTypeSymbol)destination, diagnostics),
606.AsMember((NamedTypeSymbol)destination)
607.Construct([((NamedTypeSymbol)source.Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0]])
682var sourceElementType = ((NamedTypeSymbol)source).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type;
683var destinationElementType = ((NamedTypeSymbol)destination).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type;
715((NamedTypeSymbol)parameter.Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type.Equals(typeArgument.Type, TypeCompareKind.ConsiderEverything) &&
717((NamedTypeSymbol)method.ReturnType).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type.Equals(((NamedTypeSymbol)arg.destination).TypeParameters[0], TypeCompareKind.ConsiderEverything));
725Debug.Assert(((NamedTypeSymbol)readOnlySpanType).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].SpecialType is SpecialType.System_Char);
731TryFindSingleMethod(memoryExtensionsType.GetSymbol<NamedTypeSymbol>(), WellKnownMemberNames.AsSpanMethodName, 0,
782var stringFactory = GetWellKnownType(WellKnownType.System_Runtime_CompilerServices_FormattableStringFactory, diagnostics, unconvertedSource.Syntax);
853return binder.BindClassCreationExpression(syntax, type.Name, typeNode: syntax, (NamedTypeSymbol)type, arguments, diagnostics, initializerOpt, wasTargetTyped: true);
857return binder.BindDelegateCreationExpression(syntax, (NamedTypeSymbol)type, arguments, initializerOpt, wasTargetTyped: true, diagnostics);
859return binder.BindInterfaceCreationExpression(syntax, (NamedTypeSymbol)type, diagnostics, typeNode: syntax, arguments, initializerOpt, wasTargetTyped: true);
1027if (_targetType is NamedTypeSymbol namedType &&
1028_binder.HasParamsCollectionTypeInProgress(namedType, out NamedTypeSymbol? inProgress, out MethodSymbol? inProgressConstructor))
1096if (@this._targetType is NamedTypeSymbol namedType)
1277var constructedListType = @this._binder
1332var namedType = (NamedTypeSymbol)@this._targetType;
1474NamedTypeSymbol namedType,
1481var targetTypeOriginalDefinition = namedType.OriginalDefinition;
1499NamedTypeSymbol targetType,
1517var readOnlySpanType = Compilation.GetWellKnownType(WellKnownType.System_ReadOnlySpan_T);
1544if (method.Parameters is not [.., { RefKind: RefKind.None, Type: NamedTypeSymbol parameterType }]
1572parameterType = (NamedTypeSymbol)methodWithTargetTypeParameters.Parameters.Last().Type;
1612var parameterType = (NamedTypeSymbol)collectionBuilderMethod.Parameters.Last().Type;
1653if (targetType is NamedTypeSymbol namedType)
1785private bool HasParamsCollectionTypeInProgress(NamedTypeSymbol toCheck,
1786[NotNullWhen(returnValue: true)] out NamedTypeSymbol? inProgress,
1812NamedTypeSymbol? namedType = targetType as NamedTypeSymbol;
2769var delegateType = source.GetInferredDelegateType(ref useSiteInfo);
2833var boundLambda = unboundLambda.Bind((NamedTypeSymbol)destination, isExpressionTree: destination.IsGenericOrNonGenericExpressionType(out _)).WithInAnonymousFunctionConversion();
2926var delegateType = targetType.GetDelegateType();
3076NamedTypeSymbol targetType = (NamedTypeSymbol)destinationWithoutNullable;
3079NamedTypeSymbol.ReportTupleNamesMismatchesIfAny(targetType, sourceTuple, diagnostics);
3087if (sourceTuple.Type is NamedTypeSymbol { IsTupleType: true } sourceType)
3377var containingType = this.ContainingType;
3448Debug.Assert(delegateType is NamedTypeSymbol { TypeKind: TypeKind.Delegate, DelegateInvokeMethod: { HasUseSiteError: false } }
3454NamedTypeSymbol { DelegateInvokeMethod: { } invokeMethod } => invokeMethod,
3696NamedTypeSymbol delegateType,
3842var underlyingType = ((NamedTypeSymbol)destination).EnumUnderlyingType;
Binder\Binder_Expressions.cs (82)
58if (memberOpt is { ContainingSymbol: NamedTypeSymbol { IsExtension: true } })
63var containingType = memberOpt?.ContainingType;
249internal NamedTypeSymbol CreateErrorType(string name = "")
452var delegateType = expr.GetInferredDelegateType(ref useSiteInfo);
539|| this.ContainingMemberOrLambda is NamedTypeSymbol { IsExtension: true });
1017var tupleType = NamedTypeSymbol.CreateTuple(
1095NamedTypeSymbol tupleTypeOpt = null;
1103tupleTypeOpt = NamedTypeSymbol.CreateTuple(node.Location, elements, locations, elementNames,
1109NamedTypeSymbol.VerifyTupleTypePresent(elements.Length, node, this.Compilation, diagnostics);
1243if (name == null || NamedTypeSymbol.IsTupleElementNameReserved(name) != -1)
1730symbol = ConstructNamedTypeUnlessTypeArgumentOmitted(node, (NamedTypeSymbol)symbol, typeArgumentList, typeArgumentsWithAnnotations, diagnostics);
1760var type = BindNativeIntegerSymbolIfAny(identifier, diagnostics);
1836if (symbol.ContainingSymbol is NamedTypeSymbol { OriginalDefinition: var symbolContainerDefinition } &&
1844NamedTypeSymbol baseToCheck = containingTypeDefinition.BaseTypeNoUseSiteDiagnostics;
2016var currentType = this.ContainingType;
2024var declaringType = members[0].ContainingType;
2114primaryCtor.ContainingSymbol is NamedTypeSymbol { IsRecord: false, IsRecordStruct: false } ||
2379var currentType = this.ContainingType;
2381NamedTypeSymbol declaringType = member.ContainingType;
2442private BoundExpression TryBindInteractiveReceiver(SyntaxNode syntax, NamedTypeSymbol memberDeclaringType)
2593private BoundThisReference ThisReference(SyntaxNode node, NamedTypeSymbol thisTypeOpt, bool hasErrors = false, bool wasCompilerGenerated = false)
2693NamedTypeSymbol nullableType = GetSpecialType(SpecialType.System_Nullable_T, diagnostics, node);
2773NamedTypeSymbol nullableType = GetSpecialType(SpecialType.System_Nullable_T, diagnostics, node);
2800NamedTypeSymbol nullableType = GetSpecialType(SpecialType.System_Nullable_T, diagnostics, operand);
2900!MethodGroupConversionDoesNotExistOrHasErrors((BoundMethodGroup)operand, (NamedTypeSymbol)targetType, syntax.Location, diagnostics, out _))
3753Debug.Assert(handlerType is NamedTypeSymbol { IsInterpolatedStringHandlerType: true });
3872var receiverParameter = ((NamedTypeSymbol)methodResult.Member.ContainingSymbol).ExtensionParameter;
3958(NamedTypeSymbol)handlerType,
4695var spanType = GetWellKnownType(WellKnownType.System_Span_T, diagnostics, node);
4916NamedTypeSymbol containingType = constructor.ContainingType;
4937NamedTypeSymbol initializerType = containingType;
5053NamedTypeSymbol initializerType,
5076NamedTypeSymbol baseType = constructor.ContainingType.BaseTypeNoUseSiteDiagnostics;
5198static void validateRecordCopyConstructor(MethodSymbol constructor, NamedTypeSymbol baseType, MethodSymbol resultMember, Location errorLocation, BindingDiagnosticBag diagnostics)
5300return BindClassCreationExpression(node, (NamedTypeSymbol)type, GetName(node.Type), diagnostics, originalType);
5303return BindDelegateCreationExpression(node, (NamedTypeSymbol)type, diagnostics);
5306return BindInterfaceCreationExpression(node, (NamedTypeSymbol)type, diagnostics);
5504private BoundExpression BindDelegateCreationExpression(ObjectCreationExpressionSyntax node, NamedTypeSymbol type, BindingDiagnosticBag diagnostics)
5513private BoundExpression BindDelegateCreationExpression(SyntaxNode node, NamedTypeSymbol type, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt, bool wasTargetTyped, BindingDiagnosticBag diagnostics)
5625var sourceDelegate = (NamedTypeSymbol)argument.Type;
5682private BoundExpression BindClassCreationExpression(ObjectCreationExpressionSyntax node, NamedTypeSymbol type, string typeName, BindingDiagnosticBag diagnostics, TypeSymbol initializerType = null)
5717NamedTypeSymbol type,
6473NamedTypeSymbol collectionsIEnumerableType = this.GetSpecialType(SpecialType.System_Collections_IEnumerable, diagnostics, node);
6805NamedTypeSymbol containingType = this.ContainingType;
6839NamedTypeSymbol type,
6935NamedTypeSymbol type,
7022NamedTypeSymbol type,
7079private BoundObjectInitializerExpressionBase MakeBoundInitializerOpt(SyntaxNode typeNode, NamedTypeSymbol type, InitializerExpressionSyntax initializerSyntaxOpt, TypeSymbol initializerTypeOpt, BindingDiagnosticBag diagnostics)
7092private BoundExpression BindInterfaceCreationExpression(ObjectCreationExpressionSyntax node, NamedTypeSymbol type, BindingDiagnosticBag diagnostics)
7101private BoundExpression BindInterfaceCreationExpression(SyntaxNode node, NamedTypeSymbol type, BindingDiagnosticBag diagnostics, SyntaxNode typeNode, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt, bool wasTargetTyped)
7115NamedTypeSymbol coClassType = type.ComImportCoClass;
7127private BoundExpression BindComImportCoClassCreationExpression(SyntaxNode node, NamedTypeSymbol interfaceType, NamedTypeSymbol coClassType, BindingDiagnosticBag diagnostics, SyntaxNode typeNode, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt, bool wasTargetTyped)
7210NamedTypeSymbol interfaceType,
7211NamedTypeSymbol coClassType,
7320NamedTypeSymbol typeContainingConstructors,
7359NamedTypeSymbol typeContainingConstructors,
7481private ImmutableArray<MethodSymbol> GetAccessibleConstructorsForOverloadResolution(NamedTypeSymbol type, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
7487private ImmutableArray<MethodSymbol> GetAccessibleConstructorsForOverloadResolution(NamedTypeSymbol type, bool allowProtectedConstructorsOfBaseType, out ImmutableArray<MethodSymbol> allInstanceConstructors, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
7494type = type.GetNonErrorGuess() as NamedTypeSymbol ?? type;
7501private static ConstantValue FoldParameterlessValueTypeConstructor(NamedTypeSymbol type)
7609var type = GetWellKnownType(WellKnownType.System_ReadOnlySpan_T, diagnostics, node).Construct(GetSpecialType(SpecialType.System_Byte, diagnostics, node));
8078var type = (NamedTypeSymbol)sym;
8499var namedType = ((NamedTypeSymbol)type).ConstructedFrom;
8712var type = (NamedTypeSymbol)symbol;
9135NamedTypeSymbol type = fieldSymbol.ContainingType;
9258NamedTypeSymbol underlyingType = null;
9262NamedTypeSymbol enumType = null;
9263NamedTypeSymbol type = fieldSymbol.ContainingType;
9284enumType = (NamedTypeSymbol)fieldType;
9299var containingType = this.ContainingType;
10024var int32 = GetSpecialType(SpecialType.System_Int32, diagnostics, node);
10096NamedTypeSymbol int32 = GetSpecialType(SpecialType.System_Int32, diagnostics, node);
11104internal NamedTypeSymbol? GetMethodGroupDelegateType(BoundMethodGroup node)
11487internal NamedTypeSymbol? GetMethodGroupOrLambdaDelegateType(
11546var delegateType = Compilation.GetWellKnownType(wkDelegateType);
11579static bool checkConstraints(CSharpCompilation compilation, ConversionsBase conversions, NamedTypeSymbol delegateType, ImmutableArray<TypeWithAnnotations> typeArguments)
Binder\Binder_InterpolatedString.cs (16)
41var stringType = GetSpecialType(SpecialType.System_String, diagnostics, node);
55var intType = GetSpecialType(SpecialType.System_Int32, diagnostics, node);
264return BindUnconvertedInterpolatedExpressionToFactory(unconvertedInterpolatedString, parts, (NamedTypeSymbol)unconvertedInterpolatedString.Type, factoryMethod: "Format", unconvertedInterpolatedString.Type, diagnostics);
284var interpolatedStringHandlerType = Compilation.GetWellKnownType(WellKnownType.System_Runtime_CompilerServices_DefaultInterpolatedStringHandler);
334NamedTypeSymbol factoryType,
450var interpolatedStringHandlerType = Compilation.GetWellKnownType(WellKnownType.System_Runtime_CompilerServices_DefaultInterpolatedStringHandler);
517var @string = GetSpecialType(SpecialType.System_String, diagnostics, rootSyntax);
557NamedTypeSymbol interpolatedStringHandlerType,
576NamedTypeSymbol interpolatedStringHandlerType,
603NamedTypeSymbol interpolatedStringHandlerType,
635NamedTypeSymbol interpolatedStringHandlerType,
711var intType = GetSpecialType(SpecialType.System_Int32, diagnostics, syntax);
722var boolType = GetSpecialType(SpecialType.System_Boolean, diagnostics, syntax);
817static void populateArguments(SyntaxNode syntax, ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> additionalConstructorArguments, int baseStringLength, int numFormatHoles, NamedTypeSymbol intType, ArrayBuilder<BoundExpression> argumentsBuilder)
853var objectType = GetSpecialType(SpecialType.System_Object, diagnostics, unconvertedInterpolatedString.Syntax);
998var expected = builderPatternExpectsBool == true ? Compilation.GetSpecialType(SpecialType.System_Boolean) : Compilation.GetSpecialType(SpecialType.System_Void);
Binder\Binder_Lookup.cs (69)
233this.LookupMembersInInterface(result, (NamedTypeSymbol)type, name, arity, basesBeingResolved, options, originalBinder, diagnose, ref useSiteInfo);
724var namedType = (NamedTypeSymbol)symbol;
857PooledHashSet<NamedTypeSymbol> visited = null;
867NamedTypeSymbol namedType = currentType as NamedTypeSymbol;
921NamedTypeSymbol type,
958NamedTypeSymbol idictSymbol, iroDictSymbol, iListSymbol, iCollectionSymbol, inccSymbol, inpcSymbol;
962foreach (var iface in type.AllInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo))
1003private void GetWellKnownWinRTMemberInterfaces(out NamedTypeSymbol idictSymbol, out NamedTypeSymbol iroDictSymbol, out NamedTypeSymbol iListSymbol, out NamedTypeSymbol iCollectionSymbol, out NamedTypeSymbol inccSymbol, out NamedTypeSymbol inpcSymbol)
1013private static bool ShouldAddWinRTMembersForInterface(NamedTypeSymbol iface, NamedTypeSymbol idictSymbol, NamedTypeSymbol iroDictSymbol, NamedTypeSymbol iListSymbol, NamedTypeSymbol iCollectionSymbol, NamedTypeSymbol inccSymbol, NamedTypeSymbol inpcSymbol)
1015var iFaceOriginal = iface.OriginalDefinition;
1060NamedTypeSymbol type,
1082private static ImmutableArray<NamedTypeSymbol> GetBaseInterfaces(NamedTypeSymbol type, ConsList<TypeSymbol> basesBeingResolved, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1091return ImmutableArray<NamedTypeSymbol>.Empty;
1098return ImmutableArray<NamedTypeSymbol>.Empty;
1114var cycleGuard = ConsList<NamedTypeSymbol>.Empty.Prepend(type.OriginalDefinition);
1118var result = ArrayBuilder<NamedTypeSymbol>.GetInstance();
1119var visited = new HashSet<NamedTypeSymbol>(Symbols.SymbolEqualityComparer.ConsiderEverything);
1128foreach (var candidate in result)
1135static void addAllInterfaces(NamedTypeSymbol @interface, HashSet<NamedTypeSymbol> visited, ArrayBuilder<NamedTypeSymbol> result, ConsList<TypeSymbol> basesBeingResolved, ConsList<NamedTypeSymbol> cycleGuard)
1137NamedTypeSymbol originalDefinition;
1143ImmutableArray<NamedTypeSymbol> baseInterfaces = @interface.GetDeclaredInterfaces(basesBeingResolved);
1150var baseInterface = baseInterfaces[i];
1163ImmutableArray<NamedTypeSymbol> interfaces,
1176HashSet<NamedTypeSymbol> seenInterfaces = null;
1179seenInterfaces = new HashSet<NamedTypeSymbol>(Symbols.SymbolEqualityComparer.IgnoringNullable);
1182foreach (NamedTypeSymbol baseInterface in interfaces)
1196private void LookupMembersInInterface(LookupResult current, NamedTypeSymbol type, string name, int arity, ConsList<TypeSymbol> basesBeingResolved, LookupOptions options, Binder originalBinder, bool diagnose, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1233private static bool IsDerivedType(NamedTypeSymbol baseType, NamedTypeSymbol derivedType, ConsList<TypeSymbol> basesBeingResolved, CSharpCompilation compilation, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1239for (NamedTypeSymbol b = derivedType.BaseTypeWithDefinitionUseSiteDiagnostics(ref useSiteInfo); (object)b != null; b = b.BaseTypeWithDefinitionUseSiteDiagnostics(ref useSiteInfo))
1246PooledHashSet<NamedTypeSymbol> visited = null;
1248for (var b = (NamedTypeSymbol)derivedType.GetNextBaseTypeNoUseSiteDiagnostics(basesBeingResolved, compilation, ref visited);
1250b = (NamedTypeSymbol)b.GetNextBaseTypeNoUseSiteDiagnostics(basesBeingResolved, compilation, ref visited))
1284var hiddenContainer = sym.ContainingType;
1290var hidingContainer = hidingSym.ContainingType;
1343return nsOrType.GetTypeMembers(name).Cast<NamedTypeSymbol, Symbol>();
1347return ((NamedTypeSymbol)nsOrType).GetEarlyAttributeDecodingMembers(name);
1371return ((NamedTypeSymbol)nsOrType).GetEarlyAttributeDecodingMembers();
1385while (symbol is not null and not NamedTypeSymbol { IsFileLocal: true })
1402var symbolFileIdentifier = ((NamedTypeSymbol)symbol).AssociatedFileIdentifier;
1822NamedTypeSymbol namedType = (NamedTypeSymbol)symbol;
2022private void AddWinRTMembersLookupSymbolsInfo(LookupSymbolsInfo result, NamedTypeSymbol type, LookupOptions options, Binder originalBinder, TypeSymbol accessThroughType)
2024NamedTypeSymbol idictSymbol, iroDictSymbol, iListSymbol, iCollectionSymbol, inccSymbol, inpcSymbol;
2028foreach (var iface in type.AllInterfacesNoUseSiteDiagnostics)
2039PooledHashSet<NamedTypeSymbol> visited = null;
2048NamedTypeSymbol namedType = type as NamedTypeSymbol;
2074foreach (var baseInterface in type.AllInterfacesNoUseSiteDiagnostics)
2090NamedTypeSymbol effectiveBaseClass = type.EffectiveBaseClassNoUseSiteDiagnostics;
2093foreach (var baseInterface in type.AllEffectiveInterfacesNoUseSiteDiagnostics)
Binder\Binder_Patterns.cs (72)
19protected NamedTypeSymbol? PrepareForUnionMatchingIfAppropriateAndReturnUnionMatchingInputType(SyntaxNode node, ref TypeSymbol inputType, ref NamedTypeSymbol? unionType, BindingDiagnosticBag diagnostics)
21if (inputType.IsUnionMatchingInputType(out var unionTypeOverride))
25var originalInputType = (NamedTypeSymbol)inputType;
36internal static PropertySymbol? GetUnionTypeValueProperty(NamedTypeSymbol inputUnionType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
47private static PropertySymbol? GetUnionTypeValuePropertyOriginalDefinition(NamedTypeSymbol inputUnionType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
91internal static PropertySymbol? GetUnionTypeValuePropertyNoUseSiteDiagnostics(NamedTypeSymbol inputUnionType)
97internal static bool IsUnionTypeValueProperty(NamedTypeSymbol unionType, Symbol symbol)
104private static PropertySymbol? GetUnionTypeHasValuePropertyOriginalDefinition(NamedTypeSymbol inputUnionType)
143internal static PropertySymbol? GetUnionTypeHasValueProperty(NamedTypeSymbol inputUnionType)
154internal static MethodSymbol? GetUnionTypeTryGetValueMethod(NamedTypeSymbol inputUnionType, TypeSymbol type)
159NamedTypeSymbol unionDefinition = inputUnionType.OriginalDefinition;
197internal static bool IsUnionTypeHasValueProperty(NamedTypeSymbol unionType, PropertySymbol property)
223NamedTypeSymbol? unionType = null;
363ref NamedTypeSymbol? unionType,
392ref NamedTypeSymbol? unionType,
428var systemRangeType = GetWellKnownType(WellKnownType.System_Range, diagnostics, node);
456NamedTypeSymbol? unionType = null;
491NamedTypeSymbol? unionType = null;
504ref NamedTypeSymbol? unionType,
511NamedTypeSymbol? unionMatchingInputType = PrepareForUnionMatchingIfAppropriateAndReturnUnionMatchingInputType(node, ref inputType, ref unionType, diagnostics);
604var systemIndexType = GetWellKnownType(WellKnownType.System_Index, diagnostics, node);
630ref NamedTypeSymbol? unionType,
642ref NamedTypeSymbol? unionType,
648NamedTypeSymbol? unionTypeOnEntry = unionType;
649NamedTypeSymbol? unionMatchingInputType = PrepareForUnionMatchingIfAppropriateAndReturnUnionMatchingInputType(node, ref inputType, ref unionType, diagnostics);
698internal static bool IsClassOrNullableValueTypeUnionNullPatternMatching([NotNullWhen(true)] NamedTypeSymbol? unionMatchingInputType, [NotNullWhen(true)] ConstantValue? constantValueOpt)
749NamedTypeSymbol? unionType,
779NamedTypeSymbol? unionType,
799NamedTypeSymbol? unionType,
844NamedTypeSymbol? unionType,
1026NamedTypeSymbol? unionType,
1128NamedTypeSymbol unionType,
1197ref NamedTypeSymbol? unionType,
1204NamedTypeSymbol? unionMatchingInputType = PrepareForUnionMatchingIfAppropriateAndReturnUnionMatchingInputType(node, ref inputType, ref unionType, diagnostics);
1217NamedTypeSymbol? unionType,
1293NamedTypeSymbol? unionType,
1324ref NamedTypeSymbol? unionType,
1331NamedTypeSymbol? unionMatchingInputType = PrepareForUnionMatchingIfAppropriateAndReturnUnionMatchingInputType(node, ref inputType, ref unionType, diagnostics);
1379ShouldUseITupleForRecursivePattern(node, declType, diagnostics, out var iTupleType, out var iTupleGetLength, out var iTupleGetItem))
1476NamedTypeSymbol? unionType = null;
1497var objectType = Compilation.GetSpecialType(SpecialType.System_Object);
1510NamedTypeSymbol? unionType = null;
1548foundField = CheckIsTupleElement(subpatternSyntax.NameColon.Name, (NamedTypeSymbol)declType, name, i, diagnostics);
1556NamedTypeSymbol? unionType = null;
1570[NotNullWhen(true)] out NamedTypeSymbol? iTupleType,
1608[NotNullWhen(true)] out NamedTypeSymbol? iTupleType,
1659bool hasBaseInterface(TypeSymbol type, NamedTypeSymbol possibleBaseInterface)
1671private static FieldSymbol? CheckIsTupleElement(SyntaxNode node, NamedTypeSymbol tupleType, string name, int tupleIndex, BindingDiagnosticBag diagnostics)
1693ref NamedTypeSymbol? unionType,
1721ref NamedTypeSymbol? unionType,
1765BoundPattern bindParenthesizedVariableDesignation(VariableDesignationSyntax node, ref NamedTypeSymbol? unionType, TypeSymbol inputType, bool permitDesignations, bool hasErrors, BindingDiagnosticBag diagnostics, out bool hasUnionMatching)
1767NamedTypeSymbol? unionMatchingInputType = PrepareForUnionMatchingIfAppropriateAndReturnUnionMatchingInputType(node, ref inputType, ref unionType, diagnostics);
1800ShouldUseITuple(node, strippedInputType, diagnostics, out var iTupleType, out var iTupleGetLength, out var iTupleGetItem))
1823NamedTypeSymbol? varUnionType = null;
1848NamedTypeSymbol? unionType = null;
1862var objectType = Compilation.GetSpecialType(SpecialType.System_Object);
1866NamedTypeSymbol? unionType = null;
1925NamedTypeSymbol? unionType = null;
2037ref NamedTypeSymbol? unionType,
2043NamedTypeSymbol? unionMatchingInputType = PrepareForUnionMatchingIfAppropriateAndReturnUnionMatchingInputType(node, ref inputType, ref unionType, diagnostics);
2055ref NamedTypeSymbol? unionType,
2061NamedTypeSymbol? unionMatchingInputType = PrepareForUnionMatchingIfAppropriateAndReturnUnionMatchingInputType(node, ref inputType, ref unionType, diagnostics);
2153ref NamedTypeSymbol? unionType,
2160NamedTypeSymbol? unionMatchingInputType = PrepareForUnionMatchingIfAppropriateAndReturnUnionMatchingInputType(node, ref inputType, ref unionType, diagnostics);
2177NamedTypeSymbol? currentUnionType = unionType;
2185ref NamedTypeSymbol? unionType,
2207NamedTypeSymbol? incomingUnionType = unionType;
2238NamedTypeSymbol? incomingUnionType,
2239ref NamedTypeSymbol? unionType,
2253NamedTypeSymbol? rightUnionType = unionType;
Binder\Binder_Symbols.cs (39)
357&& containing is not NamedTypeSymbol { IsExtension: true })
567var type = (NamedTypeSymbol)constructedType.Type;
582var type = BindPredefinedTypeSymbol(predefinedType, diagnostics);
746return NamedTypeSymbol.CreateTuple(syntax.Location,
802int reserved = NamedTypeSymbol.IsTupleElementNameReserved(name);
821private NamedTypeSymbol BindPredefinedTypeSymbol(PredefinedTypeSyntax node, BindingDiagnosticBag diagnostics)
1003private NamedTypeSymbol BindNativeIntegerSymbolIfAny(IdentifierNameSyntax node, BindingDiagnosticBag diagnostics)
1222NamedTypeSymbol unconstructedType = LookupGenericTypeName(
1224NamedTypeSymbol resultType;
1272private NamedTypeSymbol LookupGenericTypeName(
1312NamedTypeSymbol type = lookupResultSymbol as NamedTypeSymbol;
1395private NamedTypeSymbol ConstructNamedTypeUnlessTypeArgumentOmitted(SyntaxNode typeSyntax, NamedTypeSymbol type, SeparatedSyntaxList<TypeSyntax> typeArgumentsSyntax, ImmutableArray<TypeWithAnnotations> typeArguments, BindingDiagnosticBag diagnostics)
1631private NamedTypeSymbol ConstructNamedType(
1632NamedTypeSymbol type,
1676((NamedTypeSymbol)left).IsUnboundGenericType;
1683left = ((NamedTypeSymbol)left).OriginalDefinition;
1702var namedTypeRight = right.Symbol as NamedTypeSymbol;
1713internal NamedTypeSymbol GetSpecialType(ExtendedSpecialType typeId, BindingDiagnosticBag diagnostics, SyntaxNode node)
1718internal static NamedTypeSymbol GetSpecialType(CSharpCompilation compilation, ExtendedSpecialType typeId, SyntaxNode node, BindingDiagnosticBag diagnostics)
1720NamedTypeSymbol typeSymbol = compilation.GetSpecialType(typeId);
1726internal static NamedTypeSymbol GetSpecialType(CSharpCompilation compilation, ExtendedSpecialType typeId, Location location, BindingDiagnosticBag diagnostics)
1728NamedTypeSymbol typeSymbol = compilation.GetSpecialType(typeId);
1832internal NamedTypeSymbol GetWellKnownType(WellKnownType type, BindingDiagnosticBag diagnostics, SyntaxNode node)
1841internal NamedTypeSymbol GetWellKnownType(WellKnownType type, BindingDiagnosticBag diagnostics, Location location)
1850internal static NamedTypeSymbol GetWellKnownType(CSharpCompilation compilation, WellKnownType type, BindingDiagnosticBag diagnostics, SyntaxNode node)
1856internal static NamedTypeSymbol GetWellKnownType(CSharpCompilation compilation, WellKnownType type, BindingDiagnosticBag diagnostics, Location location)
1858NamedTypeSymbol typeSymbol = compilation.GetWellKnownType(type);
1864internal static bool TryGetOptionalWellKnownType(CSharpCompilation compilation, WellKnownType type, BindingDiagnosticBag diagnostics, Location location, [NotNullWhen(true)] out NamedTypeSymbol? typeSymbol)
1886internal NamedTypeSymbol GetWellKnownType(WellKnownType type, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1888NamedTypeSymbol typeSymbol = this.Compilation.GetWellKnownType(type);
2287Compilation.IsAttributeType((NamedTypeSymbol)first) &&
2288Compilation.IsAttributeType((NamedTypeSymbol)second))
2351Emit.NoPia.EmbeddedTypesManager.IsValidEmbeddableType((NamedTypeSymbol)singleResult, where, diagnostics.DiagnosticBag);
2607if (symbol is NamedTypeSymbol { IsFileLocal: true })
2723var forwardedType =
Binder\ForEachLoopBinder.cs (14)
734nullableValueGetter = nullableValueGetter.AsMember((NamedTypeSymbol)collectionExprType);
858NamedTypeSymbol spanType = GetWellKnownType(wellKnownSpan, diagnostics, collectionExpr.Syntax);
1090NamedTypeSymbol collectionType = (NamedTypeSymbol)builder.CollectionType;
1150moveNextMethod = moveNextAsync.AsMember((NamedTypeSymbol)enumeratorType);
1162builder.CurrentPropertyGetter = currentPropertyGetter.AsMember((NamedTypeSymbol)enumeratorType);
1273NamedTypeSymbol targetInterface = isAsync ? this.Compilation.GetWellKnownType(WellKnownType.System_IAsyncDisposable) : this.Compilation.GetSpecialType(SpecialType.System_IDisposable);
1802NamedTypeSymbol implementedIEnumerable = GetIEnumerableOfT(type, isAsync, Compilation, ref useSiteInfo, out foundMultiple, out bool needSupportForRefStructInterfaces);
1811var implementedNonGeneric = this.Compilation.GetSpecialType(SpecialType.System_Collections_IEnumerable);
1832internal static NamedTypeSymbol GetIEnumerableOfT(
1836NamedTypeSymbol implementedIEnumerable = null;
1856private static void GetIEnumerableOfT(ImmutableArray<NamedTypeSymbol> interfaces, bool isAsync, CSharpCompilation compilation, ref NamedTypeSymbol result, ref bool foundMultiple)
1865foreach (NamedTypeSymbol @interface in interfaces)
Binder\InSubmissionClassBinder.cs (3)
26internal InSubmissionClassBinder(NamedTypeSymbol submissionClass, Binder next, CompilationUnitSyntax declarationSyntax, bool inUsings)
47this.LookupMembersInSubmissions(result, (NamedTypeSymbol)Container, _declarationSyntax, _inUsings, name, arity, basesBeingResolved, options, originalBinder, diagnose, ref useSiteInfo);
52this.AddMemberLookupSymbolsInfoInSubmissions(result, (NamedTypeSymbol)Container, _inUsings, options, originalBinder);
Binder\Semantics\AccessCheck.cs (41)
39NamedTypeSymbol within,
54NamedTypeSymbol within,
145Debug.Assert(within is NamedTypeSymbol || within is AssemblySymbol);
158return IsNamedTypeAccessible((NamedTypeSymbol)symbol, within, ref useSiteInfo, basesBeingResolved);
223private static bool IsNamedTypeAccessible(NamedTypeSymbol type, Symbol within, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, ConsList<TypeSymbol> basesBeingResolved = null)
225Debug.Assert(within is NamedTypeSymbol || within is AssemblySymbol);
246var containingType = type.ContainingType;
261Debug.Assert(within is NamedTypeSymbol || within is AssemblySymbol);
281var withinType = within as NamedTypeSymbol;
298NamedTypeSymbol containingType, // the symbol's containing type
307Debug.Assert(within is NamedTypeSymbol || within is AssemblySymbol);
343NamedTypeSymbol containingType, // the symbol's containing type
354var originalContainingType = containingType.OriginalDefinition;
355var withinType = within as NamedTypeSymbol;
417NamedTypeSymbol withinType,
419NamedTypeSymbol originalContainingType,
460var current = withinType.OriginalDefinition;
495NamedTypeSymbol originalContainingType)
497Debug.Assert(within is NamedTypeSymbol || within is AssemblySymbol);
499var withinType = within as NamedTypeSymbol;
515NamedTypeSymbol withinType,
516NamedTypeSymbol originalContainingType)
524var current = withinType.OriginalDefinition;
546NamedTypeSymbol baseType,
554PooledHashSet<NamedTypeSymbol> interfacesLookedAt = null;
555ArrayBuilder<NamedTypeSymbol> baseInterfaces = null;
560interfacesLookedAt = PooledHashSet<NamedTypeSymbol>.GetInstance();
561baseInterfaces = ArrayBuilder<NamedTypeSymbol>.GetInstance();
564PooledHashSet<NamedTypeSymbol> visited = null;
606NamedTypeSymbol currentBase = baseInterfaces.Pop();
625foreach (var candidate in interfacesLookedAt)
636static void getBaseInterfaces(TypeSymbol derived, ArrayBuilder<NamedTypeSymbol> baseInterfaces, PooledHashSet<NamedTypeSymbol> interfacesLookedAt, ConsList<TypeSymbol> basesBeingResolved)
643ImmutableArray<NamedTypeSymbol> declaredInterfaces;
651case NamedTypeSymbol namedType:
660foreach (var @interface in declaredInterfaces)
662NamedTypeSymbol definition = @interface.OriginalDefinition;
697internal static ErrorCode GetProtectedMemberInSealedTypeError(NamedTypeSymbol containingType)
Binder\Semantics\Conversions\ConversionsBase.cs (60)
974var d = derivedType as NamedTypeSymbol;
980foreach (var iface in d.AllInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo))
1165HasIdentityConversionInternal(((NamedTypeSymbol)destination.OriginalDefinition).Construct(ImmutableArray.Create(elementType)), destination))
1492var delegateType = (NamedTypeSymbol)type;
1601private static LambdaConversionResult IsAnonymousFunctionCompatibleWithExpressionTree(UnboundLambda anonymousFunction, NamedTypeSymbol type, CSharpCompilation compilation)
1634var multicastDelegateType = corLibrary.GetSpecialType(SpecialType.System_MulticastDelegate);
1650return IsAnonymousFunctionCompatibleWithExpressionTree(anonymousFunction, (NamedTypeSymbol)type, compilation);
1689else if ((destination as NamedTypeSymbol)?.HasCollectionBuilderAttribute(out _, out _) == true)
1716var specialType = compilation.GetSpecialType(specialInterface);
1723if (targetType is NamedTypeSymbol { Arity: 1 } namedType
1913private static bool HasIdentityConversionToAny(NamedTypeSymbol type, ArrayBuilder<(NamedTypeSymbol ParticipatingType, TypeParameterSymbol ConstrainedToTypeOpt)> targetTypes)
2600NamedTypeSymbol destinationAgg = (NamedTypeSymbol)destination;
2840var derivedType = this.corLibrary.GetDeclaredSpecialType(SpecialType.System_MulticastDelegate);
2852var sourceDelegate = sourceType.GetInternalDelegateType();
2858var destinationDelegate = destinationType.GetInternalDelegateType();
2939var effectiveBaseClass = source.EffectiveBaseClass(ref useSiteInfo);
2974foreach (var i in source.AllEffectiveInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo))
2999var d = derivedType as NamedTypeSymbol;
3005foreach (var i in d.AllInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo))
3016internal bool ImplementsVarianceCompatibleInterface(NamedTypeSymbol derivedType, TypeSymbol baseType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3021internal bool HasImplicitConversionToOrImplementsVarianceCompatibleInterface(TypeSymbol typeToCheck, NamedTypeSymbol targetInterfaceType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool needSupportForRefStructInterfaces)
3041private bool IsRefLikeOrAllowsRefLikeTypeImplementingVarianceCompatibleInterface(TypeSymbol typeToCheck, NamedTypeSymbol targetInterfaceType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3055internal bool HasImplicitConversionToOrImplementsVarianceCompatibleInterface(BoundExpression expressionToCheck, NamedTypeSymbol targetInterfaceType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool needSupportForRefStructInterfaces)
3093NamedTypeSymbol? s = source as NamedTypeSymbol;
3094NamedTypeSymbol? d = destination as NamedTypeSymbol;
3112NamedTypeSymbol? s = source as NamedTypeSymbol;
3113NamedTypeSymbol? d = destination as NamedTypeSymbol;
3127private bool HasVariantConversion(NamedTypeSymbol source, NamedTypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3158private ThreeState HasVariantConversionQuick(NamedTypeSymbol source, NamedTypeSymbol destination)
3168NamedTypeSymbol typeSymbol = source.OriginalDefinition;
3177private bool HasVariantConversionNoCycleCheck(NamedTypeSymbol source, NamedTypeSymbol destination, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3256static bool isTypeIEquatable(NamedTypeSymbol type)
3571for (var type = t.EffectiveBaseClass(ref useSiteInfo); (object)type != null; type = type.BaseTypeWithDefinitionUseSiteDiagnostics(ref useSiteInfo))
3623for (var type = t.EffectiveBaseClass(ref useSiteInfo); (object)type != null; type = type.BaseTypeWithDefinitionUseSiteDiagnostics(ref useSiteInfo))
3689var sourceType = (NamedTypeSymbol)source;
3690var destinationType = (NamedTypeSymbol)destination;
3691var original = sourceType.OriginalDefinition;
3774foreach (var iface in this.corLibrary.GetDeclaredSpecialType(SpecialType.System_Array).AllInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo))
3791if (HasExplicitReferenceConversion(sourceArray.ElementType, ((NamedTypeSymbol)destination).TypeArgumentWithDefinitionUseSiteDiagnostics(0, ref useSiteInfo).Type, ref useSiteInfo))
3811var sourceElement = ((NamedTypeSymbol)source).TypeArgumentWithDefinitionUseSiteDiagnostics(0, ref useSiteInfo).Type;
3986var spanElementType = ((NamedTypeSymbol)destination).TypeArgumentsWithDefinitionUseSiteDiagnostics(ref useSiteInfo)[0];
3993var spanElementType = ((NamedTypeSymbol)destination).TypeArgumentsWithDefinitionUseSiteDiagnostics(ref useSiteInfo)[0];
4003var sourceElementType = ((NamedTypeSymbol)source).TypeArgumentsWithDefinitionUseSiteDiagnostics(ref useSiteInfo)[0];
4004var destinationElementType = ((NamedTypeSymbol)destination).TypeArgumentsWithDefinitionUseSiteDiagnostics(ref useSiteInfo)[0];
4013var spanElementType = ((NamedTypeSymbol)destination).TypeArgumentsWithDefinitionUseSiteDiagnostics(ref useSiteInfo)[0];
4049var spanElementType = ((NamedTypeSymbol)destination).TypeArgumentsWithDefinitionUseSiteDiagnostics(ref useSiteInfo)[0];
Binder\Semantics\Conversions\UserDefinedExplicitConversions.cs (7)
36var d = ArrayBuilder<(NamedTypeSymbol ParticipatingType, TypeParameterSymbol ConstrainedToTypeOpt)>.GetInstance();
74private static void ComputeUserDefinedExplicitConversionTypeSet(TypeSymbol source, TypeSymbol target, ArrayBuilder<(NamedTypeSymbol ParticipatingType, TypeParameterSymbol ConstrainedToTypeOpt)> d, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
90ArrayBuilder<(NamedTypeSymbol ParticipatingType, TypeParameterSymbol ConstrainedToTypeOpt)> d,
102foreach ((NamedTypeSymbol declaringType, TypeParameterSymbol constrainedToTypeOpt) in d)
117foreach ((NamedTypeSymbol declaringType, TypeParameterSymbol constrainedToTypeOpt) in d)
128NamedTypeSymbol declaringType,
147NamedTypeSymbol declaringType,
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (12)
80var d = ArrayBuilder<(NamedTypeSymbol ParticipatingType, TypeParameterSymbol ConstrainedToTypeOpt)>.GetInstance();
118private static void ComputeUserDefinedImplicitConversionTypeSet(TypeSymbol s, TypeSymbol t, ArrayBuilder<(NamedTypeSymbol ParticipatingType, TypeParameterSymbol ConstrainedToTypeOpt)> d, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
146ArrayBuilder<(NamedTypeSymbol ParticipatingType, TypeParameterSymbol ConstrainedToTypeOpt)> d,
255foreach ((NamedTypeSymbol declaringType, TypeParameterSymbol constrainedToTypeOpt) in d)
270foreach ((NamedTypeSymbol declaringType, TypeParameterSymbol constrainedToTypeOpt) in d)
281NamedTypeSymbol declaringType,
887private NamedTypeSymbol MakeNullableType(TypeSymbol type)
889var nullable = this.corLibrary.GetDeclaredSpecialType(SpecialType.System_Nullable_T);
963var d = ArrayBuilder<(NamedTypeSymbol ParticipatingType, TypeParameterSymbol ConstrainedToTypeOpt)>.GetInstance();
994if (target.StrippedType() is not NamedTypeSymbol namedTarget || !namedTarget.IsUnionType)
1025NamedTypeSymbol declaringType,
1031if (!NamedTypeSymbol.IsSuitableUnionConstructor(ctor))
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (15)
235ImmutableArray<NamedTypeSymbol> interfaces = default;
244GetUserDefinedBinaryOperatorsFromType(constrainedToTypeOpt, (NamedTypeSymbol)operatorSourceOpt, kind, name1, name2Opt, operators);
267var shadowedInterfaces = PooledHashSet<NamedTypeSymbol>.GetInstance();
269foreach (NamedTypeSymbol @interface in interfaces)
487var underlying = enumType.GetEnumUnderlyingType();
491var nullableEnum = Compilation.GetOrCreateNullableType(enumType);
492var nullableUnderlying = Compilation.GetOrCreateNullableType(underlying);
540var boolean = Compilation.GetSpecialType(SpecialType.System_Boolean);
798var @object = Compilation.GetSpecialType(SpecialType.System_Object);
902NamedTypeSymbol current = type0 as NamedTypeSymbol;
949NamedTypeSymbol type,
989private static void GetDeclaredUserDefinedBinaryOperators(TypeSymbol? constrainedToTypeOpt, NamedTypeSymbol type, BinaryOperatorKind kind, string name, ArrayBuilder<BinaryOperatorSignature> operators)
1507NamedTypeSymbol.AddOperators(typeOperators, extensionCandidatesInSingleScope);
1518NamedTypeSymbol extension = method.ContainingType;
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (66)
59private static readonly ObjectPool<PooledDictionary<NamedTypeSymbol, NamedTypeSymbol>> s_poolInstance
60= PooledDictionary<NamedTypeSymbol, NamedTypeSymbol>.CreatePool(Symbols.SymbolEqualityComparer.IgnoringNullable);
62internal static PooledDictionary<NamedTypeSymbol, NamedTypeSymbol> GetInstance()
137private readonly NamedTypeSymbol _constructedContainingTypeOfMethod;
179NamedTypeSymbol constructedContainingTypeOfMethod,
328NamedTypeSymbol constructedContainingTypeOfMethod,
733var destination = (NamedTypeSymbol)target.Type;
929var destination = (NamedTypeSymbol)formalType.Type;
1087NamedTypeSymbol n => n.DelegateInvokeMethod,
1410var delegateType = target.Type.GetDelegateType();
1468NamedTypeSymbol n => (n.DelegateInvokeMethod, false),
1571var delegateType = target.Type.GetDelegateType();
1769return ((NamedTypeSymbol)type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0];
1809ExactOrBoundsInference(kind, ((NamedTypeSymbol)source.Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0], ((NamedTypeSymbol)target.Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0], ref useSiteInfo);
1867var namedSource = source.Type as NamedTypeSymbol;
1873var namedTarget = target.Type as NamedTypeSymbol;
1942private void ExactTypeArgumentInference(NamedTypeSymbol source, NamedTypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2110return ((NamedTypeSymbol)target).TypeArgumentWithDefinitionUseSiteDiagnostics(0, ref useSiteInfo);
2199var constructedTarget = target as NamedTypeSymbol;
2219var constructedSource = source as NamedTypeSymbol;
2258private bool LowerBoundClassInference(TypeSymbol source, NamedTypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2280NamedTypeSymbol sourceBase = null;
2303private bool LowerBoundInterfaceInference(TypeSymbol source, NamedTypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2321ImmutableArray<NamedTypeSymbol> allInterfaces;
2344NamedTypeSymbol matchingInterface = GetInterfaceInferenceBound(allInterfaces, target);
2353internal static ImmutableArray<NamedTypeSymbol> ModuloReferenceTypeNullabilityDifferences(ImmutableArray<NamedTypeSymbol> interfaces, VarianceKind variance)
2357foreach (var @interface in interfaces)
2359if (dictionary.TryGetValue(@interface, out var found))
2361var merged = (NamedTypeSymbol)found.MergeEquivalentTypes(@interface, variance);
2375private void LowerBoundTypeArgumentInference(NamedTypeSymbol source, NamedTypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2602var constructedSource = source as NamedTypeSymbol;
2618var constructedTarget = target as NamedTypeSymbol;
2655private bool UpperBoundClassInference(NamedTypeSymbol source, TypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2669var targetBase = target.BaseTypeWithDefinitionUseSiteDiagnostics(ref useSiteInfo);
2684private bool UpperBoundInterfaceInference(NamedTypeSymbol source, TypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2710ImmutableArray<NamedTypeSymbol> allInterfaces = target.AllInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo);
2715NamedTypeSymbol bestInterface = GetInterfaceInferenceBound(allInterfaces, source);
2725private void UpperBoundTypeArgumentInference(NamedTypeSymbol source, NamedTypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
2991var resultType = functionType.GetInternalDelegateType();
2995var expressionOfTType = compilation.GetWellKnownType(WellKnownType.System_Linq_Expressions_Expression_T);
3060private TypeWithAnnotations InferReturnType(BoundExpression source, NamedTypeSymbol target, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
3115var fixedDelegate = (NamedTypeSymbol)GetFixedDelegateOrFunctionPointer(target);
3154private static NamedTypeSymbol GetInterfaceInferenceBound(ImmutableArray<NamedTypeSymbol> interfaces, NamedTypeSymbol target)
3157NamedTypeSymbol matchingInterface = null;
3158foreach (var currentInterface in interfaces)
3188NamedTypeSymbol extension,
Binder\Semantics\OverloadResolution\OverloadResolution.cs (37)
204members.All(static m => m.ContainingSymbol is NamedTypeSymbol { BaseTypeNoUseSiteDiagnostics.SpecialType: SpecialType.System_Object }));
370Dictionary<NamedTypeSymbol, ArrayBuilder<TMember>> containingTypeMapOpt = null;
715Debug.Assert(unmanagedCallingConventionTypes.All(u => FunctionPointerTypeSymbol.IsCallingConventionModifier((NamedTypeSymbol)u)));
900private static Dictionary<NamedTypeSymbol, ArrayBuilder<TMember>> PartitionMembersByContainingType<TMember>(ArrayBuilder<TMember> members) where TMember : Symbol
902Dictionary<NamedTypeSymbol, ArrayBuilder<TMember>> containingTypeMap = new Dictionary<NamedTypeSymbol, ArrayBuilder<TMember>>();
906NamedTypeSymbol containingType = member.ContainingType;
918private static void ClearContainingTypeMap<TMember>(ref Dictionary<NamedTypeSymbol, ArrayBuilder<TMember>> containingTypeMapOpt) where TMember : Symbol
1063Dictionary<NamedTypeSymbol, ArrayBuilder<TMember>> containingTypeMapOpt,
1127NamedTypeSymbol memberContainingType = member.ContainingType;
1130NamedTypeSymbol otherType = pair.Key;
1446NamedTypeSymbol memberContainingType = member.ContainingType;
1449NamedTypeSymbol otherContainingType = otherMember.ContainingType;
1643var currentType = result.LeastOverriddenMember.ContainingType;
1656if (currentType.IsInterfaceType() && type.IsInterfaceType() && currentType.AllInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo).Contains((NamedTypeSymbol)type))
1712var type = result.LeastOverriddenMember.ContainingType;
1884var resultsByContainingType = PooledDictionary<NamedTypeSymbol, OneOrMany<TMemberResolution>>.GetInstance();
1900NamedTypeSymbol containingType = memberWithPriority.IsExtensionBlockMember()
2686bool isExtensionParameterOfStaticExtensionMember = parameter is { ContainingSymbol: NamedTypeSymbol { IsExtension: true, ExtensionParameter: var extensionParameter } }
2845var n1 = t1 as NamedTypeSymbol;
2846var n2 = t2 as NamedTypeSymbol;
3287NamedTypeSymbol d;
3310y = ((NamedTypeSymbol)y).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type;
3389var destination = (NamedTypeSymbol)targetType;
3550return BetterConversionTargetCore(((NamedTypeSymbol)type1).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type,
3551((NamedTypeSymbol)type2).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type,
3564NamedTypeSymbol d1;
3568NamedTypeSymbol d2;
3661var type1Element = ((NamedTypeSymbol)type1).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type;
3662var type2Element = ((NamedTypeSymbol)type2).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type;
3673private bool IsMethodGroupConversionIncompatibleWithDelegate(BoundMethodGroup node, NamedTypeSymbol delegateType, Conversion conv)
3695NamedTypeSymbol d1;
3699NamedTypeSymbol d2;
4602&& parameters.ParameterTypes[argumentPosition].Type is NamedTypeSymbol { IsInterpolatedStringHandlerType: true, IsValueType: true })
Binder\UnionMatchingRewriter.cs (13)
55private NamedTypeSymbol ObjectType => _compilation.GetSpecialType(SpecialType.System_Object);
57private static BoundPatternWithUnionMatching CreatePatternWithUnionMatching(NamedTypeSymbol unionMatchingInputType, BoundPattern innerPattern)
62PropertySymbol? valueProperty = Binder.GetUnionTypeValuePropertyNoUseSiteDiagnostics((NamedTypeSymbol)unionMatchingInputType.StrippedType());
81if (Binder.IsClassOrNullableValueTypeUnionNullPatternMatching((NamedTypeSymbol)node.InputType, node.ConstantValue) && node.NarrowedType.Equals(node.InputType, TypeCompareKind.AllIgnoreOptions))
86(NamedTypeSymbol)node.InputType,
99(NamedTypeSymbol)node.InputType,
112(NamedTypeSymbol)node.InputType,
136(NamedTypeSymbol)node.InputType,
150(NamedTypeSymbol)node.InputType,
164(NamedTypeSymbol)node.InputType,
178(NamedTypeSymbol)node.InputType,
191(NamedTypeSymbol)node.InputType,
207(NamedTypeSymbol)node.InputType,
BoundTree\UnboundLambda.cs (36)
155var delegateType = Type.GetDelegateType();
174internal LambdaSymbol CreateLambdaSymbol(NamedTypeSymbol delegateType, Symbol containingSymbol) =>
318NamedTypeSymbol? taskType = null;
319var delegateReturnType = delegateType?.GetDelegateType()?.DelegateInvokeMethod?.ReturnType as NamedTypeSymbol;
332var resultType = taskType?.Arity == 0 ?
347var taskTypeT = taskType?.Arity == 1 ?
467public BoundLambda Bind(NamedTypeSymbol delegateType, bool isExpressionTree)
473public BoundLambda BindForReturnTypeInference(NamedTypeSymbol delegateType)
502public TypeWithAnnotations InferReturnType(ConversionsBase conversions, NamedTypeSymbol delegateType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out bool inferredFromFunctionType)
543Constraint = "Avoid " + nameof(ConcurrentDictionary<(NamedTypeSymbol, bool), BoundLambda>) + " which has a large default size, but this cache is normally small.")]
544private ImmutableDictionary<(NamedTypeSymbol Type, bool IsExpressionLambda), BoundLambda>? _bindingCache;
560_bindingCache = ImmutableDictionary<(NamedTypeSymbol Type, bool IsExpressionLambda), BoundLambda>.Empty.WithComparers(BindingCacheComparer.Instance);
636public BoundLambda Bind(NamedTypeSymbol delegateType, bool isTargetExpressionTree)
672private static MethodSymbol? DelegateInvokeMethod(NamedTypeSymbol? delegateType)
738internal NamedTypeSymbol? InferDelegateType()
816private BoundLambda ReallyBind(NamedTypeSymbol delegateType, bool inExpressionTree)
948internal LambdaSymbol CreateLambdaSymbol(NamedTypeSymbol delegateType, Symbol containingSymbol)
982NamedTypeSymbol? delegateType,
1069public BoundLambda BindForReturnTypeInference(NamedTypeSymbol delegateType)
1090public readonly NamedTypeSymbol? TaskLikeReturnTypeOpt;
1094private ReturnInferenceCacheKey(ImmutableArray<TypeWithAnnotations> parameterTypes, ImmutableArray<RefKind> parameterRefKinds, NamedTypeSymbol? taskLikeReturnTypeOpt)
1141public static ReturnInferenceCacheKey Create(NamedTypeSymbol? delegateType, bool isAsync)
1143GetFields(delegateType, isAsync, out var parameterTypes, out var parameterRefKinds, out var taskLikeReturnTypeOpt);
1152NamedTypeSymbol? delegateType,
1156out NamedTypeSymbol? taskLikeReturnTypeOpt)
1184var delegateReturnType = invoke.ReturnType as NamedTypeSymbol;
1253var delegateType = (NamedTypeSymbol?)lambda.Type;
1260NamedTypeSymbol? delegateType,
1276var t = (inferredReturnType.HadExpressionlessReturn || inferredReturnType.NumExpressions == 0)
1480private sealed class BindingCacheComparer : IEqualityComparer<(NamedTypeSymbol Type, bool IsExpressionTree)>
1484public bool Equals([AllowNull] (NamedTypeSymbol Type, bool IsExpressionTree) x, [AllowNull] (NamedTypeSymbol Type, bool IsExpressionTree) y)
1487public int GetHashCode([DisallowNull] (NamedTypeSymbol Type, bool IsExpressionTree) obj)
CodeGen\EmitArrayInitializer.cs (4)
397private bool TryEmitOptimizedReadonlySpanCreation(NamedTypeSymbol spanType, BoundExpression wrappedExpression, bool used, BoundExpression inPlaceTarget, out bool avoidInPlace, BoundExpression? start = null, BoundExpression? length = null)
630bool tryEmitAsCachedArrayFromBlob(NamedTypeSymbol spanType, BoundExpression wrappedExpression, int elementCount, ImmutableArray<byte> data, ref ArrayTypeSymbol arrayType, TypeSymbol elementType)
680bool tryEmitAsCachedArrayOfConstants(BoundArrayCreation arrayCreation, ArrayTypeSymbol arrayType, TypeSymbol elementType, NamedTypeSymbol spanType, bool used, BoundExpression? inPlaceTarget, out bool avoidInPlace)
754void emitEmptyReadonlySpan(NamedTypeSymbol spanType, BoundExpression wrappedExpression, bool used, BoundExpression? inPlaceTarget)
Compilation\AttributeSemanticModel.cs (5)
23NamedTypeSymbol attributeType,
39public static AttributeSemanticModel Create(PublicSemanticModel containingSemanticModel, AttributeSyntax syntax, NamedTypeSymbol attributeType, AliasSymbol aliasOpt, Symbol? attributeTarget, Binder rootBinder, ImmutableDictionary<Symbol, Symbol>? parentRemappedSymbolsOpt)
48public static SpeculativeSemanticModelWithMemberModel CreateSpeculative(SyntaxTreeSemanticModel parentSemanticModel, AttributeSyntax syntax, NamedTypeSymbol attributeType, AliasSymbol aliasOpt, Binder rootBinder, ImmutableDictionary<Symbol, Symbol> parentRemappedSymbolsOpt, int position)
53private NamedTypeSymbol AttributeType
57return (NamedTypeSymbol)MemberSymbol;
Compilation\CSharpCompilation.cs (27)
60private NamedTypeSymbol? _lazyScriptClass = ErrorTypeSymbol.UnknownResultType;
151private ConcurrentCache<TypeSymbol, NamedTypeSymbol>? _lazyTypeToNullableVersion;
1611internal new NamedTypeSymbol? ScriptClass
1738internal NamedTypeSymbol GetSpecialType(ExtendedSpecialType specialType)
1745NamedTypeSymbol result;
1760private ConcurrentCache<TypeSymbol, NamedTypeSymbol> TypeToNullableVersion
1764return InterlockedOperations.Initialize(ref _lazyTypeToNullableVersion, static () => new ConcurrentCache<TypeSymbol, NamedTypeSymbol>(size: 100));
1775internal NamedTypeSymbol GetOrCreateNullableType(TypeSymbol typeArgument)
1783if (!typeToNullableVersion.TryGetValue(typeArgument, out var constructedNullableInstance))
1899internal new NamedTypeSymbol? GetTypeByMetadataName(string fullyQualifiedMetadataName)
1901var result = this.Assembly.GetTypeByMetadataName(fullyQualifiedMetadataName, includeReferences: true, isWellKnownType: false, conflicts: out var _);
1921internal new NamedTypeSymbol ObjectType
1995NamedTypeSymbol? mainType;
1999var scriptClass = this.ScriptClass;
2025mainType = mainTypeOrNamespace as NamedTypeSymbol;
2269if (!(method.ReturnType is NamedTypeSymbol namedType))
2505AccessCheck.IsSymbolAccessible(symbol0, (NamedTypeSymbol)within0, ref discardedUseSiteInfo, throughType0);
3731case NamedTypeSymbol namedType:
3738public override void VisitNamedType(NamedTypeSymbol symbol)
4248var internalType = type.EnsureCSharpSymbolOrNull($"{nameof(callingConventionTypes)}[{index}]");
4263internal new NamedTypeSymbol CreateNativeIntegerTypeSymbol(bool signed)
4283return NamedTypeSymbol.CreateTuple(
4300NamedTypeSymbol csharpUnderlyingTuple = underlyingType.EnsureCSharpSymbolOrNull(nameof(underlyingType));
4311var tupleType = NamedTypeSymbol.CreateTuple(
4579=> IsReadOnlySpanType(type) && ((NamedTypeSymbol)type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].SpecialType == SpecialType.System_Byte;
4817var typeSymbol = GetSpecialType(type);
Compilation\CSharpSemanticModel.cs (19)
417NamedTypeSymbol attributeType = (NamedTypeSymbol)binder.BindType(attribute.Name, BindingDiagnosticBag.Discarded, out aliasOpt).Type;
1611if ((object)containingType != null && containingType.Kind == SymbolKind.NamedType && ((NamedTypeSymbol)containingType).IsScriptClass)
2783var attributeType = (NamedTypeSymbol)binder.BindType(attribute.Name, BindingDiagnosticBag.Discarded, out aliasOpt).Type;
3616var namedType = (NamedTypeSymbol)attribute.Type;
3625if (candidateSymbols.Length == 1 && candidateSymbols[0] is NamedTypeSymbol)
3627namedType = (NamedTypeSymbol)candidateSymbols[0];
3708NamedTypeSymbol containingType = binder.ContainingType;
3756private static ParameterSymbol GetThisParameter(TypeSymbol typeOfThis, NamedTypeSymbol containingType, Symbol containingMember, out LookupResultKind resultKind)
3895var objectType = binaryOperator.Type.ContainingAssembly.GetSpecialType(SpecialType.System_Object);
4000NamedTypeSymbol typeSymbol = null;
4021typeSymbol = (NamedTypeSymbol)unwrappedSymbols[0];
4032typeSymbol = unwrappedSymbols[0] as NamedTypeSymbol;
4046NamedTypeSymbol typeSymbolOpt,
5225return (GetSymbolInfo(tupleTypeSyntax, cancellationToken).Symbol.GetSymbol() as NamedTypeSymbol)?.TupleElements.ElementAtOrDefault(tupleTypeSyntax.Elements.IndexOf(declarationSyntax)).GetPublicSymbol();
5247typeDeclaration, namedType.GetSymbol<NamedTypeSymbol>());
5303protected static SynthesizedPrimaryConstructor TryGetSynthesizedPrimaryConstructor(TypeDeclarationSyntax node, NamedTypeSymbol type)
Compilation\SyntaxTreeSemanticModel.cs (10)
760internal PublicSemanticModel CreateSpeculativeAttributeSemanticModel(int position, AttributeSyntax attribute, Binder binder, AliasSymbol aliasOpt, NamedTypeSymbol attributeType)
1377private NamedTypeSymbol GetDeclaredType(BaseTypeDeclarationSyntax declarationSyntax)
1390private NamedTypeSymbol GetDeclaredExtension(ExtensionBlockDeclarationSyntax extensionDeclaration)
1402if (symbol is NamedTypeSymbol { IsExtension: true } && symbol.HasLocationContainedWithin(this.SyntaxTree, declarationSpan, out var wasZeroWidthMatch))
1405return (NamedTypeSymbol)symbol;
1412private NamedTypeSymbol GetDeclaredType(DelegateDeclarationSyntax declarationSyntax)
1420private NamedTypeSymbol GetDeclaredNamedType(CSharpSyntaxNode declarationSyntax, string name)
1428return GetDeclaredMember(container, declarationSyntax.Span, isKnownToBeANamespace: false, name) as NamedTypeSymbol;
2141var delegateType = (GetDeclaredSymbol(memberDecl, cancellationToken) as INamedTypeSymbol).GetSymbol();
2217case NamedTypeSymbol typeSymbol:
Emitter\Model\PEModuleBuilder.cs (77)
28internal abstract class PEModuleBuilder : PEModuleBuilder<CSharpCompilation, SourceModuleSymbol, AssemblySymbol, TypeSymbol, NamedTypeSymbol, MethodSymbol, SyntaxNode, NoPia.EmbeddedTypesManager, ModuleCompilationState>
50private Dictionary<FieldSymbol, NamedTypeSymbol> _fixedImplementationTypes;
53private readonly ConcurrentDictionary<int, NamedTypeSymbol> _inlineArrayTypes = new ConcurrentDictionary<int, NamedTypeSymbol>();
54private readonly NamedTypeSymbol[] _readOnlyListTypes = new NamedTypeSymbol[(int)SynthesizedReadOnlyListKind.List + 1];
215internal sealed override IEnumerable<Cci.INestedTypeDefinition> GetSynthesizedNestedTypes(NamedTypeSymbol container)
389if (!((NamedTypeSymbol)member).IsExtension)
505internal virtual NamedTypeSymbol GetDynamicOperationContextType(NamedTypeSymbol contextType)
575yield return ((NamedTypeSymbol)member).GetCciAdapter();
602foreach (var member in (symbol.IsNamespace ? symbol.GetMembers() : symbol.GetTypeMembers().Cast<NamedTypeSymbol, Symbol>()))
609if (namespaceOrType is NamedTypeSymbol { IsExtension: true })
639foreach (var type in symbol.GetTypeMembers(""))
703internal static HashSet<NamedTypeSymbol> GetForwardedTypes(SourceAssemblySymbol sourceAssembly, ArrayBuilder<Cci.ExportedType>? builder, EmitContext? context)
705var seenTopLevelForwardedTypes = new HashSet<NamedTypeSymbol>();
720var exportedNamesMap = new Dictionary<string, NamedTypeSymbol>(StringOrdinalComparer.Instance);
733var type = (NamedTypeSymbol)exportedType.Type.GetInternalSymbol();
758NamedTypeSymbol contender;
790HashSet<NamedTypeSymbol> seenTopLevelTypes,
791CommonAssemblyWellKnownAttributeData<NamedTypeSymbol> wellKnownAttributeData,
800var stack = ArrayBuilder<(NamedTypeSymbol type, int parentIndex)>.GetInstance();
803IEnumerable<NamedTypeSymbol> orderedForwardedTypes = wellKnownAttributeData.ForwardedTypes;
810foreach (NamedTypeSymbol forwardedType in orderedForwardedTypes)
812NamedTypeSymbol originalDefinition = forwardedType.OriginalDefinition;
839static void processTopItemFromStack(ArrayBuilder<(NamedTypeSymbol type, int parentIndex)> stack, EmitContext context, ArrayBuilder<Cci.ExportedType> builder)
859ImmutableArray<NamedTypeSymbol> nested = type.GetTypeMembers(); // Ordered.
927static void pushNestedTypes(ArrayBuilder<(NamedTypeSymbol type, int parentIndex)> stack, int index, ImmutableArray<NamedTypeSymbol> nested)
941static void pushAndProcessNestedTypes(ArrayBuilder<(NamedTypeSymbol type, int parentIndex)> stack, EmitContext context, int index, ImmutableArray<NamedTypeSymbol> nested, ArrayBuilder<Cci.ExportedType> builder)
966private NamedTypeSymbol GetUntranslatedSpecialType(SpecialType specialType, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
970var typeSymbol = SourceModule.ContainingAssembly.GetSpecialType(specialType);
998var namedType = typeRef.GetInternalSymbol() as NamedTypeSymbol;
1107NamedTypeSymbol namedTypeSymbol,
1168NamedTypeSymbol container = namedTypeSymbol.ContainingType;
1212else if (namedTypeSymbol.NativeIntegerUnderlyingType is NamedTypeSymbol underlyingType)
1229private void CheckTupleUnderlyingType(NamedTypeSymbol namedTypeSymbol, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
1235var declaredBase = namedTypeSymbol.BaseTypeNoUseSiteDiagnostics;
1264public static bool IsGenericType(NamedTypeSymbol toCheck)
1304return Translate((NamedTypeSymbol)typeSymbol, syntaxNodeOpt, diagnostics);
1402NamedTypeSymbol container = methodSymbol.ContainingType;
1476NamedTypeSymbol container = methodSymbol.ContainingType;
1615public NamedTypeSymbol SetFixedImplementationType(SourceMemberFieldSymbol field)
1619Interlocked.CompareExchange(ref _fixedImplementationTypes, new Dictionary<FieldSymbol, NamedTypeSymbol>(), null);
1624NamedTypeSymbol result;
1741NamedTypeSymbol byteType = Compilation.GetSpecialType(SpecialType.System_Byte);
1762NamedTypeSymbol byteType = Compilation.GetSpecialType(SpecialType.System_Byte);
1825NamedTypeSymbol booleanType = Compilation.GetSpecialType(SpecialType.System_Boolean);
2086internal MethodSymbol EnsureInlineArrayAsSpanExists(SyntaxNode syntaxNode, NamedTypeSymbol spanType, NamedTypeSymbol intType, DiagnosticBag diagnostics)
2103internal NamedTypeSymbol EnsureInlineArrayTypeExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, int arrayLength, BindingDiagnosticBag diagnostics)
2114if (Binder.TryGetOptionalWellKnownType(Compilation, arrayWellKnownType, diagnostics, syntaxNode.Location, out var existingType))
2132internal NamedTypeSymbol EnsureReadOnlyListTypeExists(SyntaxNode syntaxNode, SynthesizedReadOnlyListKind kind, DiagnosticBag diagnostics)
2137ref NamedTypeSymbol readOnlyListType = ref _readOnlyListTypes[(int)kind];
2138NamedTypeSymbol typeSymbol;
2157internal MethodSymbol EnsureInlineArrayAsReadOnlySpanExists(SyntaxNode syntaxNode, NamedTypeSymbol spanType, NamedTypeSymbol intType, DiagnosticBag diagnostics)
2174internal MethodSymbol EnsureInlineArrayElementRefExists(SyntaxNode syntaxNode, NamedTypeSymbol intType, DiagnosticBag diagnostics)
2190internal MethodSymbol EnsureInlineArrayElementRefReadOnlyExists(SyntaxNode syntaxNode, NamedTypeSymbol intType, DiagnosticBag diagnostics)
2243public override ImmutableArray<NamedTypeSymbol> GetAdditionalTopLevelTypes()
2245ImmutableArray<NamedTypeSymbol> prepend = [];
2249ArrayBuilder<NamedTypeSymbol> builder = ArrayBuilder<NamedTypeSymbol>.GetInstance(_inlineArrayTypes.Count + _readOnlyListTypes.Length);
2251foreach (var type in _readOnlyListTypes)
2276public sealed override ImmutableArray<NamedTypeSymbol> GetEmbeddedTypes(DiagnosticBag diagnostics)
2287internal virtual ImmutableArray<NamedTypeSymbol> GetEmbeddedTypes(BindingDiagnosticBag diagnostics)
2302public override void AddSynthesizedDefinition(NamedTypeSymbol container, Cci.INestedTypeDefinition nestedType)
2304Debug.Assert(container is not NamedTypeSymbol { IsExtension: true } || nestedType.GetInternalSymbol() is FixedFieldImplementationType);
2308public override void AddSynthesizedDefinition(NamedTypeSymbol container, Cci.IFieldDefinition field)
2310Debug.Assert(container is not NamedTypeSymbol { IsExtension: true });
2314public override void AddSynthesizedDefinition(NamedTypeSymbol container, Cci.IMethodDefinition method)
2316Debug.Assert(container is not NamedTypeSymbol { IsExtension: true });
2320public override void AddSynthesizedDefinition(NamedTypeSymbol container, Cci.IPropertyDefinition property)
2322Debug.Assert(container is not NamedTypeSymbol { IsExtension: true });
FlowAnalysis\EmptyStructTypeCache.cs (18)
20private SmallDictionary<NamedTypeSymbol, bool> _cache;
29private SmallDictionary<NamedTypeSymbol, bool> Cache
33return _cache ?? (_cache = new SmallDictionary<NamedTypeSymbol, bool>(Symbols.SymbolEqualityComparer.ConsiderEverything));
81return IsEmptyStructType(type, ConsList<NamedTypeSymbol>.Empty);
89private bool IsEmptyStructType(TypeSymbol type, ConsList<NamedTypeSymbol> typesWithMembersOfThisType)
91var nts = type as NamedTypeSymbol;
111private bool CheckStruct(ConsList<NamedTypeSymbol> typesWithMembersOfThisType, NamedTypeSymbol nts)
117typesWithMembersOfThisType = new ConsList<NamedTypeSymbol>(nts, typesWithMembersOfThisType);
127var nts = type.OriginalDefinition as NamedTypeSymbol;
135private bool CheckStructInstanceFields(ConsList<NamedTypeSymbol> typesWithMembersOfThisType, NamedTypeSymbol type)
165var nts = type as NamedTypeSymbol;
174public IEnumerable<FieldSymbol> GetStructFields(NamedTypeSymbol type, bool includeStatic)
192private FieldSymbol GetActualField(Symbol member, NamedTypeSymbol type)
FlowAnalysis\NullableWalker.cs (89)
944static ImmutableArray<Symbol> membersToBeInitialized(NamedTypeSymbol containingType, bool includeAllMembers, bool includeCurrentTypeRequiredMembers, bool includeBaseRequiredMembers)
1201var type = method.ContainingType;
1963if (node is BoundLambda boundLambda && originalSymbol is LambdaSymbol l && updatedSymbol is NamedTypeSymbol n)
2741(possibleBase.IsInterfaceType() && conversionsWithoutNullability.HasImplicitConversionToOrImplementsVarianceCompatibleInterface(possibleDerived, (NamedTypeSymbol)possibleBase, ref discardedUseSiteInfo, needSupportForRefStructInterfaces: out _));
3187type = ((NamedTypeSymbol)returnType.Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics.Single();
3792return type.IsErrorType() || type.IsDynamic() || type.HasUseSiteError || (type.IsAnonymousType && canIgnoreAnonymousType((NamedTypeSymbol)type));
3794static bool canIgnoreAnonymousType(NamedTypeSymbol type)
3810(LambdaSymbol l, NamedTypeSymbol n) _ when n.IsDelegateType() => AreLambdaAndNewDelegateSimilar(l, n),
3818private static bool AreLambdaAndNewDelegateSimilar(LambdaSymbol l, NamedTypeSymbol n)
4018var allTypeArguments = ((NamedTypeSymbol)collectionFinalType).GetAllTypeArgumentsNoUseSiteDiagnostics();
4372var containingType = constructor?.ContainingType;
4427type is NamedTypeSymbol { IsUnionType: true } unionType &&
4428NamedTypeSymbol.IsSuitableUnionConstructor(constructor))
4667var extension = symbol.OriginalDefinition.ContainingType;
4946var members = ((NamedTypeSymbol)type).GetMembersUnordered();
4993var anonymousType = (NamedTypeSymbol)node.Type;
5081NamedTypeSymbol spanType => getSpanElementType(spanType),
5158NamedTypeSymbol spanType => setSpanElementType(spanType, inferredType),
5166static TypeWithAnnotations getSpanElementType(NamedTypeSymbol namedType)
5173static TypeSymbol setSpanElementType(NamedTypeSymbol namedType, TypeWithAnnotations elementType)
5333type = TypeWithAnnotations.Create(((NamedTypeSymbol)node.Type).OriginalDefinition.Construct(ImmutableArray.Create(type)));
5678NamedTypeSymbol extension = method.OriginalDefinition.ContainingType;
6040var containingType = this._symbol?.ContainingType;
6061for (NamedTypeSymbol baseType = effectiveBase(type); !(baseType is null); baseType = baseType.BaseTypeNoUseSiteDiagnostics)
6066foreach (NamedTypeSymbol interfaceType in inheritedInterfaces(type))
6072static NamedTypeSymbol effectiveBase(TypeSymbol type) => type switch
6078static ImmutableArray<NamedTypeSymbol> inheritedInterfaces(TypeSymbol type) => type switch
6082_ => ImmutableArray<NamedTypeSymbol>.Empty,
7117var wellKnownType = wellKnownMethod.ContainingType;
7119var constructedType = wellKnownType.Construct(ImmutableArray.Create(parameterType));
7925var type = method.ContainingType;
8928private void CheckExtensionConstraints(SyntaxNode syntax, NamedTypeSymbol extension)
9100var containingType = type as NamedTypeSymbol;
9120var symbolContainer = symbol.ContainingType;
9145foreach (var @interface in containingType.AllInterfacesNoUseSiteDiagnostics)
9172bool tryAsMemberOfSingleType(NamedTypeSymbol singleType, [NotNullWhen(true)] out Symbol? result)
9351var tupleOpt = (NamedTypeSymbol?)node.Type;
9390NamedTypeSymbol tupleType,
9398Debug.Assert(values.Length == (useRestField ? Math.Min(tupleType.TupleElements.Length, NamedTypeSymbol.ValueTupleRestPosition) : tupleType.TupleElements.Length));
9406n = Math.Min(n, NamedTypeSymbol.ValueTupleRestPosition - 1);
9414values.Length == NamedTypeSymbol.ValueTupleRestPosition &&
9415tupleType.GetMembers(NamedTypeSymbol.ValueTupleRestFieldName).FirstOrDefault() is FieldSymbol restField)
9417var argOrdinal = getArgumentOrdinalFromParameterOrdinal(NamedTypeSymbol.ValueTupleRestPosition - 1);
9466var valueTuple = operandType as NamedTypeSymbol;
9473var targetElements = ((NamedTypeSymbol)targetType).TupleElements;
9553Debug.Assert(targetField.TypeWithAnnotations.Type.StrippedType() is NamedTypeSymbol { IsUnionType: true });
9655private void ReportNullabilityMismatchWithTargetDelegate(Location location, NamedTypeSymbol delegateType, BoundLambda lambda)
9853NamedTypeSymbol { TypeKind: TypeKind.Delegate, DelegateInvokeMethod: { Parameters: { } parameters } signature } => (signature, parameters),
9863var delegateType = targetType.GetDelegateType();
10576var toType = (NamedTypeSymbol)targetType.StrippedType();
10645targetTypeWithNullability.Type.StrippedType() is NamedTypeSymbol { IsUnionType: true } unionType &&
10810Action<NamedTypeSymbol>? analysisCompletion;
10812var delegateType = (NamedTypeSymbol)node.Type;
10840TypeWithState setAnalyzedNullability(BoundDelegateCreationExpression node, NamedTypeSymbol delegateType, Action<NamedTypeSymbol>? analysisCompletion, bool isTargetTyped)
10857void setAnalyzedNullabilityAsContinuation(BoundDelegateCreationExpression node, Action<NamedTypeSymbol>? analysisCompletion)
10863var delegateType = (NamedTypeSymbol)resultTypeWithAnnotations.Type;
10871Action<NamedTypeSymbol>? visitMethodGroupArgument(BoundDelegateCreationExpression node, NamedTypeSymbol delegateType, BoundMethodGroup group)
10879Action<NamedTypeSymbol>? analyzeMethodGroupConversion(BoundDelegateCreationExpression node, NamedTypeSymbol delegateType, BoundMethodGroup group, bool isTargetTyped)
10900Action<NamedTypeSymbol>? analyzeMethodGroupConversionAsContinuation(BoundDelegateCreationExpression node, BoundMethodGroup group)
10902return (NamedTypeSymbol delegateType) =>
10908Action<NamedTypeSymbol>? visitLambdaArgument(NamedTypeSymbol delegateType, BoundLambda lambda, bool isTargetTyped)
10915Action<NamedTypeSymbol>? analyzeLambdaConversion(NamedTypeSymbol delegateType, BoundLambda lambda, bool isTargetTyped)
10932Action<NamedTypeSymbol> analyzeLambdaConversionAsContinuation(BoundLambda lambda)
10934return (NamedTypeSymbol delegateType) => analyzeLambdaConversion(delegateType, lambda, isTargetTyped: false);
10937Action<NamedTypeSymbol>? visitDelegateArgument(NamedTypeSymbol delegateType, BoundExpression arg, bool isTargetTyped)
10951Action<NamedTypeSymbol>? analyzeDelegateConversion(NamedTypeSymbol delegateType, BoundExpression arg, bool isTargetTyped)
10971Action<NamedTypeSymbol> analyzeDelegateConversionAsContinuation(BoundExpression arg)
10973return (NamedTypeSymbol delegateType) => analyzeDelegateConversion(delegateType, arg, isTargetTyped: false);
11086private void VisitLambda(BoundLambda node, NamedTypeSymbol? delegateTypeOpt, Optional<LocalState> initialState = default)
11638if (expr.Type is NamedTypeSymbol { IsTupleType: true } tupleType)
12203receiverType.Type is NamedTypeSymbol { IsUnionType: true } unionType &&
12282valueProperty = getValue?.AsMember((NamedTypeSymbol)containingType)?.AssociatedSymbol;
12457NamedTypeSymbol spanType = compilation.GetWellKnownType(wellKnownSpan);
12759NamedTypeSymbol extension = method.OriginalDefinition.ContainingType;
13005var reinferredGetResult = _visitResult.RValueType.Type is NamedTypeSymbol taskAwaiterType
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (32)
212var iCollectionOfTType = _compilation.GetSpecialType(SpecialType.System_Collections_Generic_ICollection_T);
213var iCollectionOfElementType = iCollectionOfTType.Construct(((NamedTypeSymbol)targetEnumerableType).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics);
233Elements: [BoundCollectionExpressionSpreadElement { Expression: { Type: NamedTypeSymbol spreadType } expr }],
259Debug.Assert(collectionType is ArrayTypeSymbol or NamedTypeSymbol);
266var namedType = (NamedTypeSymbol)collectionType;
278ArrayTypeSymbol getBackingArrayType(NamedTypeSymbol collectionType)
288BoundExpression createImmutableArray(BoundCollectionExpression node, NamedTypeSymbol immutableArrayType)
318BoundExpression? tryCreateNonArrayBackedSpan(BoundCollectionExpression node, NamedTypeSymbol spanType, bool isReadOnlySpan)
358BoundExpression createSpan(BoundCollectionExpression node, NamedTypeSymbol spanType, bool isReadOnlySpan)
411var listToArray = ((MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Collections_Generic_List_T__ToArray)).AsMember((NamedTypeSymbol)list.Type);
486Debug.Assert(node.Type is NamedTypeSymbol);
491var collectionType = (NamedTypeSymbol)node.Type;
517var synthesizedType = _factory.ModuleBuilderOpt.EnsureReadOnlyListTypeExists(syntax, kind: kind, _diagnostics.DiagnosticBag).Construct(typeArgs);
592var spanType = (NamedTypeSymbol)readonlySpanParameter.Type;
656var spanType = _factory
667var inlineArrayType = _factory.ModuleBuilderOpt.EnsureInlineArrayTypeExists(syntax, _factory, arrayLength, _diagnostics).Construct(ImmutableArray.Create(elementType));
670var intType = _factory.SpecialType(SpecialType.System_Int32);
777return _factory.Call(rewrittenSpreadExpression, listToArrayMethod.AsMember((NamedTypeSymbol)spreadExpression.Type!));
801return _factory.Call(rewrittenSpreadExpression, toArrayMethod.AsMember((NamedTypeSymbol)rewrittenSpreadExpression.Type!));
993var spanOfElementType = spanCtorArray.ContainingType.Construct(arrayType.ElementType);
1001if (type is not NamedTypeSymbol namedType)
1141var spreadLength = _factory.Call(spreadOperandAsSpan, getLengthMethod.AsMember((NamedTypeSymbol)spreadOperandAsSpan.Type!));
1142var targetSlice = _factory.Call(spanTemp, spanSliceMethod.AsMember((NamedTypeSymbol)spanTemp.Type!), indexTemp, spreadLength);
1143sideEffects.Add(_factory.Call(spreadOperandAsSpan, copyToMethod.AsMember((NamedTypeSymbol)spreadOperandAsSpan.Type!), targetSlice));
1164var collectionType = _factory.WellKnownType(WellKnownType.System_Collections_Generic_List_T).Construct(typeArguments);
1250var spanGetItem = ((MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Span_T__get_Item)).AsMember((NamedTypeSymbol)spanTemp.Type);
1275Debug.Assert(spanTemp.Type is NamedTypeSymbol);
1278var elementType = ((NamedTypeSymbol)spanTemp.Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type;
Lowering\LocalRewriter\LocalRewriter_TupleCreationExpression.cs (15)
40return MakeTupleCreationExpression(node.Syntax, (NamedTypeSymbol)node.Type, rewrittenArguments);
43private BoundExpression MakeTupleCreationExpression(SyntaxNode syntax, NamedTypeSymbol type, ImmutableArray<BoundExpression> rewrittenArguments)
47ArrayBuilder<NamedTypeSymbol> underlyingTupleTypeChain = ArrayBuilder<NamedTypeSymbol>.GetInstance();
48NamedTypeSymbol.GetUnderlyingTypeChain(type, underlyingTupleTypeChain);
53NamedTypeSymbol smallestType = underlyingTupleTypeChain.Pop();
55underlyingTupleTypeChain.Count * (NamedTypeSymbol.ValueTupleRestPosition - 1),
57var smallestCtor = (MethodSymbol?)NamedTypeSymbol.GetWellKnownMemberInType(smallestType.OriginalDefinition,
58NamedTypeSymbol.GetTupleCtor(smallestType.Arity),
73NamedTypeSymbol tuple8Type = underlyingTupleTypeChain.Peek();
74var tuple8Ctor = (MethodSymbol?)NamedTypeSymbol.GetWellKnownMemberInType(tuple8Type.OriginalDefinition,
75NamedTypeSymbol.GetTupleCtor(NamedTypeSymbol.ValueTupleRestPosition),
89(underlyingTupleTypeChain.Count - 1) * (NamedTypeSymbol.ValueTupleRestPosition - 1),
90NamedTypeSymbol.ValueTupleRestPosition - 1)
Lowering\StateMachineRewriter\CapturedSymbol.cs (6)
26public abstract BoundExpression Replacement<TArg>(SyntaxNode node, Func<NamedTypeSymbol, TArg, BoundExpression> makeFrame, TArg arg);
39public override BoundExpression Replacement<TArg>(SyntaxNode node, Func<NamedTypeSymbol, TArg, BoundExpression> makeFrame, TArg arg)
42var field = this.HoistedField.AsMember((NamedTypeSymbol)frame.Type);
57public override BoundExpression Replacement<TArg>(SyntaxNode node, Func<NamedTypeSymbol, TArg, BoundExpression> makeFrame, TArg arg)
60var field = this.HoistedField.AsMember((NamedTypeSymbol)frame.Type);
78public override BoundExpression Replacement<TArg>(SyntaxNode node, Func<NamedTypeSymbol, TArg, BoundExpression> makeFrame, TArg arg)
Lowering\StateMachineRewriter\StateMachineFieldSymbol.cs (5)
32public StateMachineFieldSymbol(NamedTypeSymbol stateMachineType, TypeWithAnnotations type, string name, bool isPublic, bool isThis)
38public StateMachineFieldSymbol(NamedTypeSymbol stateMachineType, TypeSymbol type, string name, SynthesizedLocalKind synthesizedKind, int slotIndex, bool isPublic)
43public StateMachineFieldSymbol(NamedTypeSymbol stateMachineType, TypeSymbol type, string name, LocalSlotDebugInfo slotDebugInfo, int slotIndex, bool isPublic) :
48public StateMachineFieldSymbol(NamedTypeSymbol stateMachineType, TypeWithAnnotations type, string name, LocalSlotDebugInfo slotDebugInfo, int slotIndex, bool isPublic)
93public StateMachineFieldSymbolForRegularParameter(NamedTypeSymbol stateMachineType, TypeWithAnnotations type, string name, ParameterSymbol parameter, bool isPublic)
Symbols\AssemblySymbol.cs (30)
329internal abstract NamedTypeSymbol? LookupDeclaredTopLevelMetadataType(ref MetadataTypeName emittedName);
341internal abstract NamedTypeSymbol LookupDeclaredOrForwardedTopLevelMetadataType(ref MetadataTypeName emittedName, ConsList<AssemblySymbol>? visitedAssemblies);
348public NamedTypeSymbol? ResolveForwardedType(string fullyQualifiedMetadataName)
362internal virtual NamedTypeSymbol? TryLookupForwardedMetadataTypeWithCycleDetection(ref MetadataTypeName emittedName, ConsList<AssemblySymbol>? visitedAssemblies)
379internal abstract IEnumerable<NamedTypeSymbol> GetAllTopLevelForwardedTypes();
387internal abstract NamedTypeSymbol GetDeclaredSpecialType(ExtendedSpecialType type);
393internal virtual void RegisterDeclaredSpecialType(NamedTypeSymbol corType)
413internal virtual NamedTypeSymbol GetNativeIntegerType(NamedTypeSymbol underlyingType)
631internal NamedTypeSymbol GetSpecialType(ExtendedSpecialType type)
648internal NamedTypeSymbol ObjectType
661internal NamedTypeSymbol GetPrimitiveType(Microsoft.Cci.PrimitiveTypeCode type)
672public NamedTypeSymbol? GetTypeByMetadataName(string fullyQualifiedMetadataName)
679var result = this.GetTypeByMetadataName(fullyQualifiedMetadataName, includeReferences: false, isWellKnownType: false, conflicts: out var _);
710internal NamedTypeSymbol? GetTypeByMetadataName(
719NamedTypeSymbol? type;
830var symbol = (NamedTypeSymbol?)GetTypeByReflectionType(nestedTypes[i].AsType());
869NamedTypeSymbol? symbol = GetTopLevelTypeByMetadataName(ref mdName, assemblyId, includeReferences: true, isWellKnownType: false, conflicts: out var _);
886private NamedTypeSymbol? ApplyGenericArguments(NamedTypeSymbol symbol, Type[] typeArguments, ref int currentTypeArgument)
913internal NamedTypeSymbol? GetTopLevelTypeByMetadataName(
932NamedTypeSymbol? result;
957NamedTypeSymbol? corLibCandidate = GetTopLevelTypeByMetadataName(CorLibrary, ref metadataName, assemblyOpt);
992NamedTypeSymbol? candidate = GetTopLevelTypeByMetadataName(assembly, ref metadataName, assemblyOpt);
1047bool isValidCandidate([NotNullWhen(true)] NamedTypeSymbol? candidate, bool isWellKnownType)
1055private bool IsInCorLib(NamedTypeSymbol type)
1060private bool IsValidWellKnownType(NamedTypeSymbol? result)
1073private static NamedTypeSymbol? GetTopLevelTypeByMetadataName(AssemblySymbol assembly, ref MetadataTypeName metadataName, AssemblyIdentity? assemblyOpt)
1080var result = assembly.LookupDeclaredTopLevelMetadataType(ref metadataName);
Symbols\Attributes\SourceAttributeData.cs (9)
21private readonly NamedTypeSymbol _attributeClass;
33NamedTypeSymbol attributeClass,
61internal SourceAttributeData(CSharpCompilation compilation, AttributeSyntax attributeSyntax, NamedTypeSymbol attributeClass, MethodSymbol? attributeConstructor, bool hasErrors)
78NamedTypeSymbol attributeClass,
89public override NamedTypeSymbol AttributeClass
224internal static int GetTargetAttributeSignatureIndex(CSharpCompilation compilation, NamedTypeSymbol attributeClass, MethodSymbol? attributeConstructor, AttributeDescription description)
295var namedType = (NamedTypeSymbol)parameterType;
473internal static bool IsTargetAttribute(NamedTypeSymbol attributeClass, string namespaceName, string typeName)
Symbols\BaseTypeAnalysis.cs (22)
18internal static bool TypeDependsOn(NamedTypeSymbol depends, NamedTypeSymbol on)
33private static void TypeDependsClosure(NamedTypeSymbol type, CSharpCompilation currentCompilation, HashSet<Symbol> partialClosure)
45foreach (var bt in type.GetDeclaredInterfaces(null))
63internal static bool StructDependsOn(NamedTypeSymbol depends, NamedTypeSymbol on)
69var hs = PooledHashSet<NamedTypeSymbol>.GetInstance();
70var typesWithCycle = PooledHashSet<NamedTypeSymbol>.GetInstance();
71StructDependsClosure(depends, hs, typesWithCycle, ConsList<NamedTypeSymbol>.Empty.Prepend(on));
80private static void StructDependsClosure(NamedTypeSymbol type, HashSet<NamedTypeSymbol> partialClosure, HashSet<NamedTypeSymbol> typesWithCycle, ConsList<NamedTypeSymbol> on)
112static void visitFields(NamedTypeSymbol type, HashSet<NamedTypeSymbol> partialClosure, HashSet<NamedTypeSymbol> typesWithCycle, ConsList<NamedTypeSymbol> on)
123StructDependsClosure((NamedTypeSymbol)fieldType, partialClosure, typesWithCycle, on);
144internal static ManagedKind GetManagedKind(NamedTypeSymbol type, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
173static (bool definitelyManaged, bool hasGenerics) dependsOnDefinitelyManagedType(NamedTypeSymbol type, HashSet<Symbol> partialClosure, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
217NamedTypeSymbol fieldNamedType = fieldType as NamedTypeSymbol;
Symbols\ConstraintsHelper.cs (35)
141ImmutableArray<NamedTypeSymbol> interfaces;
143NamedTypeSymbol effectiveBaseClass = corLibrary.GetSpecialType(typeParameter.HasValueTypeConstraint ? SpecialType.System_ValueType : SpecialType.System_Object);
148interfaces = ImmutableArray<NamedTypeSymbol>.Empty;
153var interfacesBuilder = ArrayBuilder<NamedTypeSymbol>.GetInstance();
163NamedTypeSymbol constraintEffectiveBase;
227AddInterface(interfacesBuilder, (NamedTypeSymbol)constraintType.Type);
233constraintEffectiveBase = (NamedTypeSymbol)constraintType.Type;
275constraintEffectiveBase = (NamedTypeSymbol)constraintType.Type;
591((NamedTypeSymbol)type).CheckConstraints(args);
606this NamedTypeSymbol tuple,
625var underlyingTupleTypeChain = ArrayBuilder<NamedTypeSymbol>.GetInstance();
626NamedTypeSymbol.GetUnderlyingTypeChain(tuple, underlyingTupleTypeChain);
629foreach (var underlyingTuple in underlyingTupleTypeChain)
647offset += NamedTypeSymbol.ValueTupleRestIndex;
663var location = ordinal == NamedTypeSymbol.ValueTupleRestIndex ? typeSyntax.Location : elementLocations[ordinal + offset];
677this NamedTypeSymbol type,
718public static bool CheckConstraints(this NamedTypeSymbol type, in CheckConstraintsArgs args)
758private static bool HasDuplicateInterfaces(NamedTypeSymbol type, ConsList<TypeSymbol> basesBeingResolved)
787foreach (var i in array)
805return type.InterfacesNoUseSiteDiagnostics(basesBeingResolved).HasDuplicates<NamedTypeSymbol>(SymbolEqualityComparer.IgnoringDynamicTupleNamesAndNullability);
842NamedTypeSymbol type,
1091if (typeArgument.Type is NamedTypeSymbol { IsInterface: true } iface && SelfOrBaseHasStaticAbstractMember(iface, ref useSiteInfo, out Symbol member))
1370if (conversions.HasBoxingConversion(typeArgument.Type.IsNullableType() ? ((NamedTypeSymbol)typeArgument.Type).ConstructedFrom : typeArgument.Type,
1376if (typeArgument.Type is NamedTypeSymbol { IsRefLikeType: true } refLike &&
1408private static bool SelfOrBaseHasStaticAbstractMember(NamedTypeSymbol iface, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out Symbol memberWithoutImplementation)
1421foreach (var baseInterface in iface.InterfacesAndTheirBaseInterfacesNoUseSiteDiagnostics.Keys)
1455private static void AddInterfaces(ArrayBuilder<NamedTypeSymbol> builder, ImmutableArray<NamedTypeSymbol> interfaces)
1457foreach (var @interface in interfaces)
1463private static void AddInterface(ArrayBuilder<NamedTypeSymbol> builder, NamedTypeSymbol @interface)
1484return SatisfiesPublicParameterlessConstructor((NamedTypeSymbol)typeArgument, synthesizedIfMissing: true);
1496return SatisfiesPublicParameterlessConstructor((NamedTypeSymbol)typeArgument, synthesizedIfMissing: false);
1513private static ConstructorConstraintError SatisfiesPublicParameterlessConstructor(NamedTypeSymbol type, bool synthesizedIfMissing)
1576public static bool RequiresChecking(NamedTypeSymbol type)
Symbols\FunctionTypeSymbol.cs (24)
37private static readonly NamedTypeSymbol Uninitialized = new UnsupportedMetadataTypeSymbol();
40private readonly Func<Binder, BoundExpression, NamedTypeSymbol?>? _calculateDelegate;
43private NamedTypeSymbol? _lazyDelegateType;
45internal static FunctionTypeSymbol? CreateIfFeatureEnabled(SyntaxNode syntax, Binder binder, Func<Binder, BoundExpression, NamedTypeSymbol?> calculateDelegate)
52private FunctionTypeSymbol(Binder binder, Func<Binder, BoundExpression, NamedTypeSymbol?> calculateDelegate)
59internal FunctionTypeSymbol(NamedTypeSymbol delegateType)
77internal NamedTypeSymbol? GetInternalDelegateType()
85var delegateType = _calculateDelegate(_binder, _expression);
86var result = Interlocked.CompareExchange(ref _lazyDelegateType, delegateType, Uninitialized);
124internal override NamedTypeSymbol? BaseTypeNoUseSiteDiagnostics => null;
140public override ImmutableArray<NamedTypeSymbol> GetTypeMembers() => throw ExceptionUtilities.Unreachable();
142public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name) => throw ExceptionUtilities.Unreachable();
158internal override ImmutableArray<NamedTypeSymbol> InterfacesNoUseSiteDiagnostics(ConsList<TypeSymbol>? basesBeingResolved = null) => ImmutableArray<NamedTypeSymbol>.Empty;
164var thisDelegateType = GetInternalDelegateType();
166var otherDelegateType = otherType.GetInternalDelegateType();
173var mergedDelegateType = (NamedTypeSymbol)thisDelegateType.MergeEquivalentTypes(otherDelegateType, variance);
181var thisDelegateType = GetInternalDelegateType();
186return WithDelegateType((NamedTypeSymbol)thisDelegateType.SetNullabilityForReferenceTypes(transform));
189private FunctionTypeSymbol WithDelegateType(NamedTypeSymbol delegateType)
191var thisDelegateType = GetInternalDelegateType();
214var thisDelegateType = GetInternalDelegateType();
215var otherDelegateType = otherType.GetInternalDelegateType();
Symbols\Metadata\PE\PENamedTypeSymbol.cs (53)
76private NamedTypeSymbol _lazyBaseType = ErrorTypeSymbol.UnknownResultType;
77private ImmutableArray<NamedTypeSymbol> _lazyInterfaces = default(ImmutableArray<NamedTypeSymbol>);
78private NamedTypeSymbol _lazyDeclaredBaseType = ErrorTypeSymbol.UnknownResultType;
79private ImmutableArray<NamedTypeSymbol> _lazyDeclaredInterfaces = default(ImmutableArray<NamedTypeSymbol>);
136internal NamedTypeSymbol lazyEnumUnderlyingType;
147internal NamedTypeSymbol lazyComImportCoClassType = ErrorTypeSymbol.UnknownResultType;
717internal override NamedTypeSymbol BaseTypeNoUseSiteDiagnostics
730internal override ImmutableArray<NamedTypeSymbol> InterfacesNoUseSiteDiagnostics(ConsList<TypeSymbol> basesBeingResolved = null)
734ImmutableInterlocked.InterlockedCompareExchange(ref _lazyInterfaces, MakeAcyclicInterfaces(), default(ImmutableArray<NamedTypeSymbol>));
740internal override ImmutableArray<NamedTypeSymbol> GetInterfacesToEmit()
745internal override NamedTypeSymbol GetDeclaredBaseType(ConsList<TypeSymbol> basesBeingResolved)
750private NamedTypeSymbol GetDeclaredBaseType(bool skipTransformsIfNecessary)
754var baseType = MakeDeclaredBaseType();
768baseType = (NamedTypeSymbol)NullableTypeDecoder.TransformType(TypeWithAnnotations.Create(decodedType), _handle, moduleSymbol, accessSymbol: this, nullableContext: this).Type;
777internal override ImmutableArray<NamedTypeSymbol> GetDeclaredInterfaces(ConsList<TypeSymbol> basesBeingResolved)
781ImmutableInterlocked.InterlockedCompareExchange(ref _lazyDeclaredInterfaces, MakeDeclaredInterfaces(), default(ImmutableArray<NamedTypeSymbol>));
787private NamedTypeSymbol MakeDeclaredBaseType()
797return (NamedTypeSymbol)new MetadataDecoder(moduleSymbol, this).GetTypeOfToken(token);
809private ImmutableArray<NamedTypeSymbol> MakeDeclaredInterfaces()
818var symbols = ArrayBuilder<NamedTypeSymbol>.GetInstance(interfaceImpls.Count);
830var namedTypeSymbol = typeSymbol as NamedTypeSymbol ?? new UnsupportedMetadataTypeSymbol(); // interface list contains a bad type
837return ImmutableArray<NamedTypeSymbol>.Empty;
841return ImmutableArray.Create<NamedTypeSymbol>(new UnsupportedMetadataTypeSymbol(mrEx));
845public override NamedTypeSymbol ConstructedFrom
861public override NamedTypeSymbol ContainingType
865return _container as NamedTypeSymbol;
931public override NamedTypeSymbol EnumUnderlyingType
1489NamedTypeSymbol underlyingType = null;
1518underlyingType = (NamedTypeSymbol)type;
1827internal override ImmutableArray<NamedTypeSymbol> GetTypeMembersUnordered()
1832public override ImmutableArray<NamedTypeSymbol> GetTypeMembers()
1838private ImmutableArray<NamedTypeSymbol> GetMemberTypesPrivate()
1851return ImmutableCollectionsMarshal.AsImmutableArray<NamedTypeSymbol>(result);
1880public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name)
1888return StaticCast<NamedTypeSymbol>.From(t);
1891return ImmutableArray<NamedTypeSymbol>.Empty;
1894public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name, int arity)
2179private NamedTypeSymbol MakeAcyclicBaseType()
2181NamedTypeSymbol declaredBase = GetDeclaredBaseType(null);
2198private ImmutableArray<NamedTypeSymbol> MakeAcyclicInterfaces()
2807internal override NamedTypeSymbol ComImportCoClass
2825var coClassType = ((object)type != null && (type.TypeKind == TypeKind.Class || type.IsErrorType())) ? (NamedTypeSymbol)type : null;
3021protected override NamedTypeSymbol WithTupleDataCore(TupleExtraData newData)
3049internal override NamedTypeSymbol AsNativeInteger()
3060internal override NamedTypeSymbol NativeIntegerUnderlyingType => null;
3110protected sealed override NamedTypeSymbol WithTupleDataCore(TupleExtraData newData)
3155internal sealed override NamedTypeSymbol AsNativeInteger() => throw ExceptionUtilities.Unreachable();
3157internal sealed override NamedTypeSymbol NativeIntegerUnderlyingType => null;
3211var container = this.ContainingType;
Symbols\NamedTypeSymbol.cs (50)
96public abstract NamedTypeSymbol ConstructedFrom { get; }
102public virtual NamedTypeSymbol EnumUnderlyingType
110public override NamedTypeSymbol ContainingType
118return this.ContainingSymbol as NamedTypeSymbol;
440foreach (NamedTypeSymbol nestedType in GetTypeMembers(name: ""))
847public abstract override ImmutableArray<NamedTypeSymbol> GetTypeMembers();
855public abstract override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name, int arity);
938internal abstract NamedTypeSymbol GetDeclaredBaseType(ConsList<TypeSymbol> basesBeingResolved);
940internal abstract ImmutableArray<NamedTypeSymbol> GetDeclaredInterfaces(ConsList<TypeSymbol> basesBeingResolved);
976NamedTypeSymbol other = t2 as NamedTypeSymbol;
980var thisOriginalDefinition = this.OriginalDefinition;
981var otherOriginalDefinition = other.OriginalDefinition;
1015private bool EqualsComplicatedCases(NamedTypeSymbol other, TypeCompareKind comparison)
1071bool tupleNamesEquals(NamedTypeSymbol other, TypeCompareKind comparison)
1151NamedTypeSymbol result = haveChanges ? this.WithTypeArguments(allTypeArguments.ToImmutable()) : this;
1156internal NamedTypeSymbol WithTypeArguments(ImmutableArray<TypeWithAnnotations> allTypeArguments)
1158var definition = this.OriginalDefinition;
1174bool haveChanges = MergeEquivalentTypeArguments(this, (NamedTypeSymbol)other, variance, allTypeParameters, allTypeArguments);
1176NamedTypeSymbol result;
1190return IsTupleType ? MergeTupleNames((NamedTypeSymbol)other, result) : result;
1200NamedTypeSymbol typeA,
1201NamedTypeSymbol typeB,
1212var definition = typeA.OriginalDefinition;
1275public NamedTypeSymbol Construct(params TypeSymbol[] typeArguments)
1286public NamedTypeSymbol Construct(ImmutableArray<TypeSymbol> typeArguments)
1296public NamedTypeSymbol Construct(IEnumerable<TypeSymbol> typeArguments)
1305public NamedTypeSymbol ConstructUnboundGenericType()
1310internal NamedTypeSymbol GetUnboundGenericTypeOrSelf()
1338private NamedTypeSymbol ConstructWithoutModifiers(ImmutableArray<TypeSymbol> typeArguments, bool unbound)
1354internal NamedTypeSymbol Construct(ImmutableArray<TypeWithAnnotations> typeArguments)
1359internal NamedTypeSymbol Construct(ImmutableArray<TypeWithAnnotations> typeArguments, bool unbound)
1396protected virtual NamedTypeSymbol ConstructCore(ImmutableArray<TypeWithAnnotations> typeArguments, bool unbound)
1408for (var current = this; !ReferenceEquals(current, null); current = current.ContainingType)
1439var outer = ContainingType;
1460var outer = ContainingType;
1479var outer = ContainingType;
1498public new virtual NamedTypeSymbol OriginalDefinition
1524internal virtual NamedTypeSymbol AsMember(NamedTypeSymbol newOwner)
1553NamedTypeSymbol currentType = this;
1598NamedTypeSymbol @base = this.BaseTypeNoUseSiteDiagnostics;
1635var @base = this.BaseTypeNoUseSiteDiagnostics;
1699var baseType = this.BaseTypeNoUseSiteDiagnostics;
1768internal virtual NamedTypeSymbol ComImportCoClass
1876typeToCheck = ((NamedTypeSymbol)typeToCheck).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[ValueTupleRestPosition - 1].Type;
1880arity = (typeToCheck as NamedTypeSymbol)?.Arity ?? 0;
1882if (arity > 0 && arity < ValueTupleRestPosition && ((NamedTypeSymbol)typeToCheck).IsTupleTypeOfCardinality(out tupleCardinality))
1901internal abstract NamedTypeSymbol AsNativeInteger();
1908internal abstract NamedTypeSymbol NativeIntegerUnderlyingType { get; }
Symbols\Retargeting\RetargetingSymbolTranslator.cs (56)
57return new RetargetingNamedTypeSymbol(this, (NamedTypeSymbol)symbol);
164Debug.Assert(symbol.Kind != SymbolKind.NamedType || ((NamedTypeSymbol)symbol).PrimitiveTypeCode == Cci.PrimitiveTypeCode.NotPrimitive);
180public TypeWithAnnotations Retarget(TypeWithAnnotations underlyingType, RetargetOptions options, NamedTypeSymbol asDynamicIfNoPiaContainingType = null)
205private NamedTypeSymbol RetargetNamedTypeDefinition(NamedTypeSymbol type, RetargetOptions options)
211var result = RetargetNamedTypeDefinition(type.NativeIntegerUnderlyingType, options);
276private NamedTypeSymbol RetargetNamedTypeDefinitionFromUnderlyingAssembly(NamedTypeSymbol type)
285var container = type.ContainingType;
292return (NamedTypeSymbol)this.SymbolMap.GetOrAdd(type, new UnsupportedMetadataTypeSymbol());
298return (NamedTypeSymbol)this.SymbolMap.GetOrAdd(type, _retargetingModule._createRetargetingNamedType);
310private NamedTypeSymbol RetargetNoPiaLocalType(NamedTypeSymbol type)
312NamedTypeSymbol cached;
320NamedTypeSymbol result;
401private static NamedTypeSymbol RetargetNamedTypeDefinition(PENamedTypeSymbol type, PEModuleSymbol addedModule)
410return (NamedTypeSymbol)cached;
413NamedTypeSymbol? result;
415NamedTypeSymbol containingType = type.ContainingType;
423NamedTypeSymbol scope = RetargetNamedTypeDefinition((PENamedTypeSymbol)containingType, addedModule);
440private static NamedTypeSymbol PerformTypeRetargeting(
442NamedTypeSymbol type)
444NamedTypeSymbol? result;
449NamedTypeSymbol containingType = type.ContainingType;
450NamedTypeSymbol? result1;
458NamedTypeSymbol scope = PerformTypeRetargeting(ref destination, containingType);
483public NamedTypeSymbol Retarget(NamedTypeSymbol type, RetargetOptions options)
485NamedTypeSymbol originalDefinition = type.OriginalDefinition;
487NamedTypeSymbol newDefinition = RetargetNamedTypeDefinition(originalDefinition, options);
514NamedTypeSymbol genericType = type;
551NamedTypeSymbol constructedType;
662var namedType = (NamedTypeSymbol)symbol;
720NamedTypeSymbol oldModifierSymbol = ((CSharpCustomModifier)oldModifier).ModifierSymbol;
721NamedTypeSymbol newModifierSymbol = Retarget(oldModifierSymbol, RetargetOptions.RetargetPrimitiveTypesByName); // should be retargeted by name
834public ImmutableArray<NamedTypeSymbol> Retarget(ImmutableArray<NamedTypeSymbol> sequence)
891var containingType = method.ContainingType;
892var retargetedType = Retarget(containingType, RetargetOptions.RetargetPrimitiveTypesByName);
939var containingType = property.ContainingType;
940var retargetedType = Retarget(containingType, RetargetOptions.RetargetPrimitiveTypesByName);
955var containingType = @event.ContainingType;
956var retargetedType = Retarget(containingType, RetargetOptions.RetargetPrimitiveTypesByName);
964private MethodSymbol FindMethodInRetargetedType(MethodSymbol method, NamedTypeSymbol retargetedType, IEqualityComparer<MethodSymbol> retargetedMethodComparer)
971private readonly NamedTypeSymbol _retargetedType;
974private RetargetedTypeMethodFinder(RetargetingModuleSymbol retargetingModule, NamedTypeSymbol retargetedType, MethodSymbol toFind) :
981public static MethodSymbol Find(RetargetingSymbolTranslator translator, MethodSymbol method, NamedTypeSymbol retargetedType, IEqualityComparer<MethodSymbol> retargetedMethodComparer)
998NamedTypeSymbol retargetedType,
1055NamedTypeSymbol containingType = _toFind.ContainingType;
1056NamedTypeSymbol retargetedContainingType = _retargetedType;
1074private PropertySymbol FindPropertyInRetargetedType(PropertySymbol property, NamedTypeSymbol retargetedType, IEqualityComparer<PropertySymbol> retargetedPropertyComparer)
1110private EventSymbol FindEventInRetargetedType(EventSymbol @event, NamedTypeSymbol retargetedType)
1163NamedTypeSymbol oldAttributeType = oldAttributeData.AttributeClass;
1164NamedTypeSymbol newAttributeType;
1329public override Symbol VisitNamedType(NamedTypeSymbol symbol, RetargetOptions options)
Symbols\Source\SourceComplexParameterSymbol.cs (7)
619internal override void EarlyDecodeWellKnownAttributeType(NamedTypeSymbol attributeType, AttributeSyntax attributeSyntax)
642internal override (CSharpAttributeData?, BoundAttribute?) EarlyDecodeWellKnownAttribute(ref EarlyDecodeWellKnownAttributeArguments<EarlyWellKnownAttributeBinder, NamedTypeSymbol, AttributeSyntax, AttributeLocation> arguments)
731private (CSharpAttributeData?, BoundAttribute?) EarlyDecodeAttributeForDefaultParameterValue(AttributeDescription description, ref EarlyDecodeWellKnownAttributeArguments<EarlyWellKnownAttributeBinder, NamedTypeSymbol, AttributeSyntax, AttributeLocation> arguments)
1010((NamedTypeSymbol)arg.TypeInternal).EnumUnderlyingType.SpecialType :
1292if (Type is not NamedTypeSymbol { IsInterpolatedStringHandlerType: true } handlerType)
1700syntax, (NamedTypeSymbol)Type, diagnostics, forParams: true);
1711if (ContainingSymbol.ContainingSymbol is NamedTypeSymbol) // No need to check for lambdas or local function
Symbols\Source\SourceDestructorSymbol.cs (2)
65private static (DeclarationModifiers, Flags) MakeModifiersAndFlags(NamedTypeSymbol containingType, DestructorDeclarationSyntax syntax, bool isNullableAnalysisEnabled, Location location, BindingDiagnosticBag diagnostics, out bool modifierErrors)
132private static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxTokenList modifiers, Location location, BindingDiagnosticBag diagnostics, out bool modifierErrors)
Symbols\Source\SourceMemberContainerSymbol.cs (52)
208private static readonly Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> s_emptyTypeMembers =
209new Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>>(EmptyReadOnlyMemoryOfCharComparer.Instance);
211private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>>? _lazyTypeMembers;
264var containingType = this.ContainingType;
315if (((NamedTypeSymbol)containingSymbol).IsInterface)
592var discarded = this.EnumUnderlyingType;
776public sealed override NamedTypeSymbol? ContainingType
780return _containingSymbol as NamedTypeSymbol;
1303internal override ImmutableArray<NamedTypeSymbol> GetTypeMembersUnordered()
1308public override ImmutableArray<NamedTypeSymbol> GetTypeMembers()
1313public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name)
1315ImmutableArray<NamedTypeSymbol> members;
1321return ImmutableArray<NamedTypeSymbol>.Empty;
1324public override ImmutableArray<NamedTypeSymbol> GetTypeMembers(ReadOnlyMemory<char> name, int arity)
1329private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> GetTypeMembersDictionary()
1347private Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> MakeTypeMembers(BindingDiagnosticBag diagnostics)
1349var symbols = ArrayBuilder<NamedTypeSymbol>.GetInstance();
1392foreach (var t in symbols)
1431if (this.ExtensionParameter is { Type: NamedTypeSymbol { Name: var extendedTypeName } })
1740if (member is NamedTypeSymbol type)
1893var baseType = BaseTypeNoUseSiteDiagnostics;
1988bool hasBaseTypeOrInterface(Func<NamedTypeSymbol, bool> predicate)
2037Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>>? typesByName,
2435Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>>? typesByName,
2447IEnumerable<IGrouping<string, NamedTypeSymbol>> extensionsByReceiverType = GetTypeMembers("").Where(static t => t.IsExtension).GroupBy(static t => ((SourceNamedTypeSymbol)t).ExtensionGroupingName!);
2463static (Dictionary<ReadOnlyMemory<char>, ImmutableArray<Symbol>>? membersByName, ImmutableArray<Symbol> membersUnordered) mergeMembersInGroup(IGrouping<string, NamedTypeSymbol> grouping)
2467NamedTypeSymbol? masterExtension = null;
2470foreach (NamedTypeSymbol item in grouping)
2472var extension = item;
2523static ImmutableArray<Symbol> concatMembers(ImmutableArray<Symbol> existingMembers, NamedTypeSymbol extension, ImmutableArray<Symbol> newMembers, ref ImmutableArray<Symbol> membersUnordered)
2692BaseTypeAnalysis.StructDependsOn((NamedTypeSymbol)type, this) &&
3002var instanceMap = new Dictionary<NamedTypeSymbol, NamedTypeSymbol>(ReferenceEqualityComparer.Instance);
3023var type = (NamedTypeSymbol)f.Type;
3034private static bool InfiniteFlatteningGraph(SourceMemberContainerTypeSymbol top, NamedTypeSymbol t, Dictionary<NamedTypeSymbol, NamedTypeSymbol> instanceMap)
3037var tOriginal = t.OriginalDefinition;
3038if (instanceMap.TryGetValue(tOriginal, out var oldInstance))
3052var type = (NamedTypeSymbol)f.Type;
3177Dictionary<ReadOnlyMemory<char>, ImmutableArray<NamedTypeSymbol>> typesByName)
3179foreach ((ReadOnlyMemory<char> name, ImmutableArray<NamedTypeSymbol> types) in typesByName)
3832ImmutableArray<Symbol> types = GetTypeMembers(name).Cast<NamedTypeSymbol, Symbol>();
3890foreach (var type in GetTypeMembers(""))
5221var currentBaseType = this.BaseTypeNoUseSiteDiagnostics;
6017var baseType = BaseTypeNoUseSiteDiagnostics;
6022foreach (var @interface in GetInterfacesToEmit())
6055NamedTypeSymbol baseType = this.BaseTypeNoUseSiteDiagnostics;
6134foreach (var type in this.GetTypeMembers())
6154public sealed override NamedTypeSymbol ConstructedFrom
Symbols\Source\SourceNamedTypeSymbol_Bases.cs (60)
24private Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> _lazyDeclaredBases;
26private NamedTypeSymbol _lazyBaseType = ErrorTypeSymbol.UnknownResultType;
27private ImmutableArray<NamedTypeSymbol> _lazyInterfaces;
35internal sealed override NamedTypeSymbol BaseTypeNoUseSiteDiagnostics
46var tmp = ContainingType.BaseTypeNoUseSiteDiagnostics;
50var acyclicBase = this.MakeAcyclicBaseType(diagnostics);
66internal sealed override ImmutableArray<NamedTypeSymbol> InterfacesNoUseSiteDiagnostics(ConsList<TypeSymbol> basesBeingResolved)
72return ImmutableArray<NamedTypeSymbol>.Empty;
77if (ImmutableInterlocked.InterlockedCompareExchange(ref _lazyInterfaces, acyclicInterfaces, default(ImmutableArray<NamedTypeSymbol>)).IsDefault)
89var localBase = this.BaseTypeNoUseSiteDiagnostics;
168MultiDictionary<NamedTypeSymbol, NamedTypeSymbol>.ValueSet set = pair.Value;
170foreach (var @interface in set)
177NamedTypeSymbol other = pair.Key;
178foreach (var @interface in set)
212private SourceLocation FindBaseRefSyntax(NamedTypeSymbol baseSym)
255internal Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> GetDeclaredBases(ConsList<TypeSymbol> basesBeingResolved)
270internal override NamedTypeSymbol GetDeclaredBaseType(ConsList<TypeSymbol> basesBeingResolved)
275internal override ImmutableArray<NamedTypeSymbol> GetDeclaredInterfaces(ConsList<TypeSymbol> basesBeingResolved)
280private Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> MakeDeclaredBases(ConsList<TypeSymbol> basesBeingResolved, BindingDiagnosticBag diagnostics)
285return new Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>>(null, ImmutableArray<NamedTypeSymbol>.Empty);
291var baseInterfaces = ArrayBuilder<NamedTypeSymbol>.GetInstance();
293NamedTypeSymbol baseType = null;
296var interfaceLocations = SpecializedSymbolCollections.GetPooledSymbolDictionaryInstance<NamedTypeSymbol, SourceLocation>();
300Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> one = MakeOneDeclaredBases(newBasesBeingResolved, decl, diagnostics);
303var partBase = one.Item1;
358foreach (var t in partInterfaces)
374var type = DeclaringCompilation.GetWellKnownType(WellKnownType.System_IEquatable_T).Construct(this);
380var type = DeclaringCompilation.GetWellKnownType(WellKnownType.System_Runtime_CompilerServices_IUnion);
418foreach (var i in baseInterfacesRO)
437return new Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>>(baseType, baseInterfacesRO);
439static void addImplicitlyImplementedInterface(ArrayBuilder<NamedTypeSymbol> baseInterfaces, NamedTypeSymbol type)
460private Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>> MakeOneDeclaredBases(ConsList<TypeSymbol> newBasesBeingResolved, SingleTypeDeclaration decl, BindingDiagnosticBag diagnostics)
468NamedTypeSymbol localBase = null;
469var localInterfaces = ArrayBuilder<NamedTypeSymbol>.GetInstance();
548localBase = (NamedTypeSymbol)baseType;
573foreach (var t in localInterfaces)
602localInterfaces.Add((NamedTypeSymbol)baseType);
610localBase = (NamedTypeSymbol)baseType;
628localInterfaces.Add((NamedTypeSymbol)baseType);
650return new Tuple<NamedTypeSymbol, ImmutableArray<NamedTypeSymbol>>(localBase, localInterfaces.ToImmutableAndFree());
686private ImmutableArray<NamedTypeSymbol> MakeAcyclicInterfaces(ConsList<TypeSymbol> basesBeingResolved, BindingDiagnosticBag diagnostics)
693return ImmutableArray<NamedTypeSymbol>.Empty;
699ArrayBuilder<NamedTypeSymbol> result = isInterface ? ArrayBuilder<NamedTypeSymbol>.GetInstance() : null;
700foreach (var t in declaredInterfaces)
722foreach (var @interface in t.AllInterfacesNoUseSiteDiagnostics)
737private NamedTypeSymbol MakeAcyclicBaseType(BindingDiagnosticBag diagnostics)
741NamedTypeSymbol declaredBase;
801NamedTypeSymbol current = declaredBase;
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (16)
159if (type is NamedTypeSymbol namedType)
193static void appendNamedType(TypeSymbol type, StringBuilder builder, NamedTypeSymbol namedType)
224static void appendContainingType(NamedTypeSymbol namedType, StringBuilder builder)
235static void appendTypeArguments(NamedTypeSymbol namedType, StringBuilder builder)
466if (type is NamedTypeSymbol namedType)
497static void appendNamedType(NamedTypeSymbol namedType, StringBuilder builder)
562static void appendContainingType(NamedTypeSymbol namedType, StringBuilder builder)
573static void appendTypeArguments(NamedTypeSymbol namedType, StringBuilder builder)
762static void appendCallingConventionTypes(ImmutableArray<NamedTypeSymbol> callingConventionTypes, StringBuilder builder)
1037var containingType = this.ContainingType;
1179NamedTypeSymbol extension = extensionMember.ContainingType;
1189NamedTypeSymbol? constructedExtension = inferExtensionTypeArguments(extension, receiverType, compilation, out wasExtensionFullyInferred);
1215static NamedTypeSymbol? inferExtensionTypeArguments(NamedTypeSymbol extension, TypeSymbol receiverType, CSharpCompilation? compilation, out bool wasExtensionFullyInferred)
1238var result = extension.Construct(typeArgsForConstruct);
1252static ImmutableArray<TypeWithAnnotations> fillNotInferredTypeArguments(NamedTypeSymbol extension, ImmutableArray<TypeWithAnnotations> typeArgs, out bool wasFullyInferred)
Symbols\Source\SourceOrdinaryMethodSymbol.cs (8)
24NamedTypeSymbol containingType,
49NamedTypeSymbol containingType,
90NamedTypeSymbol containingType, Location location, MethodDeclarationSyntax syntax, MethodKind methodKind,
436private static DeclarationModifiers MakeDeclarationModifiers(MethodDeclarationSyntax syntax, NamedTypeSymbol containingType, Location location, DeclarationModifiers allowedModifiers, BindingDiagnosticBag diagnostics)
727private static (DeclarationModifiers mods, bool hasExplicitAccessMod) MakeModifiers(MethodDeclarationSyntax syntax, NamedTypeSymbol containingType, MethodKind methodKind, bool hasBody, Location location, BindingDiagnosticBag diagnostics)
964NamedTypeSymbol containingType,
1021NamedTypeSymbol containingType,
1180if (tpEnclosing.ContainingSymbol is NamedTypeSymbol { IsExtension: true })
Symbols\Source\SourcePropertyAccessorSymbol.cs (10)
30NamedTypeSymbol containingType,
67NamedTypeSymbol containingType,
88NamedTypeSymbol containingType,
114NamedTypeSymbol containingType,
131NamedTypeSymbol containingType,
166NamedTypeSymbol containingType,
200NamedTypeSymbol containingType,
249NamedTypeSymbol containingType, SourcePropertySymbolBase property, DeclarationModifiers propertyModifiers, Location location,
422var isInitOnlyType = Binder.GetWellKnownType(this.DeclaringCompilation,
523private static DeclarationModifiers MakeModifiers(NamedTypeSymbol containingType, SyntaxTokenList modifiers, bool isExplicitInterfaceImplementation,
Symbols\Symbol_Attributes.cs (20)
67var namedType = (NamedTypeSymbol)this;
122internal virtual void EarlyDecodeWellKnownAttributeType(NamedTypeSymbol attributeType, AttributeSyntax attributeSyntax)
142internal virtual (CSharpAttributeData?, BoundAttribute?) EarlyDecodeWellKnownAttribute(ref EarlyDecodeWellKnownAttributeArguments<EarlyWellKnownAttributeBinder, NamedTypeSymbol, AttributeSyntax, AttributeLocation> arguments)
148ref EarlyDecodeWellKnownAttributeArguments<EarlyWellKnownAttributeBinder, NamedTypeSymbol, AttributeSyntax, AttributeLocation> arguments,
153var type = arguments.AttributeType;
337var attributeTypesBuilder = new NamedTypeSymbol[totalAttributesCount];
353ImmutableArray<NamedTypeSymbol> boundAttributeTypes = attributeTypesBuilder.AsImmutableOrNull();
556var boundTypeSymbol = (NamedTypeSymbol)boundType.Type;
779ImmutableArray<NamedTypeSymbol> boundAttributeTypes,
792var arguments = new EarlyDecodeWellKnownAttributeArguments<EarlyWellKnownAttributeBinder, NamedTypeSymbol, AttributeSyntax, AttributeLocation>();
797NamedTypeSymbol boundAttributeType = boundAttributeTypes[i];
826private void EarlyDecodeWellKnownAttributeTypes(ImmutableArray<NamedTypeSymbol> attributeTypes, ImmutableArray<AttributeSyntax> attributeSyntaxList)
833var attributeType = attributeTypes[i];
863HashSet<NamedTypeSymbol> uniqueAttributeTypes = new HashSet<NamedTypeSymbol>();
904HashSet<NamedTypeSymbol> uniqueAttributeTypes)
908NamedTypeSymbol attributeType = attribute.AttributeClass;
911if (this is NamedTypeSymbol { IsExtension: true })
Symbols\Synthesized\SynthesizedEntryPointSymbol.cs (8)
25private readonly NamedTypeSymbol _containingType;
29var containingType = initializerMethod.ContainingType;
33var systemObject = Binder.GetSpecialType(compilation, SpecialType.System_Object, DummySyntax(), diagnostics);
43var systemVoid = Binder.GetSpecialType(compilation, SpecialType.System_Void, DummySyntax(), diagnostics);
48private SynthesizedEntryPointSymbol(NamedTypeSymbol containingType)
348internal AsyncForwardEntryPoint(CSharpCompilation compilation, NamedTypeSymbol containingType, MethodSymbol userMain) :
484internal ScriptEntryPoint(NamedTypeSymbol containingType, TypeWithAnnotations returnType) :
574internal SubmissionEntryPoint(NamedTypeSymbol containingType, TypeWithAnnotations returnType, TypeSymbol submissionArrayType) :
Symbols\Tuples\TupleTypeSymbol.cs (54)
29internal static NamedTypeSymbol CreateTuple(
52NamedTypeSymbol underlyingType = getTupleUnderlyingType(elementTypesWithAnnotations, syntax, compilation, diagnostics);
61var constructedType = CreateTuple(underlyingType, elementNames, errorPositions, elementLocations, locations);
73static NamedTypeSymbol getTupleUnderlyingType(ImmutableArray<TypeWithAnnotations> elementTypes, CSharpSyntaxNode? syntax, CSharpCompilation compilation, BindingDiagnosticBag? diagnostics)
79NamedTypeSymbol firstTupleType = compilation.GetWellKnownType(GetTupleType(remainder));
85NamedTypeSymbol? chainedTupleType = null;
99public static NamedTypeSymbol CreateTuple(
100NamedTypeSymbol tupleCompatibleType,
110internal NamedTypeSymbol WithTupleDataFrom(NamedTypeSymbol original)
120internal NamedTypeSymbol? TupleUnderlyingType
126internal NamedTypeSymbol WithElementTypes(ImmutableArray<TypeWithAnnotations> newElementTypes)
131NamedTypeSymbol firstTupleType;
132NamedTypeSymbol? chainedTupleType;
133if (Arity < NamedTypeSymbol.ValueTupleRestPosition)
141var underlyingType = this;
144underlyingType = ((NamedTypeSymbol)underlyingType.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[NamedTypeSymbol.ValueTupleRestIndex].Type);
146while (underlyingType.Arity >= NamedTypeSymbol.ValueTupleRestPosition);
160internal NamedTypeSymbol WithElementNames(ImmutableArray<string?> newElementNames,
170private NamedTypeSymbol WithTupleData(TupleExtraData newData)
195protected abstract NamedTypeSymbol WithTupleDataCore(TupleExtraData newData);
203internal static void GetUnderlyingTypeChain(NamedTypeSymbol underlyingTupleType, ArrayBuilder<NamedTypeSymbol> underlyingTupleTypeChain)
205NamedTypeSymbol currentType = underlyingTupleType;
210if (currentType.Arity == NamedTypeSymbol.ValueTupleRestPosition)
212currentType = (NamedTypeSymbol)currentType.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[NamedTypeSymbol.ValueTupleRestPosition - 1].Type;
231private static NamedTypeSymbol ConstructTupleUnderlyingType(NamedTypeSymbol firstTupleType, NamedTypeSymbol? chainedTupleTypeOpt, ImmutableArray<TypeWithAnnotations> elementTypes)
239NamedTypeSymbol currentSymbol = firstTupleType.Construct(ImmutableArray.Create(elementTypes, (chainLength - 1) * (ValueTupleRestPosition - 1), remainder));
251private static void ReportUseSiteAndObsoleteDiagnostics(CSharpSyntaxNode? syntax, BindingDiagnosticBag diagnostics, NamedTypeSymbol firstTupleType)
267NamedTypeSymbol firstTupleType = compilation.GetWellKnownType(GetTupleType(remainder));
272NamedTypeSymbol chainedTupleType = compilation.GetWellKnownType(GetTupleType(ValueTupleRestPosition));
486internal static Symbol? GetWellKnownMemberInType(NamedTypeSymbol type, WellKnownMember relativeMember, BindingDiagnosticBag diagnostics, SyntaxNode? syntax)
515static Symbol? GetWellKnownMemberInType(NamedTypeSymbol type, WellKnownMember relativeMember)
578NamedTypeSymbol currentValueTuple = this;
710var oldUnderlying = currentValueTuple;
711currentValueTuple = (NamedTypeSymbol)oldUnderlying.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[ValueTupleRestIndex].Type;
737NamedTypeSymbol container = getNestedTupleUnderlyingType(this, fieldChainLength - 1).OriginalDefinition;
787static NamedTypeSymbol getNestedTupleUnderlyingType(NamedTypeSymbol topLevelUnderlyingType, int depth)
789NamedTypeSymbol found = topLevelUnderlyingType;
792found = (NamedTypeSymbol)found.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[ValueTupleRestPosition - 1].Type;
853private TypeSymbol MergeTupleNames(NamedTypeSymbol other, NamedTypeSymbol mergedType)
917internal NamedTypeSymbol TupleUnderlyingType { get; }
919internal TupleExtraData(NamedTypeSymbol underlyingType)
929internal TupleExtraData(NamedTypeSymbol underlyingType, ImmutableArray<string?> elementNames,
967public ImmutableArray<TypeWithAnnotations> TupleElementTypesWithAnnotations(NamedTypeSymbol tuple)
977static ImmutableArray<TypeWithAnnotations> collectTupleElementTypesWithAnnotations(NamedTypeSymbol tuple)
999public ImmutableArray<FieldSymbol> TupleElements(NamedTypeSymbol tuple)
1009ImmutableArray<FieldSymbol> collectTupleElementFields(NamedTypeSymbol tuple)
Symbols\TypeSymbol.cs (61)
48internal ImmutableArray<NamedTypeSymbol> allInterfaces;
53internal MultiDictionary<NamedTypeSymbol, NamedTypeSymbol> interfacesAndTheirBaseInterfaces;
55internal static readonly MultiDictionary<NamedTypeSymbol, NamedTypeSymbol> EmptyInterfacesAndTheirBaseInterfaces =
56new MultiDictionary<NamedTypeSymbol, NamedTypeSymbol>(0, SymbolEqualityComparer.CLRSignature);
160internal abstract NamedTypeSymbol BaseTypeNoUseSiteDiagnostics { get; }
162internal NamedTypeSymbol BaseTypeWithDefinitionUseSiteDiagnostics(ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
164var result = BaseTypeNoUseSiteDiagnostics;
174internal NamedTypeSymbol BaseTypeOriginalDefinition(ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
176var result = BaseTypeNoUseSiteDiagnostics;
191internal abstract ImmutableArray<NamedTypeSymbol> InterfacesNoUseSiteDiagnostics(ConsList<TypeSymbol> basesBeingResolved = null);
203internal ImmutableArray<NamedTypeSymbol> AllInterfacesNoUseSiteDiagnostics
211internal ImmutableArray<NamedTypeSymbol> AllInterfacesWithDefinitionUseSiteDiagnostics(ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
224foreach (var iface in result)
261var t = this.BaseTypeWithDefinitionUseSiteDiagnostics(ref useSiteInfo);
317protected virtual ImmutableArray<NamedTypeSymbol> GetAllInterfaces()
322return ImmutableArray<NamedTypeSymbol>.Empty;
337protected virtual ImmutableArray<NamedTypeSymbol> MakeAllInterfaces()
339var result = ArrayBuilder<NamedTypeSymbol>.GetInstance();
340var visited = new HashSet<NamedTypeSymbol>(SymbolEqualityComparer.ConsiderEverything);
354static void addAllInterfaces(NamedTypeSymbol @interface, HashSet<NamedTypeSymbol> visited, ArrayBuilder<NamedTypeSymbol> result)
358ImmutableArray<NamedTypeSymbol> baseInterfaces = @interface.InterfacesNoUseSiteDiagnostics();
361var baseInterface = baseInterfaces[i];
380internal MultiDictionary<NamedTypeSymbol, NamedTypeSymbol> InterfacesAndTheirBaseInterfacesNoUseSiteDiagnostics
400internal MultiDictionary<NamedTypeSymbol, NamedTypeSymbol> InterfacesAndTheirBaseInterfacesWithDefinitionUseSiteDiagnostics(ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
404foreach (var iface in result.Keys)
415private static MultiDictionary<NamedTypeSymbol, NamedTypeSymbol> MakeInterfacesAndTheirBaseInterfaces(ImmutableArray<NamedTypeSymbol> declaredInterfaces)
417var resultBuilder = new MultiDictionary<NamedTypeSymbol, NamedTypeSymbol>(declaredInterfaces.Length, SymbolEqualityComparer.CLRSignature, SymbolEqualityComparer.ConsiderEverything);
418foreach (var @interface in declaredInterfaces)
422foreach (var baseInterface in @interface.AllInterfacesNoUseSiteDiagnostics)
457return FindMostSpecificImplementation(interfaceMember, (NamedTypeSymbol)this, ref discardedUseSiteInfo);
732var interfaceType = interfaceMember.ContainingType;
811NamedTypeSymbol interfaceType = interfaceMember.ContainingType;
1015if (implementingType is NamedTypeSymbol named &&
1109private static Symbol FindMostSpecificImplementation(Symbol interfaceMember, NamedTypeSymbol implementingInterface, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
1157ImmutableArray<NamedTypeSymbol> allInterfaces = implementingType.AllInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo);
1243NamedTypeSymbol implementingInterface = inplementingAccessor1.ContainingType;
1264ImmutableArray<NamedTypeSymbol> allInterfaces,
1269var implementations = ArrayBuilder<(MultiDictionary<Symbol, Symbol>.ValueSet MethodSet, MultiDictionary<NamedTypeSymbol, NamedTypeSymbol> Bases)>.GetInstance();
1271foreach (var interfaceType in allInterfaces)
1288(MultiDictionary<Symbol, Symbol>.ValueSet methodSet, MultiDictionary<NamedTypeSymbol, NamedTypeSymbol> bases) = implementations[i];
1290NamedTypeSymbol previousContainingType = previous.ContainingType;
1322MultiDictionary<NamedTypeSymbol, NamedTypeSymbol> bases = interfaceType.InterfacesAndTheirBaseInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo);
1381internal static MultiDictionary<Symbol, Symbol>.ValueSet FindImplementationInInterface(Symbol interfaceMember, NamedTypeSymbol interfaceType)
1385NamedTypeSymbol containingType = interfaceMember.ContainingType;
2104var @interface = interfaceMember.ContainingType;
2169var @interface = interfaceMember.ContainingType;
2556foreach (FieldSymbol field in ((NamedTypeSymbol)this).OriginalDefinition.GetFieldsToEmit())
2574elementField = elementField.AsMember((NamedTypeSymbol)this);
Symbols\TypeSymbolExtensions.cs (66)
29foreach (NamedTypeSymbol @interface in subType.AllInterfacesWithDefinitionUseSiteDiagnostics(ref useSiteInfo))
160if (type is NamedTypeSymbol nt
175RoslynDebug.Assert(type is NamedTypeSymbol); //not testing Kind because it may be an ErrorType
177return ((NamedTypeSymbol)type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0];
187public bool IsSubjectForUnionMatching => patternInputType.StrippedType() is NamedTypeSymbol { IsUnionType: true };
189public bool IsUnionMatchingInputType([NotNullWhen(true)] out NamedTypeSymbol? unionType)
191if (patternInputType.StrippedType() is NamedTypeSymbol { IsUnionType: true } named)
232public static NamedTypeSymbol? GetEnumUnderlyingType(this TypeSymbol? type)
234return (type is NamedTypeSymbol namedType) ? namedType.EnumUnderlyingType : null;
245var underlyingType = type.GetEnumUnderlyingType();
352return type.Kind == SymbolKind.NamedType && ((NamedTypeSymbol)type).IsInterface;
406if (type is NamedTypeSymbol
424if (type is NamedTypeSymbol
457internal static ImmutableArray<NamedTypeSymbol> GetAllInterfacesOrEffectiveInterfaces(this TypeSymbol type)
471return ImmutableArray<NamedTypeSymbol>.Empty;
478public static NamedTypeSymbol? GetDelegateType(this TypeSymbol? type)
483type = ((NamedTypeSymbol)type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics[0].Type;
486return type.IsDelegateType() ? (NamedTypeSymbol)type : null;
519if (_type.OriginalDefinition is NamedTypeSymbol type)
559if (!(type is NamedTypeSymbol t))
641elementTypes = ((NamedTypeSymbol)type).TupleElementTypesWithAnnotations;
753return !IsAsRestrictive((NamedTypeSymbol)type, sym, ref useSiteInfo);
828var containingType = current.ContainingType;
936var typeArguments = ((NamedTypeSymbol)current).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
1089var parent1 = s1.ContainingType;
1099for (var parent2 = s2.ContainingType; (object)parent2 != null; parent2 = parent2.ContainingType)
1111var parent2 = s2.ContainingType;
1123var parent1 = s1.ContainingType;
1141for (var parent2 = s2.ContainingType; (object)parent2 != null; parent2 = parent2.ContainingType)
1201NamedTypeSymbol parent1 = s1.ContainingType;
1208var parent1OriginalDefinition = parent1.OriginalDefinition;
1209for (var parent2 = s2.ContainingType; (object)parent2 != null; parent2 = parent2.ContainingType)
1230return type is NamedTypeSymbol { IsUnboundGenericType: true };
1233public static bool IsTopLevelType(this NamedTypeSymbol type)
1414return type is NamedTypeSymbol
1427return type is NamedTypeSymbol
1440return type is NamedTypeSymbol
1451return type is NamedTypeSymbol
1462return type is NamedTypeSymbol
1528var foundType = type.VisitType(predicate: (type, _, _) => type is NamedTypeSymbol { IsFileLocal: true }, arg: (object?)null);
1532internal static string? GetFileLocalTypeMetadataNamePrefix(this NamedTypeSymbol type)
1570return ((NamedTypeSymbol)type).EnumUnderlyingType.SpecialType.IsValidVolatileFieldType();
1614internal static int ComputeHashCode(this NamedTypeSymbol type)
1656static bool wasConstructedForAnnotations(NamedTypeSymbol type)
1689public static TypeSymbol AsDynamicIfNoPia(this TypeSymbol type, NamedTypeSymbol containingType)
1694public static bool TryAsDynamicIfNoPia(this TypeSymbol type, NamedTypeSymbol containingType, [NotNullWhen(true)] out TypeSymbol? result)
1731internal static ImmutableArray<TypeParameterSymbol> GetAllTypeParameters(this NamedTypeSymbol type)
1748internal static void GetAllTypeParameters(this NamedTypeSymbol type, ArrayBuilder<TypeParameterSymbol> result)
1750var containingType = type.ContainingType;
1763internal static TypeParameterSymbol? FindEnclosingTypeParameter(this NamedTypeSymbol type, string name)
1819internal static bool HasNameQualifier(this NamedTypeSymbol type, string qualifiedName)
1876var namedType = type as NamedTypeSymbol;
1894if (!(type is NamedTypeSymbol { Arity: 1 } namedType))
1907if (!(type is NamedTypeSymbol { Arity: 1 } namedType))
1917if (!(type is NamedTypeSymbol { Arity: 1 } namedType))
1935internal static bool IsCustomTaskType(this NamedTypeSymbol type, [NotNullWhen(true)] out TypeSymbol? builderArgument)
1968var namedType = (NamedTypeSymbol)type;
2009private static bool NormalizeTaskTypesInNamedType(CSharpCompilation compilation, ref NamedTypeSymbol type)
2032var originalType = type;
2033var originalDefinition = originalType.OriginalDefinition;
2045var taskType = compilation.GetWellKnownType(
2182return typeSymbol is NamedTypeSymbol { Name: WellKnownMemberNames.LockTypeName, Arity: 0, ContainingType: null } &&
2188return typeSymbol is NamedTypeSymbol
2226return type is NamedTypeSymbol { Name: "INumberBase", IsInterface: true, Arity: 1, ContainingType: null } &&
Utilities\TypeSymbolExtensions.cs (15)
52var namedType = (NamedTypeSymbol)type;
135var namedType = (NamedTypeSymbol)type;
179internal static TypeSymbol GetNextBaseTypeNoUseSiteDiagnostics(this TypeSymbol type, ConsList<TypeSymbol> basesBeingResolved, CSharpCompilation compilation, ref PooledHashSet<NamedTypeSymbol> visited)
190return GetNextDeclaredBase((NamedTypeSymbol)type, basesBeingResolved, compilation, ref visited);
210private static TypeSymbol GetNextDeclaredBase(NamedTypeSymbol type, ConsList<TypeSymbol> basesBeingResolved, CSharpCompilation compilation, ref PooledHashSet<NamedTypeSymbol> visited)
226var nextType = type.GetDeclaredBaseType(basesBeingResolved);
235var origType = type.OriginalDefinition;
244visited = visited ?? PooledHashSet<NamedTypeSymbol>.GetInstance();
255private static void SetKnownToHaveNoDeclaredBaseCycles(ref PooledHashSet<NamedTypeSymbol> visited)
259foreach (var v in visited)
269private static NamedTypeSymbol GetDefaultBaseOrNull(NamedTypeSymbol type, CSharpCompilation compilation)