From d2ecb6de089874b05dcce6033c38ff558127a561 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Wed, 4 Sep 2019 19:14:47 +0200 Subject: [PATCH] Fix data type promotions to mimic C++ Actually in C++ `unsigned int + int` gives an `unsigned int` which is not very intuitive --- src/language/ASTNodeDataType.hpp | 4 ++-- tests/test_ASTNodeDataType.cpp | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/language/ASTNodeDataType.hpp b/src/language/ASTNodeDataType.hpp index 4b0303e5f..d6153c101 100644 --- a/src/language/ASTNodeDataType.hpp +++ b/src/language/ASTNodeDataType.hpp @@ -8,8 +8,8 @@ enum class ASTNodeDataType : int32_t { undefined_t = -1, bool_t = 0, - unsigned_int_t = 1, - int_t = 2, + int_t = 1, + unsigned_int_t = 2, double_t = 3, string_t = 5, typename_t = 10, diff --git a/tests/test_ASTNodeDataType.cpp b/tests/test_ASTNodeDataType.cpp index 25a6c420a..b8c5ad8a4 100644 --- a/tests/test_ASTNodeDataType.cpp +++ b/tests/test_ASTNodeDataType.cpp @@ -25,7 +25,8 @@ TEST_CASE("ASTNodeDataType", "[language]") REQUIRE(dataTypePromotion(ASTNodeDataType::double_t, ASTNodeDataType::bool_t) == ASTNodeDataType::double_t); REQUIRE(dataTypePromotion(ASTNodeDataType::double_t, ASTNodeDataType::unsigned_int_t) == ASTNodeDataType::double_t); REQUIRE(dataTypePromotion(ASTNodeDataType::double_t, ASTNodeDataType::int_t) == ASTNodeDataType::double_t); - REQUIRE(dataTypePromotion(ASTNodeDataType::int_t, ASTNodeDataType::unsigned_int_t) == ASTNodeDataType::int_t); + REQUIRE(dataTypePromotion(ASTNodeDataType::int_t, ASTNodeDataType::unsigned_int_t) == + ASTNodeDataType::unsigned_int_t); REQUIRE(dataTypePromotion(ASTNodeDataType::int_t, ASTNodeDataType::bool_t) == ASTNodeDataType::int_t); REQUIRE(dataTypePromotion(ASTNodeDataType::unsigned_int_t, ASTNodeDataType::bool_t) == ASTNodeDataType::unsigned_int_t); -- GitLab