private SwitchAst(AstExpression switchValue, Type returnType) : base(returnType) { if (switchValue is null) { throw new ArgumentNullException(nameof(switchValue)); } switchValueType = switchValue.RuntimeType; if (switchValueType == typeof(object)) { switchValueType = typeof(Type); switchValueKind = MySwitchValueKind.RuntimeType; } else if (IsArithmetic(switchValueType)) { switchValueKind = MySwitchValueKind.Arithmetic; } else { switchValueKind = MySwitchValueKind.Equality; } switchCases = new List <IPrivateCaseHandler>(); this.switchValue = switchValue; }
/// <summary> /// /// </summary> /// <param name="switchAst"></param> protected SwitchAst(SwitchAst switchAst) : base(switchAst.RuntimeType) { defaultAst = switchAst.defaultAst; switchValue = switchAst.switchValue; switchCases = switchAst.switchCases; switchValueType = switchAst.switchValueType; switchValueKind = switchAst.switchValueKind; }