104 references to CollectionExpressionTypeKind
Microsoft.CodeAnalysis.CSharp (104)
Binder\Binder.ValueChecks.cs (5)
4627
var
collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(_compilation, expr.Type, out var elementType);
4631
case
CollectionExpressionTypeKind
.ReadOnlySpan:
4634
case
CollectionExpressionTypeKind
.Span:
4636
case
CollectionExpressionTypeKind
.CollectionBuilder:
4658
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)
165
var
collectionTypeKind = GetCollectionExpressionTypeKind(Compilation, targetType, out TypeWithAnnotations elementTypeWithAnnotations);
169
case
CollectionExpressionTypeKind
.None:
172
case
CollectionExpressionTypeKind
.ImplementsIEnumerable:
173
case
CollectionExpressionTypeKind
.CollectionBuilder:
191
if (collectionTypeKind ==
CollectionExpressionTypeKind
.ImplementsIEnumerable)
Binder\Semantics\Conversions\ConversionsBase.cs (8)
1654
internal static
CollectionExpressionTypeKind
GetCollectionExpressionTypeKind(CSharpCompilation compilation, TypeSymbol destination, out TypeWithAnnotations elementType)
1663
return
CollectionExpressionTypeKind
.Array;
1668
return
CollectionExpressionTypeKind
.Span;
1672
return
CollectionExpressionTypeKind
.ReadOnlySpan;
1677
return
CollectionExpressionTypeKind
.CollectionBuilder;
1688
return
CollectionExpressionTypeKind
.ImplementsIEnumerable;
1692
return
CollectionExpressionTypeKind
.ArrayInterface;
1696
return
CollectionExpressionTypeKind
.None;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (37)
1334
var
collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(binder.Compilation, type, out elementType);
1338
case
CollectionExpressionTypeKind
.None:
1341
case
CollectionExpressionTypeKind
.ImplementsIEnumerable:
1342
case
CollectionExpressionTypeKind
.CollectionBuilder:
1352
if (collectionTypeKind ==
CollectionExpressionTypeKind
.ImplementsIEnumerable)
3032
var
kind1 = conv1.GetCollectionExpressionTypeKind(out TypeSymbol elementType1, out _, out _);
3033
var
kind2 = conv2.GetCollectionExpressionTypeKind(out TypeSymbol elementType2, out _, out _);
3062
TypeSymbol t1,
CollectionExpressionTypeKind
kind1, TypeSymbol elementType1, ImmutableArray<Conversion> underlyingElementConversions1,
3063
TypeSymbol t2,
CollectionExpressionTypeKind
kind2, TypeSymbol elementType2, ImmutableArray<Conversion> underlyingElementConversions2,
3074
var t1IsSpanType = kind1 is
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span;
3075
var t2IsSpanType = kind2 is
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span;
3155
case (
CollectionExpressionTypeKind
.ReadOnlySpan,
CollectionExpressionTypeKind
.Span):
3156
case (
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span, _) when IsSZArrayOrArrayInterface(t2, out _):
3159
case (
CollectionExpressionTypeKind
.Span,
CollectionExpressionTypeKind
.ReadOnlySpan):
3160
case (_,
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span) when IsSZArrayOrArrayInterface(t1, out _):
3169
TypeSymbol t1,
CollectionExpressionTypeKind
kind1, TypeSymbol elementType1,
3170
TypeSymbol t2,
CollectionExpressionTypeKind
kind2, TypeSymbol elementType2,
3176
if (kind1 is
CollectionExpressionTypeKind
.ReadOnlySpan &&
3177
kind2 is
CollectionExpressionTypeKind
.Span)
3184
if (kind1 is (
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span))
3191
Debug.Assert(kind1 is not (
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span));
3192
if (kind2 is not (
CollectionExpressionTypeKind
.ReadOnlySpan or
CollectionExpressionTypeKind
.Span) &&
3206
CollectionExpressionTypeKind
kind1 = ConversionsBase.GetCollectionExpressionTypeKind(Compilation, t1, out TypeWithAnnotations elementType1);
3207
CollectionExpressionTypeKind
kind2 = ConversionsBase.GetCollectionExpressionTypeKind(Compilation, t2, out TypeWithAnnotations elementType2);
3209
if (kind1 is
CollectionExpressionTypeKind
.CollectionBuilder or
CollectionExpressionTypeKind
.ImplementsIEnumerable)
3214
if (kind2 is
CollectionExpressionTypeKind
.CollectionBuilder or
CollectionExpressionTypeKind
.ImplementsIEnumerable)
FlowAnalysis\NullableWalker.cs (5)
3935
static NullableFlowState getResultState(BoundCollectionExpression node,
CollectionExpressionTypeKind
collectionKind)
3937
if (collectionKind is
CollectionExpressionTypeKind
.CollectionBuilder)
3950
(
CollectionExpressionTypeKind
, TypeWithAnnotations) getCollectionDetails(BoundCollectionExpression node, TypeSymbol collectionType)
3952
var
collectionKind = ConversionsBase.GetCollectionExpressionTypeKind(this.compilation, collectionType, out var targetElementType);
3953
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)
6432
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)
6451
public
CollectionExpressionTypeKind
CollectionTypeKind { get; }
6463
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)
1552
var
collectionTypeKind = ConversionsBase.GetCollectionExpressionTypeKind(DeclaringCompilation, Type, out TypeWithAnnotations elementTypeWithAnnotations);
1557
case
CollectionExpressionTypeKind
.None:
1561
case
CollectionExpressionTypeKind
.ImplementsIEnumerable:
1619
case
CollectionExpressionTypeKind
.CollectionBuilder:
1648
if (collectionTypeKind !=
CollectionExpressionTypeKind
.Array)