Fixed handling of multiple dimension arrays in class fields (#278)

This commit is contained in:
Bartek Kryza
2024-06-01 18:47:27 +02:00
parent d599bb6715
commit ff7edef585
10 changed files with 139 additions and 13 deletions

View File

@@ -53,8 +53,8 @@ TEST_CASE("t00006")
REQUIRE(IsAssociation<Public>(src, "R", "G", "g"));
REQUIRE(IsAggregation<Public>(src, "R", "H", "h"));
REQUIRE(IsAssociation<Public>(src, "R", "I", "i"));
REQUIRE(IsAggregation<Public>(src, "R", "J", "j"));
REQUIRE(IsAssociation<Public>(src, "R", "K", "k"));
REQUIRE(IsAggregation<Public>(src, "R", "J", "j", "", "10"));
REQUIRE(IsAssociation<Public>(src, "R", "K", "k", "", "20"));
REQUIRE(IsAggregation<Public>(src, "R", "L", "lm"));
REQUIRE(IsAggregation<Public>(src, "R", "M", "lm"));
REQUIRE(IsAggregation<Public>(src, "R", "N", "ns"));

View File

@@ -3,6 +3,11 @@ namespace t00037 {
constexpr auto LENGTH{10ULL};
struct S {
double x;
double y;
};
class ST {
public:
struct {
@@ -22,6 +27,8 @@ private:
double c{1.0};
double h{1.0};
} units;
S s[4][3][2];
};
struct A {

View File

@@ -35,6 +35,15 @@ TEST_CASE("t00037")
REQUIRE(
IsAggregation<Public>(src, "ST", "ST::(dimensions)", "dimensions"));
REQUIRE(IsAggregation<Private>(src, "ST", "ST::(units)", "units"));
REQUIRE(IsAggregation<Public>(src, "ST", "ST::(bars)", "bars"));
REQUIRE(
IsAggregation<Public>(src, "ST", "ST::(bars)", "bars", "", "10"));
REQUIRE(IsAggregation<Private>(
src, "ST", "S", "s", "", std::to_string(4 * 3 * 2)));
REQUIRE(IsField<Private>(src, "ST", "s", "S[4][3][2]"));
REQUIRE(IsField<Public>(src, "ST", "bars", "ST::(bars)[10]"));
REQUIRE(IsField<Public>(src, "ST", "dimensions", "ST::(dimensions)"));
REQUIRE(IsField<Private>(src, "ST", "units", "ST::(units)"));
});
}