From 053613f0ebdfcd0d6bde4d84565a152e5485846a Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Fri, 12 Jul 2019 19:06:29 +0200 Subject: [PATCH] Continue ASTNodeDataTypeBuilder tests --- src/language/ASTNodeDataTypeBuilder.cpp | 2 - tests/test_ASTNodeDataTypeBuilder.cpp | 176 ++++++++++++++++++++++++ 2 files changed, 176 insertions(+), 2 deletions(-) diff --git a/src/language/ASTNodeDataTypeBuilder.cpp b/src/language/ASTNodeDataTypeBuilder.cpp index 85e610b0b..b7e22e626 100644 --- a/src/language/ASTNodeDataTypeBuilder.cpp +++ b/src/language/ASTNodeDataTypeBuilder.cpp @@ -69,8 +69,6 @@ ASTNodeDataTypeBuilder::_buildNodeDataTypes(ASTNode& n) n.is<language::pluseq_op>() or n.is<language::minuseq_op>() or n.is<language::bit_andeq_op>() or n.is<language::bit_xoreq_op>() or n.is<language::bit_oreq_op>()) { n.m_data_type = n.children[0]->m_data_type; - } else if (n.is<language::for_statement>()) { - n.m_data_type = ASTNodeDataType::void_t; } else if (n.is<language::for_post>() or n.is<language::for_init>() or n.is<language::for_statement_bloc>()) { n.m_data_type = ASTNodeDataType::void_t; } else if (n.is<language::for_test>()) { diff --git a/tests/test_ASTNodeDataTypeBuilder.cpp b/tests/test_ASTNodeDataTypeBuilder.cpp index a4bcd80b2..3b8558c3d 100644 --- a/tests/test_ASTNodeDataTypeBuilder.cpp +++ b/tests/test_ASTNodeDataTypeBuilder.cpp @@ -80,4 +80,180 @@ false; CHECK_AST(data, result); } + + SECTION("bloc") + { + std::string_view data = R"( +{ + 1; + 2.3; +} +)"; + + std::string_view result = R"( +(root:void) + `-(language::bloc:void) + +-(language::integer:1:Z) + `-(language::real:2.3:R) +)"; + + CHECK_AST(data, result); + } + + SECTION("ostream") + { + std::string_view data = R"( +cout << "cout\n"; +cerr << "cerr\n"; +clog << "clog\n"; +)"; + + std::string_view result = R"( +(root:void) + +-(language::cout_kw:void) + | `-(language::literal:"cout\n":string) + +-(language::cerr_kw:void) + | `-(language::literal:"cerr\n":string) + `-(language::clog_kw:void) + `-(language::literal:"clog\n":string) +)"; + + CHECK_AST(data, result); + } + + SECTION("for-statement") + { + std::string_view data = R"( +for (N i=0; i<3; ++i){ + cout << i << "\n"; +} +)"; + + std::string_view result = R"( +(root:void) + `-(language::for_statement:void) + +-(language::declaration:N) + | +-(language::N_set:void) + | +-(language::name:i:N) + | `-(language::integer:0:Z) + +-(language::lesser_op:B) + | +-(language::name:i:N) + | `-(language::integer:3:Z) + +-(language::unary_plusplus:N) + | `-(language::name:i:N) + `-(language::cout_kw:void) + +-(language::name:i:N) + `-(language::literal:"\n":string) +)"; + + CHECK_AST(data, result); + } + + SECTION("B set") + { + std::string_view data = R"( +B b; +)"; + + std::string_view result = R"( +(root:void) + `-(language::declaration:B) + +-(language::B_set:void) + `-(language::name:b:B) +)"; + + CHECK_AST(data, result); + } + + SECTION("N set") + { + std::string_view data = R"( +N n; +)"; + + std::string_view result = R"( +(root:void) + `-(language::declaration:N) + +-(language::N_set:void) + `-(language::name:n:N) +)"; + + CHECK_AST(data, result); + } + + SECTION("Z set") + { + std::string_view data = R"( +Z z; +)"; + + std::string_view result = R"( +(root:void) + `-(language::declaration:Z) + +-(language::Z_set:void) + `-(language::name:z:Z) +)"; + + CHECK_AST(data, result); + } + + SECTION("R set") + { + std::string_view data = R"( +R r; +)"; + + std::string_view result = R"( +(root:void) + `-(language::declaration:R) + +-(language::R_set:void) + `-(language::name:r:R) +)"; + + CHECK_AST(data, result); + } + + SECTION("string") + { + std::string_view data = R"( +string s; +)"; + + std::string_view result = R"( +(root:void) + `-(language::declaration:string) + +-(language::string_type:void) + `-(language::name:s:string) +)"; + + CHECK_AST(data, result); + } + + SECTION("continue") + { + std::string_view data = R"( +continue; +)"; + + std::string_view result = R"( +(root:void) + `-(language::continue_kw:void) +)"; + + CHECK_AST(data, result); + } + + SECTION("break") + { + std::string_view data = R"( +break; +)"; + + std::string_view result = R"( +(root:void) + `-(language::break_kw:void) +)"; + + CHECK_AST(data, result); + } } -- GitLab