From 7acb8e6308769cf81e93fae4f025de34fa7d1eb3 Mon Sep 17 00:00:00 2001 From: "Tristan B. Velloza Kildaire" Date: Mon, 17 Jul 2023 16:56:10 +0200 Subject: [PATCH] Expressions - `BinaryOperatorExpression`, `CastedExpression` and `IntegerLiteral` now implements the new `MCloneable` API --- source/tlang/compiler/symbols/expressions.d | 27 ++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) 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; } }