59 references to IsUnion
Microsoft.CodeAnalysis.CSharp (59)
Binder\Binder.ValueChecks.cs (4)
3943((!conversion.Conversion.IsUserDefined && !conversion.Conversion.IsUnion) || 4281Debug.Assert((!conversion.Conversion.IsUserDefined && !conversion.Conversion.IsUnion) || 4630if (conversion.Conversion is { IsUserDefined: true } or { IsUnion: true }) 5415if (conversion.Conversion is { IsUserDefined: true } or { IsUnion: true })
Binder\Binder_Conversions.cs (6)
116if (conversion.IsUnion && conversion.IsValid && !filterConversion(conversion.BestUnionConversionAnalysis!.SourceConversion, result)) 121if ((result as BoundConversion)?.ConversionGroupOpt?.Conversion.IsUnion == true && 122!conversion.IsUnion && 315if (conversion.IsUnion) 502else if (conversion.IsUnion) 2719Debug.Assert(conversion.IsUnion);
Binder\Binder_Expressions.cs (1)
2877Debug.Assert(conversion.IsUserDefined || conversion.IsUnion);
Binder\Binder_Patterns.cs (1)
1431Debug.Assert((!conversion.IsUserDefined && !conversion.IsUnion) || result == ConstantValue.False || result == ConstantValue.Bad);
Binder\Binder_Statements.cs (1)
2314Debug.Assert(conversion.IsUserDefined || conversion.IsUnion);
Binder\DecisionDagBuilder.cs (1)
837Debug.Assert(!conversion.IsUnion);
Binder\ForEachLoopBinder.cs (2)
649Debug.Assert(!collectionConversionClassification.IsUnion); 1567Debug.Assert(!collectionConversion.IsUnion);
Binder\Semantics\Conversions\Conversion.cs (9)
164Debug.Assert(!(this is { IsNullable: true, UnderlyingConversions: var underlying } && (underlying[0].IsUserDefined || underlying[0].IsUnion))); 464else if (IsUnion && BestUnionConversionAnalysis is { } analysis) 508else if (IsUnion && BestUnionConversionAnalysis is { } analysis) 622Debug.Assert(!this.IsUnion); 626return (!this.IsUserDefined && !this.IsUnion) || 1063/// or the method used to perform the conversion for a union conversion if <see cref="IsUnion"/> is true. 1184if (!IsUnion && _uncommonData is MethodUncommonData { _conversionResult: { Kind: UserDefinedConversionResultKind.Valid } conversionResult }) 1198if (IsUnion && _uncommonData is MethodUncommonData { _conversionResult: { Kind: UserDefinedConversionResultKind.Valid } conversionResult }) 1219var (methodSymbol, constrainedToType) = IsUserDefined || IsUnion ? (MethodSymbol, ConstrainedToType) : (null, null);
Binder\Semantics\Conversions\ConversionsBase.cs (3)
1910(conversion.IsUnion || conversion.IsUserDefined || HasTopLevelNullabilityImplicitConversion(source, destination)); 2385if (!conversion.IsUserDefined && !conversion.IsUnion && !conversions.HasTopLevelNullabilityImplicitConversion(s, d)) 2407if (!conversion.IsUserDefined && !conversion.IsUnion && !conversions.HasTopLevelNullabilityImplicitConversion(s, d))
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (1)
3052return conversion.Exists && (conversion.IsUnion || conversion.IsUserDefined || conversions.HasTopLevelNullabilityImplicitConversion(sourceWithAnnotations, destinationWithAnnotations));
Binder\SwitchBinder.cs (1)
271if (!conversion.IsUnion && !(caseExpression.IsLiteralNull() && SwitchGoverningType.StrippedType() is NamedTypeSymbol { IsUnionType: true }))
BoundTree\BoundConversion.cs (8)
145if (Conversion.IsUnion) 153Debug.Assert(ConversionGroupOpt?.Conversion.IsUnion == true); 157if (ConversionGroupOpt?.Conversion.IsUnion == true) 159if (Conversion.IsUnion) 208operandAsConversion.Conversion.IsUnion); 221Debug.Assert(ConversionGroupOpt?.Conversion.IsUnion == true); 227if (ConversionGroupOpt?.Conversion.IsUnion != true) 239if (current?.ConversionGroupOpt == ConversionGroupOpt && current.Conversion.IsUnion)
BoundTree\BoundNode.cs (3)
485if (conversionGroupOpt?.Conversion.IsUnion == true) 488while (possiblyUnion?.Conversion.IsUnion == false) 495Debug.Assert(possiblyUnion.Conversion.IsUnion);
Compilation\CSharpSemanticModel.cs (2)
3554if (conversion.ConversionGroupOpt?.Conversion.IsUnion == true && 3555conversion.Operand is BoundConversion { Conversion.IsUnion: true } unionConversion &&
FlowAnalysis\AbstractFlowPass.cs (1)
3087if (!conversion.IsUserDefined && !conversion.IsUnion)
FlowAnalysis\NullableWalker.cs (7)
6244Debug.Assert(!conversion.IsUnion); 6250Debug.Assert(!conversion.IsUnion); 6257if (conversion.IsUserDefined || conversion.IsUnion) 10589Debug.Assert(conversion.IsUnion); 10612if (conversionOpt is { ConversionGroupOpt.Conversion.IsUnion: true }) 11794if (node.OperandConversion is BoundConversion { Conversion: ({ IsUserDefined: true } or { IsUnion: true }) and { Method.ParameterCount: 1 } operandConversion }) 11799Debug.Assert(!operandConversion.IsUnion);
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (1)
231Debug.Assert(!conversion.IsUnion);
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (2)
954if (conversion.IsUnion) 1559Debug.Assert(conversion.IsUnion);
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (1)
512Debug.Assert(!receiverConversion.IsUnion);
Lowering\LocalRewriter\LocalRewriter_TupleBinaryOperator.cs (2)
199case BoundConversion { Conversion: { IsUserDefined: true } or { IsUnion: true } } conv when conv.ExplicitCastInCode || enclosingConversionWasExplicit: 411!(underlying[0].IsUserDefined || underlying[0].IsUnion): // It looks like this condition is always satisfied because neither user-defined, nor union conversion can be underlying for a Nullable conversion, but let's keep it just in case.
Operations\CSharpOperationFactory.cs (1)
1041else if (boundConversion.ConversionGroupOpt?.Conversion is { IsUnion: true, IsValid: true } &&
Symbols\Source\ParameterHelpers.cs (1)
990conversion.IsUnion ||