diff --git a/source/tlang/compiler/symbols/expressions.d b/source/tlang/compiler/symbols/expressions.d index b4037985..d4142e42 100644 --- a/source/tlang/compiler/symbols/expressions.d +++ b/source/tlang/compiler/symbols/expressions.d @@ -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; @@ -183,6 +187,9 @@ public class BinaryOperatorExpression : OperatorExpression, MStatementSearchable // 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; @@ -327,6 +345,9 @@ public final class CastedExpression : Expression, MCloneable clonedCastedExpression = new CastedExpression(this.toType, clonedUncastedExpression); + // Parent outselves to the given parent + clonedCastedExpression.parentTo(newParent); + return clonedCastedExpression; } }