/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.ir.transform.expression;
import gw.internal.gosu.parser.expressions.ConditionalAndExpression;
import gw.internal.gosu.ir.transform.ExpressionTransformer;
import gw.internal.gosu.ir.transform.TopLevelTransformationContext;
import gw.lang.ir.IRExpression;
import gw.lang.ir.IRTypeConstants;
import gw.lang.ir.builder.IRArgConverter;
import gw.lang.ir.expression.IRConditionalAndExpression;
/**
*/
public class ConditionalAndExpressionTransformer extends AbstractExpressionTransformer<ConditionalAndExpression>
{
public static IRExpression compile( TopLevelTransformationContext cc, ConditionalAndExpression expr )
{
ConditionalAndExpressionTransformer gen = new ConditionalAndExpressionTransformer( cc, expr );
return gen.compile();
}
private ConditionalAndExpressionTransformer( TopLevelTransformationContext cc, ConditionalAndExpression expr )
{
super( cc, expr );
}
protected IRExpression compile_impl()
{
IRExpression lhs = IRArgConverter.castOrConvertIfNecessary(IRTypeConstants.pBOOLEAN(), ExpressionTransformer.compile( _expr().getLHS(), _cc() ) );
IRExpression rhs = IRArgConverter.castOrConvertIfNecessary(IRTypeConstants.pBOOLEAN(), ExpressionTransformer.compile( _expr().getRHS(), _cc() ) );
return new IRConditionalAndExpression( lhs, rhs );
}
}