From dcdde1af4ba60eb303e4308d9625c2c26d255906 Mon Sep 17 00:00:00 2001 From: Bartek Kryza Date: Sun, 11 Dec 2022 02:03:26 +0100 Subject: [PATCH] Fixed if constexpr sequence diagram handling --- .../visitor/translation_unit_visitor.cc | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/sequence_diagram/visitor/translation_unit_visitor.cc b/src/sequence_diagram/visitor/translation_unit_visitor.cc index 5cdbd8ed..1df10ad0 100644 --- a/src/sequence_diagram/visitor/translation_unit_visitor.cc +++ b/src/sequence_diagram/visitor/translation_unit_visitor.cc @@ -548,7 +548,7 @@ bool translation_unit_visitor::TraverseCompoundStmt(clang::CompoundStmt *stmt) const auto *current_ifstmt = context().current_ifstmt(); const auto *current_elseifstmt = context().current_elseifstmt(); - + // // Add final else block (not else if) // @@ -593,15 +593,13 @@ bool translation_unit_visitor::TraverseIfStmt(clang::IfStmt *stmt) using clanguml::sequence_diagram::model::activity; using clanguml::sequence_diagram::model::message; - const auto *current_ifstmt = context().current_ifstmt(); - - context().enter_ifstmt(stmt); - const auto current_caller_id = context().caller_id(); - bool elseif_block{false}; - if (current_caller_id) { + if (current_caller_id && !stmt->isConstexpr()) { + const auto *current_ifstmt = context().current_ifstmt(); + context().enter_ifstmt(stmt); + if (diagram().sequences.find(current_caller_id) == diagram().sequences.end()) { activity a; @@ -636,9 +634,7 @@ bool translation_unit_visitor::TraverseIfStmt(clang::IfStmt *stmt) RecursiveASTVisitor::TraverseIfStmt(stmt); - context().leave_ifstmt(); - - if (current_caller_id && !elseif_block) { + if (current_caller_id && !stmt->isConstexpr() && !elseif_block) { message m; m.from = current_caller_id; m.type = message_t::kIfEnd;