internal BinaryCSharpPattern(CSharpPatternInfo info, CSharpPatternType patternType, CSharpPattern left, CSharpPattern right)
     : base(info)
 {
     PatternType = patternType;
     Left        = left;
     Right       = right;
 }
Esempio n. 2
0
        /// <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);
            }
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
 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
 {