|
|
|
@ -158,9 +158,13 @@ public class BinaryOperatorExpression : OperatorExpression, MStatementSearchable
|
|
|
|
|
* returning a fresh new copy of itself and its
|
|
|
|
|
* left and right operands
|
|
|
|
|
*
|
|
|
|
|
* Param:
|
|
|
|
|
* newParent = the `Container` to re-parent the
|
|
|
|
|
* cloned `Statement`'s self to
|
|
|
|
|
*
|
|
|
|
|
* Returns: the cloned `Statement`
|
|
|
|
|
*/
|
|
|
|
|
public override Statement clone()
|
|
|
|
|
public override Statement clone(Container newParent = null)
|
|
|
|
|
{
|
|
|
|
|
BinaryOperatorExpression clonedBinaryOp;
|
|
|
|
|
|
|
|
|
@ -169,7 +173,7 @@ public class BinaryOperatorExpression : OperatorExpression, MStatementSearchable
|
|
|
|
|
if(cast(MCloneable)this.lhs)
|
|
|
|
|
{
|
|
|
|
|
MCloneable cloneableExpression = cast(MCloneable)this.lhs;
|
|
|
|
|
clonedLeftOperandExpression = cast(Expression)cloneableExpression.clone();
|
|
|
|
|
clonedLeftOperandExpression = cast(Expression)cloneableExpression.clone(); // NOTE: We must parent it if needs be
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Clone the left-hand operand expression (if supported, TODO: throw an error if not)
|
|
|
|
@ -177,12 +181,15 @@ public class BinaryOperatorExpression : OperatorExpression, MStatementSearchable
|
|
|
|
|
if(cast(MCloneable)this.rhs)
|
|
|
|
|
{
|
|
|
|
|
MCloneable cloneableExpression = cast(MCloneable)this.rhs;
|
|
|
|
|
clonedRightOperandExpression = cast(Expression)cloneableExpression.clone();
|
|
|
|
|
clonedRightOperandExpression = cast(Expression)cloneableExpression.clone(); // NOTE: We must parent it if needs be
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Clone ourselves
|
|
|
|
|
clonedBinaryOp = new BinaryOperatorExpression(this.operator, clonedLeftOperandExpression, clonedRightOperandExpression);
|
|
|
|
|
|
|
|
|
|
// Parent outselves to the given parent
|
|
|
|
|
clonedBinaryOp.parentTo(newParent);
|
|
|
|
|
|
|
|
|
|
return clonedBinaryOp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -218,14 +225,21 @@ public class IntegerLiteral : NumberLiteral, MCloneable
|
|
|
|
|
/**
|
|
|
|
|
* Clones this integer literal
|
|
|
|
|
*
|
|
|
|
|
* Param:
|
|
|
|
|
* newParent = the `Container` to re-parent the
|
|
|
|
|
* cloned `Statement`'s self to
|
|
|
|
|
*
|
|
|
|
|
* Returns: the cloned `Statement`
|
|
|
|
|
*/
|
|
|
|
|
public override Statement clone()
|
|
|
|
|
public override Statement clone(Container newParent = null)
|
|
|
|
|
{
|
|
|
|
|
IntegerLiteral clonedIntegerLiteral;
|
|
|
|
|
|
|
|
|
|
clonedIntegerLiteral = new IntegerLiteral(this.numberLiteral, this.encoding);
|
|
|
|
|
|
|
|
|
|
// Parent outselves to the given parent
|
|
|
|
|
clonedIntegerLiteral.parentTo(newParent);
|
|
|
|
|
|
|
|
|
|
return clonedIntegerLiteral;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -311,9 +325,13 @@ public final class CastedExpression : Expression, MCloneable
|
|
|
|
|
* Clones this casted expression recursively
|
|
|
|
|
* and returns a fresh copy of it
|
|
|
|
|
*
|
|
|
|
|
* Param:
|
|
|
|
|
* newParent = the `Container` to re-parent the
|
|
|
|
|
* cloned `Statement`'s self to
|
|
|
|
|
*
|
|
|
|
|
* Returns: the cloned `Statement`
|
|
|
|
|
*/
|
|
|
|
|
public override Statement clone()
|
|
|
|
|
public override Statement clone(Container newParent = null)
|
|
|
|
|
{
|
|
|
|
|
CastedExpression clonedCastedExpression;
|
|
|
|
|
|
|
|
|
@ -322,11 +340,14 @@ public final class CastedExpression : Expression, MCloneable
|
|
|
|
|
if(cast(MCloneable)this.uncastedExpression)
|
|
|
|
|
{
|
|
|
|
|
MCloneable cloneableExpression = cast(MCloneable)this.uncastedExpression;
|
|
|
|
|
clonedUncastedExpression = cast(Expression)cloneableExpression.clone();
|
|
|
|
|
clonedUncastedExpression = cast(Expression)cloneableExpression.clone(); // NOTE: We must parent it if needs be
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
clonedCastedExpression = new CastedExpression(this.toType, clonedUncastedExpression);
|
|
|
|
|
|
|
|
|
|
// Parent outselves to the given parent
|
|
|
|
|
clonedCastedExpression.parentTo(newParent);
|
|
|
|
|
|
|
|
|
|
return clonedCastedExpression;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|