From 215f9c0836e5b4af6f0c42504f30be943c901805 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Fri, 30 Aug 2019 14:51:55 +0200 Subject: [PATCH] Fix statement block simplifications `if` and `for` could be over-simplified --- src/language/ASTBuilder.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/language/ASTBuilder.cpp b/src/language/ASTBuilder.cpp index 82a60d54d..1952dc39f 100644 --- a/src/language/ASTBuilder.cpp +++ b/src/language/ASTBuilder.cpp @@ -116,7 +116,7 @@ struct ASTBuilder::simplify_statement_bloc : parse_tree::apply<ASTBuilder::simpl static void transform(std::unique_ptr<ASTNode>& n, States&&... st) { - if (n->children.size() == 1) { + if ((n->id == typeid(language::statement_bloc) or n->id == typeid(language::bloc)) and (n->children.size() == 1)) { if (not n->children[0]->is<language::declaration>()) { n->remove_content(); n = std::move(n->children.back()); @@ -134,7 +134,8 @@ struct ASTBuilder::simplify_for_statement_bloc : parse_tree::apply<ASTBuilder::s static void transform(std::unique_ptr<ASTNode>& n, States&&... st) { - if (n->children.size() == 1) { + if ((n->id == typeid(language::for_statement_bloc) or n->id == typeid(language::bloc)) and + (n->children.size() == 1)) { n->remove_content(); n = std::move(n->children.back()); transform(n, st...); -- GitLab