From 37cfe13de465e0bed0ba49a8218366646e50466d Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Thu, 25 Jul 2019 13:00:38 +0200 Subject: [PATCH] Fix post ++ and post -- operators and add node type tests --- src/language/ASTNodeDataTypeBuilder.cpp | 3 ++- tests/test_ASTNodeDataTypeBuilder.cpp | 30 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp index 99b7077bb..a38b71913 100644 --- a/src/language/ASTNodeDataTypeBuilder.cpp +++ b/src/language/ASTNodeDataTypeBuilder.cpp @@ -102,7 +102,8 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n) n.is<language::xor_op>()) { n.m_data_type = ASTNodeDataType::bool_t; } else if (n.is<language::unary_minus>() or n.is<language::unary_plusplus>() or - n.is<language::unary_minusminus>()) { + n.is<language::unary_minusminus>() or n.is<language::post_plusplus>() or + n.is<language::post_minusminus>()) { n.m_data_type = n.children[0]->m_data_type; } else if (n.is<language::plus_op>() or n.is<language::minus_op>() or n.is<language::multiply_op>() or n.is<language::divide_op>()) { diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp index 5d557d21a..0b3c290ff 100644 --- a/tests/test_ASTNodeDataTypeBuilder.cpp +++ b/tests/test_ASTNodeDataTypeBuilder.cpp @@ -909,5 +909,35 @@ not 1; CHECK_AST(data, result); } + + SECTION("post plusplus") + { + std::string_view data = R"( +1++; +)"; + + std::string_view result = R"( +(root:void) + `-(language::post_plusplus:Z) + `-(language::integer:1:Z) +)"; + + CHECK_AST(data, result); + } + + SECTION("post minusminus") + { + std::string_view data = R"( +1--; +)"; + + std::string_view result = R"( +(root:void) + `-(language::post_minusminus:Z) + `-(language::integer:1:Z) +)"; + + CHECK_AST(data, result); + } } } -- GitLab