private static void TryInlineIfThenReturnFollowedByReturn(IfThenElement ifThen, IList <IElement> elements, int index) { if (index == elements.Count - 1) { return; } if (ifThen.Then.Count != 1 || ifThen.Else.Count > 0) { return; } var returnInIf = ifThen.Then.Single() as ReturnElement; var returnAfterIf = elements[index + 1] as ReturnElement; if (returnInIf == null || returnAfterIf == null) { return; } if (returnInIf.Result == null || returnAfterIf.Result == null) { return; } elements[index] = new ReturnElement(Expression.Condition( ifThen.Condition, returnInIf.Result, returnAfterIf.Result )); elements.RemoveAt(index + 1); }
static void Main() { ReturnElement ret = new ReturnElement(); VariableElement variable = new VariableElement(); variable.setText("int"); ret.setreturnvariable(variable); Element b; b = ret.getreturnvariable(); }
public override void VisitReturnElement(ReturnElement element) { Console.Write("return "); VisitElement(element.getreturnvariable()); Console.Write(";\n"); }
public abstract void VisitReturnElement(ReturnElement element);
public override void VisitReturnElement(ReturnElement element) { //throw new NotImplementedException(); }
static void Main(String[] args) { Console.WriteLine("\nTesting the IfStatementElement class"); Console.WriteLine("\n==========================================\n"); EqualityOperationElement elem = new EqualityOperationElement(); VariableElement var_elem = new VariableElement(); var_elem.setText("a"); elem.setequalityLhs(var_elem); IntegerElement int_elem = new IntegerElement(); int_elem.setText("1"); elem.setequalityRhs(int_elem); VariableElement elem2 = new VariableElement(); elem2.setText("b"); IfStatementElement if_elem = new IfStatementElement(); if_elem.CONDITION= elem; ScalarVariableDeclaration scalar_elem = new ScalarVariableDeclaration(); scalar_elem.setType("int"); scalar_elem.setVar(var_elem); List<Element> Iflist = new List<Element>(); Iflist.Add(scalar_elem); if_elem.IFCODE = Iflist; List<Element> ElseList = new List<Element>(); ElseList.Add(int_elem); if_elem.ELSECODE = ElseList; ReturnElement elem_ret = new ReturnElement(); VariableElement var_elem2 = new VariableElement(); var_elem.setText("a"); elem_ret.setreturnvariable(var_elem2); VariableElement var_elem1 = new VariableElement(); var_elem1 = (VariableElement)elem_ret.getreturnvariable(); Console.Write("IfStatement element " + var_elem1.GetType().ToString()+" "+ var_elem1.getText().ToString() + "\n"); EqualityOperationElement eq_elem = new EqualityOperationElement(); eq_elem = (EqualityOperationElement)if_elem.CONDITION; Console.Write("The condition has : "+eq_elem.ToString()+"->"+eq_elem.getequalityLhs()+" == "+eq_elem.getequalityRhs()+"\n"); List<Element> elem_list = new List<Element>(); elem_list = if_elem.IFCODE; for (int i = 0; i < elem_list.Count; i++) { Console.Write("The if loop list has " + elem_list[i].ToString() + "\n"); } elem_list = if_elem.ELSECODE; for (int i = 0; i < elem_list.Count; i++) { Console.Write("The Else loop list has " + elem_list[i].ToString() + "\n"); } }