/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.internal.gosu.ir.transform.statement;
import gw.internal.gosu.parser.statements.StatementList;
import gw.internal.gosu.ir.transform.TopLevelTransformationContext;
import gw.lang.ir.IRStatement;
import gw.lang.ir.statement.IRStatementList;
import gw.lang.parser.IStatement;
import java.util.List;
import java.util.ArrayList;
/**
*/
public class StatementListTransformer extends AbstractStatementTransformer<StatementList>
{
public static IRStatement compile( TopLevelTransformationContext cc, StatementList stmt )
{
StatementListTransformer gen = new StatementListTransformer( cc, stmt );
return gen.compile();
}
private StatementListTransformer( TopLevelTransformationContext cc, StatementList stmt )
{
super( cc, stmt );
}
@Override
protected void visitStatementLineNumber(IRStatement irStatement) {
// Do nothing
}
@Override
protected IRStatement compile_impl()
{
List<IRStatement> irStatements = new ArrayList<IRStatement>();
_cc().pushScope( false );
try
{
IStatement[] statements = _stmt().getStatements();
if( statements != null )
{
for( IStatement s : statements )
{
IRStatement irStatement = _cc().compile( s );
if (irStatement != null) {
irStatements.add(irStatement);
}
}
}
}
finally
{
_cc().popScope();
}
return new IRStatementList( true, irStatements );
}
}