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