183 references to Kind
Microsoft.CodeAnalysis.CSharp (183)
Binder\Binder_Await.cs (1)
477
var result = conversion is { IsImplicit: true,
Kind
: ConversionKind.Identity or ConversionKind.ImplicitReference };
Binder\Binder_Conversions.cs (14)
184
if (conversion.
Kind
== ConversionKind.FunctionType)
200
if (conversion.
Kind
== ConversionKind.SwitchExpression)
216
if (conversion.
Kind
== ConversionKind.ConditionalExpression)
232
if (conversion.
Kind
== ConversionKind.InterpolatedString)
239
if (conversion.
Kind
== ConversionKind.InterpolatedStringHandler)
323
if (conversion.
Kind
== ConversionKind.DefaultLiteral)
333
if (conversion.
Kind
is ConversionKind.ImplicitReference or ConversionKind.ExplicitReference &&
942
Debug.Assert(_conversion.
Kind
is ConversionKind.NoConversion);
1605
switch (conversion.
Kind
)
2841
Debug.Assert(conversion.
Kind
== ConversionKind.FunctionType);
3100
switch (conversion.
Kind
)
3121
throw ExceptionUtilities.UnexpectedValue(conversion.
Kind
);
3844
if (conversion.
Kind
== ConversionKind.DefaultLiteral)
3863
switch (conversion.
Kind
)
Binder\Binder_Deconstruct.cs (1)
309
Debug.Assert(nestedConversion.
Kind
== ConversionKind.Deconstruction);
Binder\Binder_Operators.cs (8)
500
if (conversion.
Kind
is not ConversionKind.Identity)
502
Debug.Assert(conversion.
Kind
is ConversionKind.ImplicitReference);
3606
if (conversion.
Kind
is not ConversionKind.Identity)
3608
Debug.Assert(conversion.
Kind
is ConversionKind.ImplicitReference);
4988
return new BoundIsOperator(node, operand, typeExpression, conv.
Kind
, resultType);
5009
ReportIsOperatorDiagnostics(node, diagnostics, inputType, targetType, conversion.
Kind
, operand.ConstantValueOpt);
5010
return new BoundIsOperator(node, operand, typeExpression, conversion.
Kind
, resultType);
5506
bool hasErrors = ReportAsOperatorConversionDiagnostics(node, diagnostics, this.Compilation, operandType, targetType, conversion.
Kind
, operand.ConstantValueOpt);
Binder\Binder_Patterns.cs (1)
1429
ConstantValue result = Binder.GetIsOperatorConstantResult(expressionType, patternType, conversion.
Kind
, operandConstantValue, operandCouldBeNull);
Binder\Binder_Statements.cs (4)
1993
if (conversion.
Kind
!= ConversionKind.Identity)
2295
else if (conversion.
Kind
== ConversionKind.ExplicitNumeric && sourceConstantValueOpt != null && sourceConstantValueOpt != ConstantValue.Bad &&
2723
if (conversion.
Kind
== ConversionKind.Identity)
3214
if (conversion.
Kind
!= ConversionKind.Identity)
Binder\ForEachLoopBinder.cs (2)
486
if (elementConversionClassification.
Kind
!= ConversionKind.Identity && IterationVariable.RefKind is RefKind.Ref or RefKind.RefReadOnly)
595
(collectionConversionClassification.
Kind
== ConversionKind.ExplicitReference && collectionExpr.Type.SpecialType == SpecialType.System_String));
Binder\RefSafetyAnalysis.cs (1)
1132
Debug.Assert(conversion.
Kind
== ConversionKind.Deconstruction);
Binder\Semantics\Conversions\Conversion.cs (48)
225
return new Conversion(this.
Kind
, conversionMethod, isExtensionMethod: IsExtensionMethod);
380
return nestedConversion.
Kind
switch
643
return
Kind
!= ConversionKind.NoConversion;
657
return
Kind
.IsImplicitConversion();
686
return
Kind
== ConversionKind.Identity;
697
return
Kind
== ConversionKind.StackAllocToPointerType ||
Kind
== ConversionKind.StackAllocToSpanType;
711
return
Kind
== ConversionKind.ImplicitNumeric ||
Kind
== ConversionKind.ExplicitNumeric;
725
return
Kind
== ConversionKind.ImplicitEnumeration ||
Kind
== ConversionKind.ExplicitEnumeration;
736
return
Kind
== ConversionKind.ImplicitThrow;
747
return
Kind
== ConversionKind.ObjectCreation;
754
public bool IsCollectionExpression =>
Kind
== ConversionKind.CollectionExpression;
763
return
Kind
== ConversionKind.SwitchExpression;
774
return
Kind
== ConversionKind.ConditionalExpression;
789
return
Kind
== ConversionKind.InterpolatedString;
800
return
Kind
== ConversionKind.InterpolatedStringHandler;
811
return
Kind
== ConversionKind.InlineArray;
825
return
Kind
== ConversionKind.ImplicitNullable ||
Kind
== ConversionKind.ExplicitNullable;
836
return
Kind
== ConversionKind.ImplicitTupleLiteral ||
Kind
== ConversionKind.ExplicitTupleLiteral;
847
return
Kind
== ConversionKind.ImplicitTuple ||
Kind
== ConversionKind.ExplicitTuple;
861
return
Kind
== ConversionKind.ImplicitReference ||
Kind
== ConversionKind.ExplicitReference;
875
return
Kind
is ConversionKind.ImplicitSpan or ConversionKind.ExplicitSpan;
889
return
Kind
.IsUserDefinedConversion();
901
return
Kind
.IsUnionConversion();
915
return
Kind
== ConversionKind.Boxing;
929
return
Kind
== ConversionKind.Unboxing;
943
return
Kind
== ConversionKind.NullLiteral;
954
return
Kind
== ConversionKind.DefaultLiteral;
968
return
Kind
.IsDynamic();
982
return
Kind
== ConversionKind.ImplicitConstant;
996
return
Kind
== ConversionKind.AnonymousFunction;
1010
return
Kind
== ConversionKind.MethodGroup;
1035
return this.
Kind
.IsPointerConversion();
1056
return
Kind
== ConversionKind.IntPtr;
1113
return this.
Kind
== ConversionKind.NoConversion ? LookupResultKind.Empty : LookupResultKind.Viable;
1224
/// Returns a string that represents the <see cref="
Kind
"/> of the conversion.
1226
/// <returns>A string that represents the <see cref="
Kind
"/> of the conversion.</returns>
1229
return this.
Kind
.ToString();
1249
return this.
Kind
== other.
Kind
&& Equals(this._uncommonData, other._uncommonData);
1258
return Hash.Combine(this._uncommonData, (int)this.
Kind
);
1310
return new TreeDumperNode("conversion", self.
Kind
, sub);
Binder\Semantics\Conversions\ConversionsBase.cs (12)
647
Debug.Assert(isStandardImplicitConversionFromExpression(conversion.
Kind
));
662
{
Kind
: ConversionKind.CollectionExpression } => true,
663
{
Kind
: ConversionKind.ImplicitNullable, UnderlyingConversions: [{
Kind
: ConversionKind.CollectionExpression }] } => true,
698
Debug.Assert(conversion.
Kind
== ConversionKind.NoConversion || IsStandardImplicitConversionFromType(conversion.
Kind
));
902
switch (oppositeConversion.
Kind
)
947
throw ExceptionUtilities.UnexpectedValue(oppositeConversion.
Kind
);
1026
switch (implicitConversion.
Kind
)
1909
return conversion.
Kind
!= ConversionKind.NoConversion &&
2019
switch (conversion.
Kind
)
2041
Debug.Assert(conversion.
Kind
== ConversionKind.NoConversion);
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (1)
606
return IsEncompassingImplicitConversionKind(result.
Kind
) ? result : Conversion.NoConversion;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (14)
2218
if (allSame && Conversions.ClassifyImplicitConversionFromType(type1Normalized, type2Normalized, ref useSiteInfo).
Kind
!= ConversionKind.Identity)
2227
if (Conversions.ClassifyImplicitConversionFromType(type1Normalized, type2Normalized, ref useSiteInfo).
Kind
!= ConversionKind.Identity)
2340
if (Conversions.ClassifyImplicitConversionFromType(type1Normalized, type2Normalized, ref useSiteInfo).
Kind
!= ConversionKind.Identity)
2715
return conversionsOpt.Any(static c => c.
Kind
== ConversionKind.FunctionType);
2925
return conv1.
Kind
== ConversionKind.Identity ? BetterResult.Left : BetterResult.Neither;
2929
return conv2.
Kind
== ConversionKind.Identity ? BetterResult.Right : BetterResult.Neither;
2979
switch ((conv1.
Kind
, conv2.
Kind
))
2990
switch ((conv1.
Kind
, conv2.
Kind
))
3028
if (conv1.
Kind
== ConversionKind.CollectionExpression &&
3029
conv2.
Kind
== ConversionKind.CollectionExpression)
3034
switch ((conv1.
Kind
, conv2.
Kind
))
Binder\SwitchBinder.cs (1)
439
Debug.Assert(conversion.
Kind
== ConversionKind.ImplicitUserDefined);
BoundTree\BoundConversion.cs (2)
85
Debug.Assert(ConversionsBase.IsEncompassingImplicitConversionKind(Conversion.
Kind
) ||
191
Debug.Assert(ConversionsBase.IsEncompassingImplicitConversionKind(Conversion.
Kind
));
BoundTree\BoundExpression.cs (1)
473
get { return this.Conversion.
Kind
; }
Compilation\CSharpSemanticModel.cs (2)
2185
else if (highestBoundExpr is BoundConversion { ConversionKind: ConversionKind.ImplicitNullable, Conversion.UnderlyingConversions: [{
Kind
: ConversionKind.CollectionExpression }] } boundConversion)
2209
if (conversion.
Kind
== ConversionKind.AnonymousFunction)
Compilation\DeconstructionInfo.cs (3)
38
return _conversion.
Kind
== ConversionKind.Deconstruction
51
return _conversion.
Kind
== ConversionKind.Deconstruction
64
if (_conversion.
Kind
!= ConversionKind.Deconstruction)
FlowAnalysis\NullableWalker.cs (18)
2195
switch (conv.Conversion.
Kind
)
2652
var conversionKind = conversion.Conversion.
Kind
;
2908
Debug.Assert(conversion.
Kind
is ConversionKind.Identity or ConversionKind.ImplicitReference);
5769
if (conversion.
Kind
is ConversionKind.Identity or ConversionKind.ImplicitReference)
8221
if (conversion is { IsValid: true,
Kind
: ConversionKind.ImplicitUserDefined }) // Looking at unit-tests ImplicitConversions_07 and ImplicitConversion_Params, the behavior looks good without special handling for Union conversions here.
9506
Debug.Assert(conversion.
Kind
== ConversionKind.ImplicitTuple || conversion.
Kind
== ConversionKind.ExplicitTuple);
9527
switch (conversion.
Kind
)
9870
switch (conversion.
Kind
)
10107
switch (conversion.
Kind
)
10134
switch (conversion.
Kind
)
10442
Debug.Assert(conversion.
Kind
== ConversionKind.ExplicitUserDefined || conversion.
Kind
== ConversionKind.ImplicitUserDefined);
11427
Debug.Assert(conversion.
Kind
== ConversionKind.Deconstruction);
11609
underlyingConversion.
Kind
== ConversionKind.ImplicitNullable &&
12434
(conversion.
Kind
== ConversionKind.ExplicitReference && resultType.SpecialType == SpecialType.System_String))
12632
if (conversion.
Kind
== ConversionKind.NoConversion)
13161
switch (BoundNode.GetConversion(node.OperandConversion, node.OperandPlaceholder).
Kind
)
FlowAnalysis\NullableWalker_Patterns.cs (2)
710
switch (_conversions.WithNullability(false).ClassifyConversionFromType(e.Input.Type, e.Type, isChecked: false, ref discardedUseSiteInfo).
Kind
)
874
return _conversions.WithNullability(false).ClassifyConversionFromType(derivedType, baseType, isChecked: false, ref discardedUseSiteInfo).
Kind
switch
Lowering\ClosureConversion\ExpressionLambdaRewriter.cs (1)
628
var kind = _bound.Compilation.Conversions.ClassifyConversionFromType(oldType, newType, isChecked: false, ref useSiteInfo).
Kind
;
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (1)
213
switch (conversion.
Kind
)
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (2)
236
if (conversion.
Kind
== ConversionKind.ExplicitNullable &&
520
(conv.IsIdentity || conv.
Kind
== ConversionKind.ImplicitReference || conv.IsBoxing) &&
Lowering\LocalRewriter\LocalRewriter_AsOperator.cs (1)
51
ConstantValue constantValue = Binder.GetAsOperatorConstantResult(rewrittenOperand.Type, rewrittenType, conversion.
Kind
, rewrittenOperand.ConstantValueOpt);
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (6)
31
Debug.Assert(conversion.
Kind
== ConversionKind.CollectionExpression);
216
if (conversion.
Kind
is not (ConversionKind.Identity or ConversionKind.ImplicitReference))
223
return conversion.
Kind
is ConversionKind.Identity or ConversionKind.ImplicitReference;
383
var conversionKind = compilation.Conversions.ClassifyConversionFromType(arrayType, constructorParameterType, isChecked: false, ref discardedUseSiteInfo).
Kind
;
769
? spreadElementConversion.
Kind
is ConversionKind.Identity or ConversionKind.ImplicitReference
770
: spreadElementConversion.
Kind
is ConversionKind.Identity;
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (14)
61
case ConversionKind.ImplicitNullable when node.Conversion.UnderlyingConversions[0].
Kind
is ConversionKind.CollectionExpression:
316
switch (conversion.
Kind
)
441
return RewriteDecimalConversion(syntax, rewrittenOperand, rewrittenOperand.Type, rewrittenType, @checked, conversion.
Kind
.IsImplicitConversion(), constantValueOpt);
544
return _dynamicFactory.MakeDynamicConversion(rewrittenOperand, explicitCastInCode || conversion.
Kind
== ConversionKind.ExplicitDynamic, conversion.IsArrayIndex, @checked, rewrittenType).ToExpression();
661
Debug.Assert(conversion.
Kind
is ConversionKind.ImplicitSpan);
693
Debug.Assert(conversion.
Kind
is ConversionKind.ImplicitSpan);
712
Debug.Assert(conversion.
Kind
is ConversionKind.ImplicitSpan);
887
if (conversion.
Kind
.IsUserDefinedConversion())
1076
case BoundConversion { Conversion: {
Kind
: ConversionKind.ImplicitNullable }, Operand: var convertedArgument }
1081
case BoundConversion { Conversion: {
Kind
: ConversionKind.ImplicitNullable, UnderlyingConversions: var underlying }, Operand: var convertedArgument } conversion
1082
when underlying.Length == 1 && underlying[0].
Kind
== ConversionKind.ImplicitTuple && !convertedArgument.Type!.IsNullableType():
1199
var conversionKind = conversion.
Kind
.IsImplicitConversion() ? ConversionKind.ImplicitUserDefined : ConversionKind.ExplicitUserDefined;
1871
switch (conversion.
Kind
)
1910
throw ExceptionUtilities.UnexpectedValue(conversion.
Kind
);
Lowering\LocalRewriter\LocalRewriter_DeconstructionAssignmentOperator.cs (4)
20
Debug.Assert(right.Conversion.
Kind
== ConversionKind.Deconstruction);
219
Debug.Assert(conversion.
Kind
== ConversionKind.Deconstruction);
307
if ((tupleConversion.Conversion.
Kind
== ConversionKind.ImplicitTupleLiteral || tupleConversion.Conversion.
Kind
== ConversionKind.Identity)
Lowering\LocalRewriter\LocalRewriter_NullCoalescingOperator.cs (2)
92
BoundNode.GetConversion(leftConversion, leftPlaceholder) is {
Kind
: ConversionKind.Identity or ConversionKind.ImplicitReference })
99
if (BoundNode.GetConversion(leftConversion, leftPlaceholder) is { IsIdentity: true } or {
Kind
: ConversionKind.ExplicitNullable })
Lowering\LocalRewriter\LocalRewriter_StringInterpolation.cs (1)
240
if (arg is BoundConversion { Conversion: {
Kind
: ConversionKind.InterpolatedStringHandler }, ExplicitCastInCode: false, Operand: var operand })
Lowering\LocalRewriter\LocalRewriter_TupleBinaryOperator.cs (6)
49
case BoundConversion { Conversion: {
Kind
: ConversionKind.Identity }, Operand: var o }:
51
case BoundConversion { Conversion: {
Kind
: ConversionKind.ImplicitTupleLiteral }, Operand: var o }:
56
case BoundConversion { Conversion: {
Kind
: var kind } c, Operand: var o } conversion when
89
case BoundConversion { Conversion: {
Kind
: var kind }, Operand: var o } when
193
case BoundConversion { Conversion: {
Kind
: ConversionKind.DefaultLiteral } }: // This conversion can be performed lazily, but need not be saved. It is treated as non-side-effecting.
196
case BoundConversion { Conversion: {
Kind
: var conversionKind } conversion } when conversionMustBePerformedOnOriginalExpression(conversionKind):
Lowering\SyntheticBoundNodeFactory.cs (7)
576
Debug.Assert(conversion.
Kind
!= ConversionKind.NoConversion);
577
CodeGen.CodeGenerator.AssertIsEmitConversionKind(conversion.
Kind
);
578
if (conversion.
Kind
!= ConversionKind.Identity)
664
return new BoundIsOperator(this.Syntax, operand, Type(type), c.
Kind
, SpecialType(Microsoft.CodeAnalysis.SpecialType.System_Boolean)) { WasCompilerGenerated = true };
1512
CodeGen.CodeGenerator.AssertIsEmitConversionKind(c.
Kind
);
1522
CodeGen.CodeGenerator.AssertIsEmitConversionKind(conversion.
Kind
);
1529
if (conversion.
Kind
== ConversionKind.ImplicitReference && arg.IsLiteralNull())
Symbols\Source\SourceComplexParameterSymbol.cs (1)
1039
else if (!compilation.Conversions.ClassifyConversionFromType((TypeSymbol)arg.TypeInternal, this.Type, isChecked: false, ref useSiteInfo).
Kind
.IsImplicitConversion())
Symbols\Source\SourceMemberContainerSymbol_ImplementationChecks.cs (1)
1403
return conversions.ClassifyImplicitConversionFromType(sourceType, targetType, ref discardedUseSiteInfo).
Kind
!= ConversionKind.NoConversion;