internal BinaryCSharpPattern(CSharpPatternInfo info, CSharpPatternType patternType, CSharpPattern left, CSharpPattern right) : base(info) { PatternType = patternType; Left = left; Right = right; }
/// <summary> /// Creates a relational pattern that compares against a constant value. /// </summary> /// <param name="info">Type information about the pattern.</param> /// <param name="type">The type of the pattern.</param> /// <param name="value">The value to compare with.</param> /// <returns>A <see cref="RelationalCSharpPattern" /> representing a relational pattern.</returns> public static RelationalCSharpPattern Relational(CSharpPatternInfo info, CSharpPatternType type, ConstantExpression value) { switch (type) { case CSharpPatternType.LessThan: case CSharpPatternType.LessThanOrEqual: case CSharpPatternType.GreaterThan: case CSharpPatternType.GreaterThanOrEqual: return(RelationalCSharpPattern.Make(info, type, value)); default: throw Error.InvalidRelationalPatternType(type); } }
internal static RelationalCSharpPattern Make(CSharpPatternInfo info, CSharpPatternType type, ConstantExpression value) { RequiresNotNull(value, nameof(value)); CheckConstant(value, isRelational: true); if (info != null) { RequiresCompatiblePatternTypes(value.Type, info.NarrowedType); } else { info = PatternInfo(typeof(object), value.Type); } return(new RelationalCSharpPattern(info, type, value)); }
internal RelationalCSharpPattern(CSharpPatternInfo info, CSharpPatternType patternType, ConstantExpression value) : base(info) { PatternType = patternType; Value = value; }
/// <summary> /// Creates a binary pattern with the specified left and right patterns. /// </summary> /// <param name="info">Type information about the pattern.</param> /// <param name="type">The type of the pattern.</param> /// <param name="left">The left pattern.</param> /// <param name="right">The right pattern.</param> /// <returns>A <see cref="NotCSharpPattern" /> representing a binary pattern.</returns> public static BinaryCSharpPattern MakeBinary(CSharpPatternInfo info, CSharpPatternType type, CSharpPattern left, CSharpPattern right) => type switch {