127 references to CollectionExpressionTypeKind
Microsoft.CodeAnalysis.CSharp (127)
Binder\Binder.ValueChecks.cs (5)
4799var collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(_compilation, expr.Type, out var elementType); 4802case CollectionExpressionTypeKind.ReadOnlySpan: 4811case CollectionExpressionTypeKind.Span: 4815case CollectionExpressionTypeKind.CollectionBuilder: 4826case CollectionExpressionTypeKind.ImplementsIEnumerable:
Binder\Binder_Attributes.cs (1)
923&& node.Conversion.GetCollectionExpressionTypeKind(out _, out _, out _) == CollectionExpressionTypeKind.Array)
Binder\Binder_Conversions.cs (26)
916CollectionExpressionTypeKind collectionTypeKind, ImmutableArray<BoundNode> elements, BoundObjectOrCollectionValuePlaceholder? placeholder = null, BoundExpression? collectionCreation = null, MethodSymbol? collectionBuilderMethod = null, BoundCollectionBuilderElementsPlaceholder? collectionBuilderElementsPlaceholder = null) 938var collectionTypeKind = _conversion.GetCollectionExpressionTypeKind(out var elementType, out MethodSymbol? constructor, out bool isExpanded); 940if (collectionTypeKind == CollectionExpressionTypeKind.None) 951if (collectionTypeKind != CollectionExpressionTypeKind.ImplementsIEnumerable && 968CollectionExpressionTypeKind collectionTypeKind, 986if (collectionTypeKind == CollectionExpressionTypeKind.ImplementsIEnumerable) 989if (collectionTypeKind is CollectionExpressionTypeKind.ArrayInterface || 1008CollectionExpressionTypeKind.Array or CollectionExpressionTypeKind.Span or CollectionExpressionTypeKind.ReadOnlySpan 1011CollectionExpressionTypeKind.ArrayInterface 1014CollectionExpressionTypeKind.CollectionBuilder 1084CollectionExpressionTypeKind.ImplementsIEnumerable, 1218CollectionExpressionTypeKind collectionTypeKind, 1224case CollectionExpressionTypeKind.Span: 1228case CollectionExpressionTypeKind.ReadOnlySpan: 1258CollectionExpressionTypeKind.ArrayInterface, 1347CollectionExpressionTypeKind.CollectionBuilder, 2228if (expr.CollectionTypeKind is CollectionExpressionTypeKind.ImplementsIEnumerable) 2337collectionTypeKind: CollectionExpressionTypeKind.None, 2359var collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(Compilation, targetType, out TypeWithAnnotations elementTypeWithAnnotations); 2362case CollectionExpressionTypeKind.ImplementsIEnumerable: 2363case CollectionExpressionTypeKind.CollectionBuilder: 2369collectionTypeKind == CollectionExpressionTypeKind.CollectionBuilder ? 2382if (collectionTypeKind != CollectionExpressionTypeKind.None) 2388if (collectionTypeKind == CollectionExpressionTypeKind.ImplementsIEnumerable)
Binder\Semantics\Conversions\Conversion.cs (6)
111CollectionExpressionTypeKind collectionExpressionTypeKind, TypeSymbol elementType, 116Debug.Assert(collectionExpressionTypeKind != CollectionExpressionTypeKind.None); 124internal readonly CollectionExpressionTypeKind CollectionExpressionTypeKind; 131CollectionExpressionTypeKind collectionExpressionTypeKind, TypeSymbol elementType, 585internal CollectionExpressionTypeKind GetCollectionExpressionTypeKind(out TypeSymbol? elementType, out MethodSymbol? constructor, out bool isExpanded) 598return CollectionExpressionTypeKind.None;
Binder\Semantics\Conversions\Conversions.cs (5)
165var collectionTypeKind = GetCollectionExpressionTypeKind(Compilation, targetType, out TypeWithAnnotations elementTypeWithAnnotations); 169case CollectionExpressionTypeKind.None: 172case CollectionExpressionTypeKind.ImplementsIEnumerable: 173case CollectionExpressionTypeKind.CollectionBuilder: 191if (collectionTypeKind == CollectionExpressionTypeKind.ImplementsIEnumerable)
Binder\Semantics\Conversions\ConversionsBase.cs (8)
1669internal static CollectionExpressionTypeKind GetCollectionExpressionTypeKind(CSharpCompilation compilation, TypeSymbol destination, out TypeWithAnnotations elementType) 1678return CollectionExpressionTypeKind.Array; 1683return CollectionExpressionTypeKind.Span; 1687return CollectionExpressionTypeKind.ReadOnlySpan; 1692return CollectionExpressionTypeKind.CollectionBuilder; 1703return CollectionExpressionTypeKind.ImplementsIEnumerable; 1707return CollectionExpressionTypeKind.ArrayInterface; 1711return CollectionExpressionTypeKind.None;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (37)
1342var collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(binder.Compilation, type, out elementType); 1346case CollectionExpressionTypeKind.None: 1349case CollectionExpressionTypeKind.ImplementsIEnumerable: 1350case CollectionExpressionTypeKind.CollectionBuilder: 1360if (collectionTypeKind == CollectionExpressionTypeKind.ImplementsIEnumerable) 3055var kind1 = conv1.GetCollectionExpressionTypeKind(out TypeSymbol elementType1, out _, out _); 3056var kind2 = conv2.GetCollectionExpressionTypeKind(out TypeSymbol elementType2, out _, out _); 3085TypeSymbol t1, CollectionExpressionTypeKind kind1, TypeSymbol elementType1, ImmutableArray<Conversion> underlyingElementConversions1, 3086TypeSymbol t2, CollectionExpressionTypeKind kind2, TypeSymbol elementType2, ImmutableArray<Conversion> underlyingElementConversions2, 3097var t1IsSpanType = kind1 is CollectionExpressionTypeKind.ReadOnlySpan or CollectionExpressionTypeKind.Span; 3098var t2IsSpanType = kind2 is CollectionExpressionTypeKind.ReadOnlySpan or CollectionExpressionTypeKind.Span; 3178case (CollectionExpressionTypeKind.ReadOnlySpan, CollectionExpressionTypeKind.Span): 3179case (CollectionExpressionTypeKind.ReadOnlySpan or CollectionExpressionTypeKind.Span, _) when IsSZArrayOrArrayInterface(t2, out _): 3182case (CollectionExpressionTypeKind.Span, CollectionExpressionTypeKind.ReadOnlySpan): 3183case (_, CollectionExpressionTypeKind.ReadOnlySpan or CollectionExpressionTypeKind.Span) when IsSZArrayOrArrayInterface(t1, out _): 3192TypeSymbol t1, CollectionExpressionTypeKind kind1, TypeSymbol elementType1, 3193TypeSymbol t2, CollectionExpressionTypeKind kind2, TypeSymbol elementType2, 3199if (kind1 is CollectionExpressionTypeKind.ReadOnlySpan && 3200kind2 is CollectionExpressionTypeKind.Span) 3207if (kind1 is (CollectionExpressionTypeKind.ReadOnlySpan or CollectionExpressionTypeKind.Span)) 3214Debug.Assert(kind1 is not (CollectionExpressionTypeKind.ReadOnlySpan or CollectionExpressionTypeKind.Span)); 3215if (kind2 is not (CollectionExpressionTypeKind.ReadOnlySpan or CollectionExpressionTypeKind.Span) && 3229CollectionExpressionTypeKind kind1 = ConversionsBase.GetCollectionExpressionTypeKind(Compilation, t1, out TypeWithAnnotations elementType1); 3230CollectionExpressionTypeKind kind2 = ConversionsBase.GetCollectionExpressionTypeKind(Compilation, t2, out TypeWithAnnotations elementType2); 3232if (kind1 is CollectionExpressionTypeKind.CollectionBuilder or CollectionExpressionTypeKind.ImplementsIEnumerable) 3237if (kind2 is CollectionExpressionTypeKind.CollectionBuilder or CollectionExpressionTypeKind.ImplementsIEnumerable)
BoundTree\BoundCollectionExpression.cs (2)
19Debug.Assert(this.CollectionTypeKind == CollectionExpressionTypeKind.CollectionBuilder); 31Debug.Assert(this.CollectionTypeKind != CollectionExpressionTypeKind.CollectionBuilder);
FlowAnalysis\NullableWalker.cs (7)
3981node.CollectionTypeKind == CollectionExpressionTypeKind.ImplementsIEnumerable) 4220static NullableFlowState getResultState(BoundCollectionExpression node, CollectionExpressionTypeKind collectionKind) 4222if (collectionKind is CollectionExpressionTypeKind.CollectionBuilder) 4235(CollectionExpressionTypeKind, TypeWithAnnotations) getCollectionDetails(BoundCollectionExpression node, TypeSymbol collectionType) 4237var collectionKind = ConversionsBase.GetCollectionExpressionTypeKind(this.compilation, collectionType, out var targetElementType); 4238if (collectionKind is CollectionExpressionTypeKind.CollectionBuilder) 4247else if (collectionKind is CollectionExpressionTypeKind.ImplementsIEnumerable)
FlowAnalysis\NullableWalker.DebugVerifier.cs (1)
128bool hasElementType = node.CollectionTypeKind is not CollectionExpressionTypeKind.None;
Generated\BoundNodes.xml.Generated.cs (3)
6565public BoundCollectionExpression(SyntaxNode syntax, CollectionExpressionTypeKind collectionTypeKind, BoundObjectOrCollectionValuePlaceholder? placeholder, BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundCollectionBuilderElementsPlaceholder? collectionBuilderElementsPlaceholder, bool wasTargetTyped, bool hasWithElement, BoundUnconvertedCollectionExpression unconvertedCollectionExpression, ImmutableArray<BoundNode> elements, TypeSymbol type, bool hasErrors = false) 6588public CollectionExpressionTypeKind CollectionTypeKind { get; } 6600public BoundCollectionExpression Update(CollectionExpressionTypeKind collectionTypeKind, BoundObjectOrCollectionValuePlaceholder? placeholder, BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundCollectionBuilderElementsPlaceholder? collectionBuilderElementsPlaceholder, bool wasTargetTyped, bool hasWithElement, BoundUnconvertedCollectionExpression unconvertedCollectionExpression, ImmutableArray<BoundNode> elements, TypeSymbol type)
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (14)
40var collectionTypeKind = conversion.GetCollectionExpressionTypeKind(out var elementType, out _, out _); 43case CollectionExpressionTypeKind.ImplementsIEnumerable: 79case CollectionExpressionTypeKind.Array: 80case CollectionExpressionTypeKind.Span: 81case CollectionExpressionTypeKind.ReadOnlySpan: 84case CollectionExpressionTypeKind.CollectionBuilder: 95case CollectionExpressionTypeKind.ArrayInterface: 337Debug.Assert(!IsAllocatingRefStructCollectionExpression(node, CollectionExpressionTypeKind.ReadOnlySpan, elementType.Type, _compilation)); 347Debug.Assert(!IsAllocatingRefStructCollectionExpression(node, isReadOnlySpan ? CollectionExpressionTypeKind.ReadOnlySpan : CollectionExpressionTypeKind.Span, elementType.Type, _compilation)); 612internal static bool IsAllocatingRefStructCollectionExpression(BoundCollectionExpressionBase node, CollectionExpressionTypeKind collectionKind, TypeSymbol? elementType, CSharpCompilation compilation) 614return collectionKind is CollectionExpressionTypeKind.Span or CollectionExpressionTypeKind.ReadOnlySpan 617&& !(collectionKind == CollectionExpressionTypeKind.ReadOnlySpan && ShouldUseRuntimeHelpersCreateSpan(node, elementType))
Operations\CSharpOperationFactory.cs (7)
1278case CollectionExpressionTypeKind.None: 1279case CollectionExpressionTypeKind.Array: 1280case CollectionExpressionTypeKind.ReadOnlySpan: 1281case CollectionExpressionTypeKind.Span: 1283case CollectionExpressionTypeKind.ArrayInterface: 1284case CollectionExpressionTypeKind.ImplementsIEnumerable: 1286case CollectionExpressionTypeKind.CollectionBuilder:
Symbols\Source\SourceComplexParameterSymbol.cs (5)
1613var collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(DeclaringCompilation, Type, out TypeWithAnnotations elementTypeWithAnnotations); 1618case CollectionExpressionTypeKind.None: 1622case CollectionExpressionTypeKind.ImplementsIEnumerable: 1681case CollectionExpressionTypeKind.CollectionBuilder: 1716if (collectionTypeKind != CollectionExpressionTypeKind.Array)