104 references to CollectionExpressionTypeKind
Microsoft.CodeAnalysis.CSharp (104)
Binder\Binder.ValueChecks.cs (5)
4524
var
collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(_compilation, expr.Type, out var elementType);
4528
case
CollectionExpressionTypeKind
.ReadOnlySpan:
4531
case
CollectionExpressionTypeKind
.Span:
4533
case
CollectionExpressionTypeKind
.CollectionBuilder:
4555
case
CollectionExpressionTypeKind
.ImplementsIEnumerable:
Binder\Binder_Attributes.cs (1)
915
&& node.Conversion.GetCollectionExpressionTypeKind(out _, out _, out _) ==
CollectionExpressionTypeKind
.Array)
Binder\Semantics\Conversions\Conversion.cs (6)
110
CollectionExpressionTypeKind
collectionExpressionTypeKind, TypeSymbol elementType,
115
Debug.Assert(collectionExpressionTypeKind !=
CollectionExpressionTypeKind
.None);
123
internal readonly
CollectionExpressionTypeKind
CollectionExpressionTypeKind;
130
CollectionExpressionTypeKind
collectionExpressionTypeKind, TypeSymbol elementType,
547
internal
CollectionExpressionTypeKind
GetCollectionExpressionTypeKind(out TypeSymbol? elementType, out MethodSymbol? constructor, out bool isExpanded)
560
return
CollectionExpressionTypeKind
.None;
Binder\Semantics\Conversions\Conversions.cs (5)
163
var
collectionTypeKind = GetCollectionExpressionTypeKind(Compilation, targetType, out TypeWithAnnotations elementTypeWithAnnotations);
167
case
CollectionExpressionTypeKind
.None:
170
case
CollectionExpressionTypeKind
.ImplementsIEnumerable:
171
case
CollectionExpressionTypeKind
.CollectionBuilder:
189
if (collectionTypeKind ==
CollectionExpressionTypeKind
.ImplementsIEnumerable)
Binder\Semantics\Conversions\ConversionsBase.cs (8)
1656
internal static
CollectionExpressionTypeKind
GetCollectionExpressionTypeKind(CSharpCompilation compilation, TypeSymbol destination, out TypeWithAnnotations elementType)
1665
return
CollectionExpressionTypeKind
.Array;
1670
return
CollectionExpressionTypeKind
.Span;
1674
return
CollectionExpressionTypeKind
.ReadOnlySpan;
1679
return
CollectionExpressionTypeKind
.CollectionBuilder;
1690
return
CollectionExpressionTypeKind
.ImplementsIEnumerable;
1694
return
CollectionExpressionTypeKind
.ArrayInterface;
1698
return
CollectionExpressionTypeKind
.None;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (37)
1323
var
collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(binder.Compilation, type, out elementType);
1327
case
CollectionExpressionTypeKind
.None:
1330
case
CollectionExpressionTypeKind
.ImplementsIEnumerable:
1331
case
CollectionExpressionTypeKind
.CollectionBuilder:
1341
if (collectionTypeKind ==
CollectionExpressionTypeKind
.ImplementsIEnumerable)
3014
var
kind1 = conv1.GetCollectionExpressionTypeKind(out TypeSymbol elementType1, out _, out _);
3015
var
kind2 = conv2.GetCollectionExpressionTypeKind(out TypeSymbol elementType2, out _, out _);
3044
TypeSymbol t1,
CollectionExpressionTypeKind
kind1, TypeSymbol elementType1, ImmutableArray<Conversion> underlyingElementConversions1,
3045
TypeSymbol t2,
CollectionExpressionTypeKind
kind2, TypeSymbol elementType2, ImmutableArray<Conversion> underlyingElementConversions2,
3056
var t1IsSpanType = kind1 is
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span;
3057
var t2IsSpanType = kind2 is
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span;
3137
case (
CollectionExpressionTypeKind
.ReadOnlySpan,
CollectionExpressionTypeKind
.Span):
3138
case (
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span, _) when IsSZArrayOrArrayInterface(t2, out _):
3141
case (
CollectionExpressionTypeKind
.Span,
CollectionExpressionTypeKind
.ReadOnlySpan):
3142
case (_,
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span) when IsSZArrayOrArrayInterface(t1, out _):
3151
TypeSymbol t1,
CollectionExpressionTypeKind
kind1, TypeSymbol elementType1,
3152
TypeSymbol t2,
CollectionExpressionTypeKind
kind2, TypeSymbol elementType2,
3158
if (kind1 is
CollectionExpressionTypeKind
.ReadOnlySpan &&
3159
kind2 is
CollectionExpressionTypeKind
.Span)
3166
if (kind1 is (
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span))
3173
Debug.Assert(kind1 is not (
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span));
3174
if (kind2 is not (
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span) &&
3188
CollectionExpressionTypeKind
kind1 = ConversionsBase.GetCollectionExpressionTypeKind(Compilation, t1, out TypeWithAnnotations elementType1);
3189
CollectionExpressionTypeKind
kind2 = ConversionsBase.GetCollectionExpressionTypeKind(Compilation, t2, out TypeWithAnnotations elementType2);
3191
if (kind1 is
CollectionExpressionTypeKind
.CollectionBuilder or
CollectionExpressionTypeKind
.ImplementsIEnumerable)
3196
if (kind2 is
CollectionExpressionTypeKind
.CollectionBuilder or
CollectionExpressionTypeKind
.ImplementsIEnumerable)
FlowAnalysis\NullableWalker.cs (5)
3854
static NullableFlowState getResultState(BoundCollectionExpression node,
CollectionExpressionTypeKind
collectionKind)
3856
if (collectionKind is
CollectionExpressionTypeKind
.CollectionBuilder)
3869
(
CollectionExpressionTypeKind
, TypeWithAnnotations) getCollectionDetails(BoundCollectionExpression node, TypeSymbol collectionType)
3871
var
collectionKind = ConversionsBase.GetCollectionExpressionTypeKind(this.compilation, collectionType, out var targetElementType);
3872
if (collectionKind is
CollectionExpressionTypeKind
.CollectionBuilder)
FlowAnalysis\NullableWalker.DebugVerifier.cs (2)
128
bool hasElementType = node.CollectionTypeKind is not (
CollectionExpressionTypeKind
.None or
CollectionExpressionTypeKind
.ImplementsIEnumerable);
Generated\BoundNodes.xml.Generated.cs (3)
6434
public BoundCollectionExpression(SyntaxNode syntax,
CollectionExpressionTypeKind
collectionTypeKind, BoundObjectOrCollectionValuePlaceholder? placeholder, BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundValuePlaceholder? collectionBuilderInvocationPlaceholder, BoundExpression? collectionBuilderInvocationConversion, bool wasTargetTyped, BoundUnconvertedCollectionExpression unconvertedCollectionExpression, ImmutableArray<BoundNode> elements, TypeSymbol type, bool hasErrors = false)
6453
public
CollectionExpressionTypeKind
CollectionTypeKind { get; }
6465
public BoundCollectionExpression Update(
CollectionExpressionTypeKind
collectionTypeKind, BoundObjectOrCollectionValuePlaceholder? placeholder, BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundValuePlaceholder? collectionBuilderInvocationPlaceholder, BoundExpression? collectionBuilderInvocationConversion, bool wasTargetTyped, BoundUnconvertedCollectionExpression unconvertedCollectionExpression, ImmutableArray<BoundNode> elements, TypeSymbol type)
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (20)
42
var
collectionTypeKind = conversion.GetCollectionExpressionTypeKind(out var elementType, out _, out _);
45
case
CollectionExpressionTypeKind
.ImplementsIEnumerable:
59
case
CollectionExpressionTypeKind
.Array:
60
case
CollectionExpressionTypeKind
.Span:
61
case
CollectionExpressionTypeKind
.ReadOnlySpan:
64
case
CollectionExpressionTypeKind
.CollectionBuilder:
86
case
CollectionExpressionTypeKind
.ArrayInterface:
239
CollectionExpressionTypeKind
.Array,
246
private BoundExpression VisitArrayOrSpanCollectionExpression(BoundCollectionExpression node,
CollectionExpressionTypeKind
collectionTypeKind, TypeSymbol collectionType, TypeWithAnnotations elementType)
263
Debug.Assert(collectionTypeKind is
CollectionExpressionTypeKind
.Span or
CollectionExpressionTypeKind
.ReadOnlySpan);
265
collectionTypeKind ==
CollectionExpressionTypeKind
.Span ? WellKnownType.System_Span_T : WellKnownType.System_ReadOnlySpan_T), TypeCompareKind.AllIgnoreOptions));
274
if (collectionTypeKind ==
CollectionExpressionTypeKind
.ReadOnlySpan &&
292
asReadOnlySpan: collectionTypeKind ==
CollectionExpressionTypeKind
.ReadOnlySpan);
298
collectionTypeKind ==
CollectionExpressionTypeKind
.Span ? WellKnownMember.System_Span_T__ctor_Array : WellKnownMember.System_ReadOnlySpan_T__ctor_Array)!).AsMember(spanType);
491
: VisitArrayOrSpanCollectionExpression(node,
CollectionExpressionTypeKind
.ReadOnlySpan, spanType, elementType);
516
internal static bool IsAllocatingRefStructCollectionExpression(BoundCollectionExpressionBase node,
CollectionExpressionTypeKind
collectionKind, TypeSymbol? elementType, CSharpCompilation compilation)
518
return collectionKind is
CollectionExpressionTypeKind
.Span or
CollectionExpressionTypeKind
.ReadOnlySpan
521
&& !(collectionKind ==
CollectionExpressionTypeKind
.ReadOnlySpan && ShouldUseRuntimeHelpersCreateSpan(node, elementType))
Operations\CSharpOperationFactory.cs (7)
1242
case
CollectionExpressionTypeKind
.None:
1243
case
CollectionExpressionTypeKind
.Array:
1244
case
CollectionExpressionTypeKind
.ArrayInterface:
1245
case
CollectionExpressionTypeKind
.ReadOnlySpan:
1246
case
CollectionExpressionTypeKind
.Span:
1248
case
CollectionExpressionTypeKind
.ImplementsIEnumerable:
1250
case
CollectionExpressionTypeKind
.CollectionBuilder:
Symbols\Source\SourceComplexParameterSymbol.cs (5)
1562
var
collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(DeclaringCompilation, Type, out TypeWithAnnotations elementTypeWithAnnotations);
1567
case
CollectionExpressionTypeKind
.None:
1571
case
CollectionExpressionTypeKind
.ImplementsIEnumerable:
1630
case
CollectionExpressionTypeKind
.CollectionBuilder:
1659
if (collectionTypeKind !=
CollectionExpressionTypeKind
.Array)