C++: fix for duplicated parent of ReturnVoid statements

This commit is contained in:
Robert Marsh
2024-02-23 16:19:34 +00:00
parent 6f7f68fee8
commit dd97584eff
7 changed files with 188 additions and 102 deletions

View File

@@ -616,7 +616,7 @@ newtype TTranslatedElement =
exists(ArrayOrVectorAggregateLiteral initList |
initList.getAnElementExpr(_).getFullyConverted() = expr
) or
exists(ReturnStmt returnStmt | returnStmt.getExpr().getFullyConverted() = expr) or
exists(ReturnStmt returnStmt | returnStmt.getExpr().getFullyConverted() = expr and hasReturnValue(returnStmt.getEnclosingFunction())) or
exists(ConstructorFieldInit fieldInit | fieldInit.getExpr().getFullyConverted() = expr) or
exists(NewExpr newExpr | newExpr.getInitializer().getFullyConverted() = expr) or
exists(ThrowExpr throw | throw.getExpr().getFullyConverted() = expr) or

View File

@@ -474,7 +474,7 @@ class TranslatedReturnVoidExpressionStmt extends TranslatedReturnStmt {
override Instruction getALastInstructionInternal() {
if this.hasAnImplicitDestructorCall()
then
result = this.getChildInternal(max(int id | exists(this.getChild(id)))).getALastInstruction()
result = this.getChild(max(int id | exists(this.getChild(id)))).getALastInstruction()
else result = this.getInstruction(OnlyInstructionTag())
}