/// <summary> /// Creates a method symbol that can be used to describe an operator declaration. /// </summary> public static IMethodSymbol CreateOperatorSymbol( ImmutableArray <AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers, ITypeSymbol returnType, CodeGenerationOperatorKind operatorKind, ImmutableArray <IParameterSymbol> parameters, ImmutableArray <SyntaxNode> statements = default, ImmutableArray <AttributeData> returnTypeAttributes = default) { var expectedParameterCount = CodeGenerationOperatorSymbol.GetParameterCount(operatorKind); if (parameters.Length != expectedParameterCount) { var message = expectedParameterCount == 1 ? WorkspacesResources.Invalid_number_of_parameters_for_unary_operator : WorkspacesResources.Invalid_number_of_parameters_for_binary_operator; throw new ArgumentException(message, nameof(parameters)); } var result = new CodeGenerationOperatorSymbol(null, attributes, accessibility, modifiers, returnType, operatorKind, parameters, returnTypeAttributes); CodeGenerationMethodInfo.Attach(result, modifiers.IsNew, modifiers.IsUnsafe, modifiers.IsPartial, modifiers.IsAsync, statements, handlesExpressions: default); return(result); }
public CodeGenerationOperatorSymbol( INamedTypeSymbol containingType, ImmutableArray <AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers, ITypeSymbol returnType, CodeGenerationOperatorKind operatorKind, ImmutableArray <IParameterSymbol> parameters, ImmutableArray <AttributeData> returnTypeAttributes, string documentationCommentXml ) : base( containingType, attributes, accessibility, modifiers, returnType, refKind: RefKind.None, explicitInterfaceImplementations: default, GetMetadataName(operatorKind), typeParameters: ImmutableArray <ITypeParameterSymbol> .Empty, parameters, returnTypeAttributes, documentationCommentXml ) { }
public static int GetParameterCount(CodeGenerationOperatorKind operatorKind) { switch (operatorKind) { case CodeGenerationOperatorKind.Addition: case CodeGenerationOperatorKind.BitwiseAnd: case CodeGenerationOperatorKind.BitwiseOr: case CodeGenerationOperatorKind.Concatenate: case CodeGenerationOperatorKind.Division: case CodeGenerationOperatorKind.Equality: case CodeGenerationOperatorKind.ExclusiveOr: case CodeGenerationOperatorKind.Exponent: case CodeGenerationOperatorKind.GreaterThan: case CodeGenerationOperatorKind.GreaterThanOrEqual: case CodeGenerationOperatorKind.Inequality: case CodeGenerationOperatorKind.IntegerDivision: case CodeGenerationOperatorKind.LeftShift: case CodeGenerationOperatorKind.LessThan: case CodeGenerationOperatorKind.LessThanOrEqual: case CodeGenerationOperatorKind.Like: case CodeGenerationOperatorKind.Modulus: case CodeGenerationOperatorKind.Multiplication: case CodeGenerationOperatorKind.RightShift: case CodeGenerationOperatorKind.Subtraction: return(2); case CodeGenerationOperatorKind.Increment: case CodeGenerationOperatorKind.Decrement: case CodeGenerationOperatorKind.False: case CodeGenerationOperatorKind.LogicalNot: case CodeGenerationOperatorKind.OnesComplement: case CodeGenerationOperatorKind.True: case CodeGenerationOperatorKind.UnaryPlus: case CodeGenerationOperatorKind.UnaryNegation: return(1); default: Debug.Fail("This switch statement should handle all possible CodeGenerationOperatorKinds"); return(0); } }
public static int GetParameterCount(CodeGenerationOperatorKind operatorKind) { switch (operatorKind) { case CodeGenerationOperatorKind.Addition: case CodeGenerationOperatorKind.BitwiseAnd: case CodeGenerationOperatorKind.BitwiseOr: case CodeGenerationOperatorKind.Concatenate: case CodeGenerationOperatorKind.Division: case CodeGenerationOperatorKind.Equality: case CodeGenerationOperatorKind.ExclusiveOr: case CodeGenerationOperatorKind.Exponent: case CodeGenerationOperatorKind.GreaterThan: case CodeGenerationOperatorKind.GreaterThanOrEqual: case CodeGenerationOperatorKind.Inequality: case CodeGenerationOperatorKind.IntegerDivision: case CodeGenerationOperatorKind.LeftShift: case CodeGenerationOperatorKind.LessThan: case CodeGenerationOperatorKind.LessThanOrEqual: case CodeGenerationOperatorKind.Like: case CodeGenerationOperatorKind.Modulus: case CodeGenerationOperatorKind.Multiplication: case CodeGenerationOperatorKind.RightShift: case CodeGenerationOperatorKind.UnsignedRightShift: case CodeGenerationOperatorKind.Subtraction: return(2); case CodeGenerationOperatorKind.Increment: case CodeGenerationOperatorKind.Decrement: case CodeGenerationOperatorKind.False: case CodeGenerationOperatorKind.LogicalNot: case CodeGenerationOperatorKind.OnesComplement: case CodeGenerationOperatorKind.True: case CodeGenerationOperatorKind.UnaryPlus: case CodeGenerationOperatorKind.UnaryNegation: return(1); default: throw ExceptionUtilities.UnexpectedValue(operatorKind); } }
public CodeGenerationOperatorSymbol( INamedTypeSymbol containingType, IList<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers, ITypeSymbol returnType, CodeGenerationOperatorKind operatorKind, IList<IParameterSymbol> parameters, IList<AttributeData> returnTypeAttributes) : base(containingType, attributes, accessibility, modifiers, returnType: returnType, explicitInterfaceSymbolOpt: null, name: GetMetadataName(operatorKind), typeParameters: SpecializedCollections.EmptyList<ITypeParameterSymbol>(), parameters: parameters, returnTypeAttributes: returnTypeAttributes) { }
public CodeGenerationOperatorSymbol( INamedTypeSymbol containingType, IList <AttributeData> attributes, Accessibility accessibility, SymbolModifiers modifiers, ITypeSymbol returnType, CodeGenerationOperatorKind operatorKind, IList <IParameterSymbol> parameters, IList <AttributeData> returnTypeAttributes) : base(containingType, attributes, accessibility, modifiers, returnType: returnType, explicitInterfaceSymbolOpt: null, name: GetMetadataName(operatorKind), typeParameters: SpecializedCollections.EmptyList <ITypeParameterSymbol>(), parameters: parameters, returnTypeAttributes: returnTypeAttributes) { }
internal static async Task TestAddUnsupportedOperatorAsync( string initial, CodeGenerationOperatorKind operatorKind, Accessibility accessibility = Accessibility.Public, DeclarationModifiers modifiers = default(DeclarationModifiers), Type returnType = null, IList <Func <SemanticModel, IParameterSymbol> > parameters = null, string statements = null, CodeGenerationOptions codeGenerationOptions = default(CodeGenerationOptions), bool compareTokens = true) { using (var context = await TestContext.CreateAsync(initial, initial, ignoreResult: true)) { var parameterSymbols = GetParameterSymbols(parameters, context); var parsedStatements = context.ParseStatements(statements); var method = CodeGenerationSymbolFactory.CreateOperatorSymbol( null, accessibility, modifiers, GetTypeSymbol(returnType)(context.SemanticModel), operatorKind, parameterSymbols, parsedStatements); ArgumentException exception = null; try { await context.Service.AddMethodAsync(context.Solution, (INamedTypeSymbol)context.GetDestination(), method, codeGenerationOptions); } catch (ArgumentException e) { exception = e; } var expectedMessage = string.Format(WorkspacesResources.CannotCodeGenUnsupportedOperator, method.Name); Assert.True(exception != null && exception.Message.StartsWith(expectedMessage, StringComparison.Ordinal), string.Format("\r\nExpected exception: {0}\r\nActual exception: {1}\r\n", expectedMessage, exception == null ? "no exception" : exception.Message)); } }
public static int GetParameterCount(CodeGenerationOperatorKind operatorKind) { switch (operatorKind) { case CodeGenerationOperatorKind.Addition: case CodeGenerationOperatorKind.BitwiseAnd: case CodeGenerationOperatorKind.BitwiseOr: case CodeGenerationOperatorKind.Concatenate: case CodeGenerationOperatorKind.Division: case CodeGenerationOperatorKind.Equality: case CodeGenerationOperatorKind.ExclusiveOr: case CodeGenerationOperatorKind.Exponent: case CodeGenerationOperatorKind.GreaterThan: case CodeGenerationOperatorKind.GreaterThanOrEqual: case CodeGenerationOperatorKind.Inequality: case CodeGenerationOperatorKind.IntegerDivision: case CodeGenerationOperatorKind.LeftShift: case CodeGenerationOperatorKind.LessThan: case CodeGenerationOperatorKind.LessThanOrEqual: case CodeGenerationOperatorKind.Like: case CodeGenerationOperatorKind.Modulus: case CodeGenerationOperatorKind.Multiplication: case CodeGenerationOperatorKind.RightShift: case CodeGenerationOperatorKind.Subtraction: return 2; case CodeGenerationOperatorKind.Increment: case CodeGenerationOperatorKind.Decrement: case CodeGenerationOperatorKind.False: case CodeGenerationOperatorKind.LogicalNot: case CodeGenerationOperatorKind.OnesComplement: case CodeGenerationOperatorKind.True: case CodeGenerationOperatorKind.UnaryPlus: case CodeGenerationOperatorKind.UnaryNegation: return 1; default: Debug.Fail("This switch statement should handle all possible CodeGenerationOperatorKinds"); return 0; } }
public CodeGenerationOperatorSymbol( INamedTypeSymbol containingType, ImmutableArray <AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers, ITypeSymbol returnType, CodeGenerationOperatorKind operatorKind, ImmutableArray <IParameterSymbol> parameters, ImmutableArray <AttributeData> returnTypeAttributes) : base(containingType, attributes, accessibility, modifiers, returnType: returnType, returnsByRef: false, explicitInterfaceSymbolOpt: null, name: GetMetadataName(operatorKind), typeParameters: ImmutableArray <ITypeParameterSymbol> .Empty, parameters: parameters, returnTypeAttributes: returnTypeAttributes) { }
public static int GetParameterCount(CodeGenerationOperatorKind operatorKind) { switch (operatorKind) { case CodeGenerationOperatorKind.Addition: case CodeGenerationOperatorKind.BitwiseAnd: case CodeGenerationOperatorKind.BitwiseOr: case CodeGenerationOperatorKind.Concatenate: case CodeGenerationOperatorKind.Division: case CodeGenerationOperatorKind.Equality: case CodeGenerationOperatorKind.ExclusiveOr: case CodeGenerationOperatorKind.Exponent: case CodeGenerationOperatorKind.GreaterThan: case CodeGenerationOperatorKind.GreaterThanOrEqual: case CodeGenerationOperatorKind.Inequality: case CodeGenerationOperatorKind.IntegerDivision: case CodeGenerationOperatorKind.LeftShift: case CodeGenerationOperatorKind.LessThan: case CodeGenerationOperatorKind.LessThanOrEqual: case CodeGenerationOperatorKind.Like: case CodeGenerationOperatorKind.Modulus: case CodeGenerationOperatorKind.Multiplication: case CodeGenerationOperatorKind.RightShift: case CodeGenerationOperatorKind.Subtraction: return 2; case CodeGenerationOperatorKind.Increment: case CodeGenerationOperatorKind.Decrement: case CodeGenerationOperatorKind.False: case CodeGenerationOperatorKind.LogicalNot: case CodeGenerationOperatorKind.OnesComplement: case CodeGenerationOperatorKind.True: case CodeGenerationOperatorKind.UnaryPlus: case CodeGenerationOperatorKind.UnaryNegation: return 1; default: throw ExceptionUtilities.UnexpectedValue(operatorKind); } }
private static string GetMetadataName(CodeGenerationOperatorKind operatorKind) { switch (operatorKind) { case CodeGenerationOperatorKind.Addition: return WellKnownMemberNames.AdditionOperatorName; case CodeGenerationOperatorKind.BitwiseAnd: return WellKnownMemberNames.BitwiseAndOperatorName; case CodeGenerationOperatorKind.BitwiseOr: return WellKnownMemberNames.BitwiseOrOperatorName; case CodeGenerationOperatorKind.Concatenate: return WellKnownMemberNames.ConcatenateOperatorName; case CodeGenerationOperatorKind.Decrement: return WellKnownMemberNames.DecrementOperatorName; case CodeGenerationOperatorKind.Division: return WellKnownMemberNames.DivisionOperatorName; case CodeGenerationOperatorKind.Equality: return WellKnownMemberNames.EqualityOperatorName; case CodeGenerationOperatorKind.ExclusiveOr: return WellKnownMemberNames.ExclusiveOrOperatorName; case CodeGenerationOperatorKind.Exponent: return WellKnownMemberNames.ExponentOperatorName; case CodeGenerationOperatorKind.False: return WellKnownMemberNames.FalseOperatorName; case CodeGenerationOperatorKind.GreaterThan: return WellKnownMemberNames.GreaterThanOperatorName; case CodeGenerationOperatorKind.GreaterThanOrEqual: return WellKnownMemberNames.GreaterThanOrEqualOperatorName; case CodeGenerationOperatorKind.Increment: return WellKnownMemberNames.IncrementOperatorName; case CodeGenerationOperatorKind.Inequality: return WellKnownMemberNames.InequalityOperatorName; case CodeGenerationOperatorKind.IntegerDivision: return WellKnownMemberNames.IntegerDivisionOperatorName; case CodeGenerationOperatorKind.LeftShift: return WellKnownMemberNames.LeftShiftOperatorName; case CodeGenerationOperatorKind.LessThan: return WellKnownMemberNames.LessThanOperatorName; case CodeGenerationOperatorKind.LessThanOrEqual: return WellKnownMemberNames.LessThanOrEqualOperatorName; case CodeGenerationOperatorKind.Like: return WellKnownMemberNames.LikeOperatorName; case CodeGenerationOperatorKind.LogicalNot: return WellKnownMemberNames.LogicalNotOperatorName; case CodeGenerationOperatorKind.Modulus: return WellKnownMemberNames.ModulusOperatorName; case CodeGenerationOperatorKind.Multiplication: return WellKnownMemberNames.MultiplyOperatorName; case CodeGenerationOperatorKind.OnesComplement: return WellKnownMemberNames.OnesComplementOperatorName; case CodeGenerationOperatorKind.RightShift: return WellKnownMemberNames.RightShiftOperatorName; case CodeGenerationOperatorKind.Subtraction: return WellKnownMemberNames.SubtractionOperatorName; case CodeGenerationOperatorKind.True: return WellKnownMemberNames.TrueOperatorName; case CodeGenerationOperatorKind.UnaryPlus: return WellKnownMemberNames.UnaryPlusOperatorName; case CodeGenerationOperatorKind.UnaryNegation: return WellKnownMemberNames.UnaryNegationOperatorName; default: Debug.Fail("This switch statement should handle all possible CodeGenerationOperatorKinds"); return string.Empty; } }
private static string GetMetadataName(CodeGenerationOperatorKind operatorKind) { switch (operatorKind) { case CodeGenerationOperatorKind.Addition: return WellKnownMemberNames.AdditionOperatorName; case CodeGenerationOperatorKind.BitwiseAnd: return WellKnownMemberNames.BitwiseAndOperatorName; case CodeGenerationOperatorKind.BitwiseOr: return WellKnownMemberNames.BitwiseOrOperatorName; case CodeGenerationOperatorKind.Concatenate: return WellKnownMemberNames.ConcatenateOperatorName; case CodeGenerationOperatorKind.Decrement: return WellKnownMemberNames.DecrementOperatorName; case CodeGenerationOperatorKind.Division: return WellKnownMemberNames.DivisionOperatorName; case CodeGenerationOperatorKind.Equality: return WellKnownMemberNames.EqualityOperatorName; case CodeGenerationOperatorKind.ExclusiveOr: return WellKnownMemberNames.ExclusiveOrOperatorName; case CodeGenerationOperatorKind.Exponent: return WellKnownMemberNames.ExponentOperatorName; case CodeGenerationOperatorKind.False: return WellKnownMemberNames.FalseOperatorName; case CodeGenerationOperatorKind.GreaterThan: return WellKnownMemberNames.GreaterThanOperatorName; case CodeGenerationOperatorKind.GreaterThanOrEqual: return WellKnownMemberNames.GreaterThanOrEqualOperatorName; case CodeGenerationOperatorKind.Increment: return WellKnownMemberNames.IncrementOperatorName; case CodeGenerationOperatorKind.Inequality: return WellKnownMemberNames.InequalityOperatorName; case CodeGenerationOperatorKind.IntegerDivision: return WellKnownMemberNames.IntegerDivisionOperatorName; case CodeGenerationOperatorKind.LeftShift: return WellKnownMemberNames.LeftShiftOperatorName; case CodeGenerationOperatorKind.LessThan: return WellKnownMemberNames.LessThanOperatorName; case CodeGenerationOperatorKind.LessThanOrEqual: return WellKnownMemberNames.LessThanOrEqualOperatorName; case CodeGenerationOperatorKind.Like: return WellKnownMemberNames.LikeOperatorName; case CodeGenerationOperatorKind.LogicalNot: return WellKnownMemberNames.LogicalNotOperatorName; case CodeGenerationOperatorKind.Modulus: return WellKnownMemberNames.ModulusOperatorName; case CodeGenerationOperatorKind.Multiplication: return WellKnownMemberNames.MultiplyOperatorName; case CodeGenerationOperatorKind.OnesComplement: return WellKnownMemberNames.OnesComplementOperatorName; case CodeGenerationOperatorKind.RightShift: return WellKnownMemberNames.RightShiftOperatorName; case CodeGenerationOperatorKind.Subtraction: return WellKnownMemberNames.SubtractionOperatorName; case CodeGenerationOperatorKind.True: return WellKnownMemberNames.TrueOperatorName; case CodeGenerationOperatorKind.UnaryPlus: return WellKnownMemberNames.UnaryPlusOperatorName; case CodeGenerationOperatorKind.UnaryNegation: return WellKnownMemberNames.UnaryNegationOperatorName; default: throw ExceptionUtilities.UnexpectedValue(operatorKind); } }
private static string GetMetadataName(CodeGenerationOperatorKind operatorKind) { switch (operatorKind) { case CodeGenerationOperatorKind.Addition: return(WellKnownMemberNames.AdditionOperatorName); case CodeGenerationOperatorKind.BitwiseAnd: return(WellKnownMemberNames.BitwiseAndOperatorName); case CodeGenerationOperatorKind.BitwiseOr: return(WellKnownMemberNames.BitwiseOrOperatorName); case CodeGenerationOperatorKind.Concatenate: return(WellKnownMemberNames.ConcatenateOperatorName); case CodeGenerationOperatorKind.Decrement: return(WellKnownMemberNames.DecrementOperatorName); case CodeGenerationOperatorKind.Division: return(WellKnownMemberNames.DivisionOperatorName); case CodeGenerationOperatorKind.Equality: return(WellKnownMemberNames.EqualityOperatorName); case CodeGenerationOperatorKind.ExclusiveOr: return(WellKnownMemberNames.ExclusiveOrOperatorName); case CodeGenerationOperatorKind.Exponent: return(WellKnownMemberNames.ExponentOperatorName); case CodeGenerationOperatorKind.False: return(WellKnownMemberNames.FalseOperatorName); case CodeGenerationOperatorKind.GreaterThan: return(WellKnownMemberNames.GreaterThanOperatorName); case CodeGenerationOperatorKind.GreaterThanOrEqual: return(WellKnownMemberNames.GreaterThanOrEqualOperatorName); case CodeGenerationOperatorKind.Increment: return(WellKnownMemberNames.IncrementOperatorName); case CodeGenerationOperatorKind.Inequality: return(WellKnownMemberNames.InequalityOperatorName); case CodeGenerationOperatorKind.IntegerDivision: return(WellKnownMemberNames.IntegerDivisionOperatorName); case CodeGenerationOperatorKind.LeftShift: return(WellKnownMemberNames.LeftShiftOperatorName); case CodeGenerationOperatorKind.LessThan: return(WellKnownMemberNames.LessThanOperatorName); case CodeGenerationOperatorKind.LessThanOrEqual: return(WellKnownMemberNames.LessThanOrEqualOperatorName); case CodeGenerationOperatorKind.Like: return(WellKnownMemberNames.LikeOperatorName); case CodeGenerationOperatorKind.LogicalNot: return(WellKnownMemberNames.LogicalNotOperatorName); case CodeGenerationOperatorKind.Modulus: return(WellKnownMemberNames.ModulusOperatorName); case CodeGenerationOperatorKind.Multiplication: return(WellKnownMemberNames.MultiplyOperatorName); case CodeGenerationOperatorKind.OnesComplement: return(WellKnownMemberNames.OnesComplementOperatorName); case CodeGenerationOperatorKind.RightShift: return(WellKnownMemberNames.RightShiftOperatorName); case CodeGenerationOperatorKind.Subtraction: return(WellKnownMemberNames.SubtractionOperatorName); case CodeGenerationOperatorKind.True: return(WellKnownMemberNames.TrueOperatorName); case CodeGenerationOperatorKind.UnaryPlus: return(WellKnownMemberNames.UnaryPlusOperatorName); case CodeGenerationOperatorKind.UnaryNegation: return(WellKnownMemberNames.UnaryNegationOperatorName); default: throw ExceptionUtilities.UnexpectedValue(operatorKind); } }
private static string GetMetadataName(CodeGenerationOperatorKind operatorKind) => operatorKind switch {
/// <summary> /// Creates a method symbol that can be used to describe an operator declaration. /// </summary> public static IMethodSymbol CreateOperatorSymbol(IList <AttributeData> attributes, Accessibility accessibility, SymbolModifiers modifiers, ITypeSymbol returnType, CodeGenerationOperatorKind operatorKind, IList <IParameterSymbol> parameters, IList <SyntaxNode> statements = null, IList <AttributeData> returnTypeAttributes = null) { int expectedParameterCount = CodeGenerationOperatorSymbol.GetParameterCount(operatorKind); if (parameters.Count != expectedParameterCount) { var message = expectedParameterCount == 1 ? WorkspacesResources.InvalidParameterCountForUnaryOperator : WorkspacesResources.InvalidParameterCountForBinaryOperator; throw new ArgumentException(message, "parameters"); } var result = new CodeGenerationOperatorSymbol(null, attributes, accessibility, modifiers, returnType, operatorKind, parameters, returnTypeAttributes); CodeGenerationMethodInfo.Attach(result, modifiers.IsNew, modifiers.IsUnsafe, modifiers.IsPartial, modifiers.IsAsync, statements, handlesExpressions: null); return(result); }
/// <summary> /// Creates a method symbol that can be used to describe an operator declaration. /// </summary> public static IMethodSymbol CreateOperatorSymbol(IList<AttributeData> attributes, Accessibility accessibility, DeclarationModifiers modifiers, ITypeSymbol returnType, CodeGenerationOperatorKind operatorKind, IList<IParameterSymbol> parameters, IList<SyntaxNode> statements = null, IList<AttributeData> returnTypeAttributes = null) { int expectedParameterCount = CodeGenerationOperatorSymbol.GetParameterCount(operatorKind); if (parameters.Count != expectedParameterCount) { var message = expectedParameterCount == 1 ? WorkspacesResources.InvalidParameterCountForUnaryOperator : WorkspacesResources.InvalidParameterCountForBinaryOperator; throw new ArgumentException(message, nameof(parameters)); } var result = new CodeGenerationOperatorSymbol(null, attributes, accessibility, modifiers, returnType, operatorKind, parameters, returnTypeAttributes); CodeGenerationMethodInfo.Attach(result, modifiers.IsNew, modifiers.IsUnsafe, modifiers.IsPartial, modifiers.IsAsync, statements, handlesExpressions: null); return result; }
private static string GetMetadataName(CodeGenerationOperatorKind operatorKind) { switch (operatorKind) { case CodeGenerationOperatorKind.Addition: return(WellKnownMemberNames.AdditionOperatorName); case CodeGenerationOperatorKind.BitwiseAnd: return(WellKnownMemberNames.BitwiseAndOperatorName); case CodeGenerationOperatorKind.BitwiseOr: return(WellKnownMemberNames.BitwiseOrOperatorName); case CodeGenerationOperatorKind.Concatenate: return(WellKnownMemberNames.ConcatenateOperatorName); case CodeGenerationOperatorKind.Decrement: return(WellKnownMemberNames.DecrementOperatorName); case CodeGenerationOperatorKind.Division: return(WellKnownMemberNames.DivisionOperatorName); case CodeGenerationOperatorKind.Equality: return(WellKnownMemberNames.EqualityOperatorName); case CodeGenerationOperatorKind.ExclusiveOr: return(WellKnownMemberNames.ExclusiveOrOperatorName); case CodeGenerationOperatorKind.Exponent: return(WellKnownMemberNames.ExponentOperatorName); case CodeGenerationOperatorKind.False: return(WellKnownMemberNames.FalseOperatorName); case CodeGenerationOperatorKind.GreaterThan: return(WellKnownMemberNames.GreaterThanOperatorName); case CodeGenerationOperatorKind.GreaterThanOrEqual: return(WellKnownMemberNames.GreaterThanOrEqualOperatorName); case CodeGenerationOperatorKind.Increment: return(WellKnownMemberNames.IncrementOperatorName); case CodeGenerationOperatorKind.Inequality: return(WellKnownMemberNames.InequalityOperatorName); case CodeGenerationOperatorKind.IntegerDivision: return(WellKnownMemberNames.IntegerDivisionOperatorName); case CodeGenerationOperatorKind.LeftShift: return(WellKnownMemberNames.LeftShiftOperatorName); case CodeGenerationOperatorKind.LessThan: return(WellKnownMemberNames.LessThanOperatorName); case CodeGenerationOperatorKind.LessThanOrEqual: return(WellKnownMemberNames.LessThanOrEqualOperatorName); case CodeGenerationOperatorKind.Like: return(WellKnownMemberNames.LikeOperatorName); case CodeGenerationOperatorKind.LogicalNot: return(WellKnownMemberNames.LogicalNotOperatorName); case CodeGenerationOperatorKind.Modulus: return(WellKnownMemberNames.ModulusOperatorName); case CodeGenerationOperatorKind.Multiplication: return(WellKnownMemberNames.MultiplyOperatorName); case CodeGenerationOperatorKind.OnesComplement: return(WellKnownMemberNames.OnesComplementOperatorName); case CodeGenerationOperatorKind.RightShift: return(WellKnownMemberNames.RightShiftOperatorName); case CodeGenerationOperatorKind.Subtraction: return(WellKnownMemberNames.SubtractionOperatorName); case CodeGenerationOperatorKind.True: return(WellKnownMemberNames.TrueOperatorName); case CodeGenerationOperatorKind.UnaryPlus: return(WellKnownMemberNames.UnaryPlusOperatorName); case CodeGenerationOperatorKind.UnaryNegation: return(WellKnownMemberNames.UnaryNegationOperatorName); default: Debug.Fail("This switch statement should handle all possible CodeGenerationOperatorKinds"); return(string.Empty); } }