72 instantiations of BinaryOperatorSignature
Microsoft.CodeAnalysis.CSharp (53)
Binder\Binder_Operators.cs (6)
78new BinaryOperatorSignature( 249bestSignature = new BinaryOperatorSignature( 502new BinaryOperatorSignature( 1107resultSignature = new BinaryOperatorSignature(kind, leftType: null, rightType: null, CreateErrorType()); 1140resultSignature = new BinaryOperatorSignature(kind, leftType: null, rightType: null, CreateErrorType()); 1168resultSignature = new BinaryOperatorSignature(kind | BinaryOperatorKind.NullableNull, leftType: null, rightType: null,
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (40)
325operators.Add(new BinaryOperatorSignature(kind | BinaryOperatorKind.Delegate, delegateType, delegateType, Compilation.GetSpecialType(SpecialType.System_Boolean))); 331operators.Add(new BinaryOperatorSignature(kind | BinaryOperatorKind.Delegate, delegateType, delegateType, delegateType)); 497operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.EnumAndUnderlyingAddition, enumType, underlying, enumType)); 498operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.UnderlyingAndEnumAddition, underlying, enumType, enumType)); 499operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.LiftedEnumAndUnderlyingAddition, nullableEnum, nullableUnderlying, nullableEnum)); 500operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.LiftedUnderlyingAndEnumAddition, nullableUnderlying, nullableEnum, nullableEnum)); 505operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.EnumSubtraction, enumType, enumType, underlying)); 506operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.EnumAndUnderlyingSubtraction, enumType, underlying, enumType)); 507operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.LiftedEnumSubtraction, nullableEnum, nullableEnum, nullableUnderlying)); 508operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.LiftedEnumAndUnderlyingSubtraction, nullableEnum, nullableUnderlying, nullableEnum)); 518operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.EnumSubtraction, enumType, enumType, underlying) 520operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.EnumAndUnderlyingSubtraction, enumType, underlying, enumType) 522operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.LiftedEnumSubtraction, nullableEnum, nullableEnum, nullableUnderlying) 524operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.LiftedEnumAndUnderlyingSubtraction, nullableEnum, nullableUnderlying, nullableEnum) 528operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.UnderlyingAndEnumSubtraction, underlying, enumType, enumType) 530operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.LiftedUnderlyingAndEnumSubtraction, nullableUnderlying, nullableEnum, nullableEnum) 541operators.Add(new BinaryOperatorSignature(kind | BinaryOperatorKind.Enum, enumType, enumType, boolean)); 542operators.Add(new BinaryOperatorSignature(kind | BinaryOperatorKind.Lifted | BinaryOperatorKind.Enum, nullableEnum, nullableEnum, boolean)); 547operators.Add(new BinaryOperatorSignature(kind | BinaryOperatorKind.Enum, enumType, enumType, enumType)); 548operators.Add(new BinaryOperatorSignature(kind | BinaryOperatorKind.Lifted | BinaryOperatorKind.Enum, nullableEnum, nullableEnum, nullableEnum)); 564operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.PointerAndIntAddition, pointerType, Compilation.GetSpecialType(SpecialType.System_Int32), pointerType)); 565operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.PointerAndUIntAddition, pointerType, Compilation.GetSpecialType(SpecialType.System_UInt32), pointerType)); 566operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.PointerAndLongAddition, pointerType, Compilation.GetSpecialType(SpecialType.System_Int64), pointerType)); 567operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.PointerAndULongAddition, pointerType, Compilation.GetSpecialType(SpecialType.System_UInt64), pointerType)); 568operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.IntAndPointerAddition, Compilation.GetSpecialType(SpecialType.System_Int32), pointerType, pointerType)); 569operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.UIntAndPointerAddition, Compilation.GetSpecialType(SpecialType.System_UInt32), pointerType, pointerType)); 570operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.LongAndPointerAddition, Compilation.GetSpecialType(SpecialType.System_Int64), pointerType, pointerType)); 571operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.ULongAndPointerAddition, Compilation.GetSpecialType(SpecialType.System_UInt64), pointerType, pointerType)); 574operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.PointerAndIntSubtraction, pointerType, Compilation.GetSpecialType(SpecialType.System_Int32), pointerType)); 575operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.PointerAndUIntSubtraction, pointerType, Compilation.GetSpecialType(SpecialType.System_UInt32), pointerType)); 576operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.PointerAndLongSubtraction, pointerType, Compilation.GetSpecialType(SpecialType.System_Int64), pointerType)); 577operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.PointerAndULongSubtraction, pointerType, Compilation.GetSpecialType(SpecialType.System_UInt64), pointerType)); 578operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.PointerSubtraction, pointerType, pointerType, Compilation.GetSpecialType(SpecialType.System_Int64))); 596operators.Add(new BinaryOperatorSignature(kind | BinaryOperatorKind.Pointer, voidPointerType, voidPointerType, Compilation.GetSpecialType(SpecialType.System_Boolean))); 799operators.Add(new BinaryOperatorSignature(kind | BinaryOperatorKind.Object, @object, @object, Compilation.GetSpecialType(SpecialType.System_Boolean))); 1006operators.Add(new BinaryOperatorSignature(BinaryOperatorKind.UserDefined | kind, leftOperandType, rightOperandType, resultType, op, constrainedToTypeOpt)); 1025operators.Add(new BinaryOperatorSignature( 1031operators.Add(new BinaryOperatorSignature( 1557inferredCandidate = new BinaryOperatorSignature( 1566inferredCandidate = new BinaryOperatorSignature(BinaryOperatorKind.UserDefined | kind, leftOperandType, rightOperandType, resultType, method, constrainedToTypeOpt: null);
BoundTree\NullabilityRewriter.cs (1)
152op = new BinaryOperatorSignature(op.Kind, op.LeftType, op.RightType, op.ReturnType, GetUpdatedSymbol(node, op.Method), op.ConstrainedToTypeOpt);
Compilation\BuiltInOperators.cs (6)
696static readonlySpanOfByte => new BinaryOperatorSignature(BinaryOperatorKind.Utf8Addition, readonlySpanOfByte, readonlySpanOfByte, readonlySpanOfByte), 714return new BinaryOperatorSignature(kind, left, left, left); 716return new BinaryOperatorSignature(kind, left, RightType(kind), ReturnType(kind)); 725return new BinaryOperatorSignature(kind, left, rightType, left); 733return new BinaryOperatorSignature(kind, left, left, _compilation.GetSpecialType(SpecialType.System_Boolean)); 735return new BinaryOperatorSignature(kind, left, RightType(kind), ReturnType(kind));
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (19)
Semantics\OperatorTests.cs (19)
8163signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Dynamic, leftType, rightType, leftType); 8167signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Dynamic, leftType, rightType, rightType); 8176signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Delegate, 8183signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Delegate, 8189signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Object, compilation.ObjectType, compilation.ObjectType, 8200signature = new BinaryOperatorSignature(op | BinaryOperatorKind.String, leftType, compilation.ObjectType, leftType); 8205signature = new BinaryOperatorSignature(op | BinaryOperatorKind.String, compilation.ObjectType, rightType, rightType); 8214signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Pointer, leftType, symbol1.Parameters[1].Type.GetSymbol(), leftType); 8219signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Pointer, symbol1.Parameters[0].Type.GetSymbol(), rightType, rightType); 8226signature = new BinaryOperatorSignature(op | BinaryOperatorKind.String, leftType, symbol1.Parameters[1].Type.GetSymbol(), leftType); 8231signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Pointer, leftType, rightType, compilation.GetSpecialType(SpecialType.System_Int64)); 8238signature = new BinaryOperatorSignature(signature.Kind | BinaryOperatorKind.EnumAndUnderlying, leftType, signature.RightType, leftType); 8245signature = new BinaryOperatorSignature(signature.Kind | BinaryOperatorKind.EnumAndUnderlying, signature.LeftType, rightType, rightType); 8250signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Enum, leftType, rightType, leftType.EnumUnderlyingTypeOrSelf()); 8260signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Enum, leftType, rightType, compilation.GetSpecialType(SpecialType.System_Boolean)); 8267signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Enum, leftType, rightType, leftType); 8272signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Delegate, leftType, leftType, leftType); 8282signature = new BinaryOperatorSignature(op | BinaryOperatorKind.Pointer, 8831Assert.Equal(op, new BinaryOperatorSignature(op.Kind, op.LeftType, op.RightType, op.ReturnType, op.Method, constrainedToTypeOpt: null));
105 references to BinaryOperatorSignature
Microsoft.CodeAnalysis.CSharp (100)
Binder\Binder_Operators.cs (14)
54return new BoundCompoundAssignmentOperator(node, BinaryOperatorSignature.Error, left, right, 99return new BoundCompoundAssignmentOperator(node, BinaryOperatorSignature.Error, left, right, 113return new BoundCompoundAssignmentOperator(node, BinaryOperatorSignature.Error, left, right, 241BinaryOperatorSignature bestSignature = best.Signature; 327return new BoundCompoundAssignmentOperator(node, BinaryOperatorSignature.Error, left, right, 529BinaryOperatorSignature.Error, 978BinaryOperatorSignature signature; 1100out BinaryOperatorSignature resultSignature, out BinaryOperatorAnalysisResult best) 1125out BinaryOperatorSignature resultSignature, 1145var signature = best.Signature; 1449BinaryOperatorSignature signature = best.Signature; 1617BinaryOperatorSignature signature, 1636BinaryOperatorSignature signature, 1803BinaryOperatorSignature signature,
Binder\Semantics\Operators\BinaryOperatorAnalysisResult.cs (4)
18public readonly BinaryOperatorSignature Signature; 21private BinaryOperatorAnalysisResult(OperatorAnalysisResultKind kind, BinaryOperatorSignature signature, Conversion leftConversion, Conversion rightConversion) 54public static BinaryOperatorAnalysisResult Applicable(BinaryOperatorSignature signature, Conversion leftConversion, Conversion rightConversion) 59public static BinaryOperatorAnalysisResult Inapplicable(BinaryOperatorSignature signature, Conversion leftConversion, Conversion rightConversion)
Binder\Semantics\Operators\BinaryOperatorEasyOut.cs (1)
312BinaryOperatorSignature signature = this.Compilation.BuiltInOperators.GetSignature(easyOut);
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (36)
243var operators = ArrayBuilder<BinaryOperatorSignature>.GetInstance(); 265var operators = ArrayBuilder<BinaryOperatorSignature>.GetInstance(); 319ArrayBuilder<BinaryOperatorSignature> operators) 337ArrayBuilder<BinaryOperatorSignature> operators, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 477private void GetEnumOperation(BinaryOperatorKind kind, TypeSymbol enumType, BoundExpression right, ArrayBuilder<BinaryOperatorSignature> operators) 556ArrayBuilder<BinaryOperatorSignature> operators) 585ArrayBuilder<BinaryOperatorSignature> operators) 601private void GetEnumOperations(BinaryOperatorKind kind, BoundExpression left, BoundExpression right, ArrayBuilder<BinaryOperatorSignature> results) 690ArrayBuilder<BinaryOperatorSignature> results) 724var operators = ArrayBuilder<BinaryOperatorSignature>.GetInstance(); 737BinaryOperatorSignature op = operators[0]; 796private void GetReferenceEquality(BinaryOperatorKind kind, ArrayBuilder<BinaryOperatorSignature> operators) 804ArrayBuilder<BinaryOperatorSignature> operators, 811foreach (var op in operators) 838var existingSignature = result[i].Signature; 899var operators = ArrayBuilder<BinaryOperatorSignature>.GetInstance(); 953ArrayBuilder<BinaryOperatorSignature> operators) 961var operators2 = ArrayBuilder<BinaryOperatorSignature>.GetInstance(); 971foreach (BinaryOperatorSignature signature1 in operators) 989private static void GetDeclaredUserDefinedBinaryOperators(TypeSymbol? constrainedToTypeOpt, NamedTypeSymbol type, BinaryOperatorKind kind, string name, ArrayBuilder<BinaryOperatorSignature> operators) 1012void AddLiftedUserDefinedBinaryOperators(TypeSymbol? constrainedToTypeOpt, BinaryOperatorKind kind, ArrayBuilder<BinaryOperatorSignature> operators) 1215private BetterResult BetterOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1364private BetterResult MoreSpecificOperator(BinaryOperatorSignature op1, BinaryOperatorSignature op2, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1436var operators = ArrayBuilder<BinaryOperatorSignature>.GetInstance(); 1464static void getDeclaredUserDefinedBinaryOperatorsInScope(ArrayBuilder<NamedTypeSymbol> extensionDeclarationsInSingleScope, BinaryOperatorKind kind, string name1, string? name2Opt, ArrayBuilder<BinaryOperatorSignature> operators) 1475var operators2 = ArrayBuilder<BinaryOperatorSignature>.GetInstance(); 1478foreach (var op in operators2) 1495static void getDeclaredUserDefinedBinaryOperators(ArrayBuilder<NamedTypeSymbol> extensionDeclarationsInSingleScope, BinaryOperatorKind kind, string name, ArrayBuilder<BinaryOperatorSignature> operators) 1510void inferTypeArgumentsAndRemoveInapplicableToReceiverType(BinaryOperatorKind kind, BoundExpression left, BoundExpression right, ArrayBuilder<BinaryOperatorSignature> operators, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1514var candidate = operators[i]; 1550BinaryOperatorSignature inferredCandidate; 1584bool isApplicableToReceiver(in BinaryOperatorSignature candidate, BoundExpression left, BoundExpression right, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 1601static bool parameterMatchesReceiver(in BinaryOperatorSignature candidate, int paramIndex) 1610bool isOperandApplicableToReceiver(in BinaryOperatorSignature candidate, BoundExpression operand, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo)
Binder\Semantics\Operators\BinaryOperatorSignature.cs (10)
14internal struct BinaryOperatorSignature : IEquatable<BinaryOperatorSignature> 16public static BinaryOperatorSignature Error = default(BinaryOperatorSignature); 59public bool Equals(BinaryOperatorSignature other) 69public static bool operator ==(BinaryOperatorSignature x, BinaryOperatorSignature y) 74public static bool operator !=(BinaryOperatorSignature x, BinaryOperatorSignature y) 81return obj is BinaryOperatorSignature && Equals((BinaryOperatorSignature)obj);
BoundTree\Constructors.cs (2)
643BinaryOperatorSignature @operator, 657public BoundCompoundAssignmentOperator Update(BinaryOperatorSignature @operator,
BoundTree\NullabilityRewriter.cs (1)
148var op = node.Operator;
Compilation\BuiltInOperators.cs (28)
29private ImmutableArray<BinaryOperatorSignature>[][] _builtInOperators; 30private SingleInitNullable<BinaryOperatorSignature> _builtInUtf8Concatenation; 292private ImmutableArray<BinaryOperatorSignature> GetSignaturesFromBinaryOperatorKinds(int[] operatorKinds) 294var builder = ArrayBuilder<BinaryOperatorSignature>.GetInstance(); 303internal void GetSimpleBuiltInOperators(BinaryOperatorKind kind, ArrayBuilder<BinaryOperatorSignature> operators, bool skipNativeIntegerOperators) 307var logicalOperators = new ImmutableArray<BinaryOperatorSignature>[] 309ImmutableArray<BinaryOperatorSignature>.Empty, //multiplication 310ImmutableArray<BinaryOperatorSignature>.Empty, //addition 311ImmutableArray<BinaryOperatorSignature>.Empty, //subtraction 312ImmutableArray<BinaryOperatorSignature>.Empty, //division 313ImmutableArray<BinaryOperatorSignature>.Empty, //remainder 314ImmutableArray<BinaryOperatorSignature>.Empty, //left shift 315ImmutableArray<BinaryOperatorSignature>.Empty, //right shift 316ImmutableArray<BinaryOperatorSignature>.Empty, //equal 317ImmutableArray<BinaryOperatorSignature>.Empty, //not equal 318ImmutableArray<BinaryOperatorSignature>.Empty, //greater than 319ImmutableArray<BinaryOperatorSignature>.Empty, //less than 320ImmutableArray<BinaryOperatorSignature>.Empty, //greater than or equal 321ImmutableArray<BinaryOperatorSignature>.Empty, //less than or equal 322ImmutableArray.Create<BinaryOperatorSignature>(GetSignature(BinaryOperatorKind.LogicalBoolAnd)), //and 323ImmutableArray<BinaryOperatorSignature>.Empty, //xor 324ImmutableArray.Create<BinaryOperatorSignature>(GetSignature(BinaryOperatorKind.LogicalBoolOr)), //or 325ImmutableArray<BinaryOperatorSignature>.Empty, //unsigned right shift 328var nonLogicalOperators = new ImmutableArray<BinaryOperatorSignature>[] 675foreach (var op in _builtInOperators[kind.IsLogical() ? 1 : 0][kind.OperatorIndex()]) 690internal void GetUtf8ConcatenationBuiltInOperator(TypeSymbol readonlySpanOfByte, ArrayBuilder<BinaryOperatorSignature> operators) 695var utfConcatenation = _builtInUtf8Concatenation.Initialize( 702internal BinaryOperatorSignature GetSignature(BinaryOperatorKind kind)
Compilation\CSharpCompilation.cs (1)
4321var signature = this.BuiltInOperators.GetSignature(easyOutBinaryKind);
Generated\BoundNodes.xml.Generated.cs (3)
1767public BoundCompoundAssignmentOperator(SyntaxNode syntax, BinaryOperatorSignature @operator, BoundExpression left, BoundExpression right, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundValuePlaceholder? finalPlaceholder, BoundExpression? finalConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false) 1787public BinaryOperatorSignature Operator { get; } 1800public BoundCompoundAssignmentOperator Update(BinaryOperatorSignature @operator, BoundExpression left, BoundExpression right, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundValuePlaceholder? finalPlaceholder, BoundExpression? finalConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type)
Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests (1)
Emit\NumericIntPtrTests.cs (1)
1590var builder = ArrayBuilder<BinaryOperatorSignature>.GetInstance();
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (4)
Semantics\NativeIntegerTests.cs (1)
4830var builder = ArrayBuilder<BinaryOperatorSignature>.GetInstance();
Semantics\OperatorTests.cs (3)
3249"@operator" => ((BinaryOperatorSignature)child.Value).Kind.ToString(), 8157BinaryOperatorSignature signature; 8828var op = visitor.FirstNode.Operator;