/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.ir.transform.expression;
import gw.internal.gosu.ir.transform.AbstractElementTransformer;
import gw.internal.gosu.parser.expressions.ObjectInitializerExpression;
import gw.internal.gosu.parser.expressions.InitializerAssignment;
import gw.internal.gosu.ir.transform.TopLevelTransformationContext;
import gw.lang.ir.IRExpression;
import gw.lang.ir.IRStatement;
import java.util.List;
import java.util.Collections;
import java.util.ArrayList;
/**
*/
public class ObjectInitializerExpressionTransformer extends AbstractElementTransformer<ObjectInitializerExpression>
{
public static List<IRStatement> compile( TopLevelTransformationContext cc, ObjectInitializerExpression expr, IRExpression root )
{
ObjectInitializerExpressionTransformer compiler = new ObjectInitializerExpressionTransformer( cc, expr );
return compiler.compile( root );
}
private ObjectInitializerExpressionTransformer( TopLevelTransformationContext cc, ObjectInitializerExpression expr )
{
super( cc, expr );
}
private List<IRStatement> compile( IRExpression root )
{
List<InitializerAssignment> initializers = getParsedElement().getInitializers();
if( initializers == null )
{
return Collections.emptyList();
}
List<IRStatement> statements = new ArrayList<IRStatement>();
for( InitializerAssignment initialier : initializers )
{
statements.add( _cc().compileInitializerAssignment( initialier, root ) );
}
return statements;
}
}