diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp index 99b7077bb00ae62354eac30d312679b4fd4c9f50..a38b71913aafe7619ceb6b5d5060bf1658f526f0 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 5d557d21a65990562a140ee5998151ea88d71cb3..0b3c290ffac9d9f6a8e08c0afc28d98357e24b13 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); + } } }