public static Condition ( System.Linq.Expressions test, System.Linq.Expressions ifTrue, System.Linq.Expressions ifFalse ) : |
||
test | System.Linq.Expressions | |
ifTrue | System.Linq.Expressions | |
ifFalse | System.Linq.Expressions | |
Результат |
internal override MSA.Expression /*!*/ TransformRead(AstGenerator /*!*/ gen) { return(AstFactory.Condition( _condition.TransformCondition(gen, false), gen.TransformStatementsToExpression(_statements), gen.TransformStatementsToExpression(_elseClause != null ? _elseClause.Statements : null) )); }
internal override MSA.Expression /*!*/ TransformRead(AstGenerator /*!*/ gen) { return(AstFactory.Condition( _condition.TransformReadBoolean(gen, true), _trueExpression.TransformRead(gen), _falseExpression.TransformRead(gen) )); }
internal override MSA.Expression /*!*/ TransformRead(AstGenerator /*!*/ gen) { return(AstFactory.Condition( Methods.IsFalse.OpCall(AstFactory.Box(_condition.TransformRead(gen))), gen.TransformStatementsToExpression(_statements), gen.TransformStatementsToExpression(_elseClause != null ? _elseClause.Statements : null) )); }
internal override MSA.Expression /*!*/ TransformRead(AstGenerator /*!*/ gen) { MSA.Expression result; if (_elseStatements != null) { // ... else body end result = gen.TransformStatementsToExpression(_elseStatements); } else { // no else clause => the result of the if-expression is nil: result = AstUtils.Constant(null); } MSA.Expression value; if (_value != null) { value = gen.CurrentScope.DefineHiddenVariable("#case-compare-value", typeof(object)); } else { value = null; } if (_whenClauses != null) { for (int i = _whenClauses.Count - 1; i >= 0; i--) { // emit: else (if (condition) body else result) result = AstFactory.Condition( TransformWhenCondition(gen, _whenClauses[i].Comparisons, _whenClauses[i].ComparisonArray, value), gen.TransformStatementsToExpression(_whenClauses[i].Statements), result ); } } if (_value != null) { result = Ast.Block( Ast.Assign(value, Ast.Convert(_value.TransformRead(gen), typeof(object))), result ); } return(result); }
internal override MSA.Expression /*!*/ TransformRead(AstGenerator /*!*/ gen) { MSA.Expression result; int i = _elseIfClauses.Count - 1; if (i >= 0 && _elseIfClauses[i].Condition == null) { // ... else body end result = gen.TransformStatementsToExpression(_elseIfClauses[i].Statements); i--; } else { // no else clause => the result of the if-expression is nil: result = AstUtils.Constant(null); } while (i >= 0) { // emit: else (if (condition) body else result) result = AstFactory.Condition( _elseIfClauses[i].Condition.TransformCondition(gen, true), gen.TransformStatementsToExpression(_elseIfClauses[i].Statements), result ); i--; } // if (condition) body else result return(AstFactory.Condition( _condition.TransformCondition(gen, true), gen.TransformStatementsToExpression(_body), result )); }