summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Goodliffe <dan@randomdan.homeip.net>2020-07-05 19:19:24 +0100
committerDan Goodliffe <dan@randomdan.homeip.net>2020-07-05 19:19:24 +0100
commit9e86e23b430ad1bdab245b1e63c35b7a1ea73e03 (patch)
tree6e07ace5f526f1c42dc5a23fcaa4532f360b7fea
parentFix link error with containers defined in same slice as element (diff)
downloadslicer-9e86e23b430ad1bdab245b1e63c35b7a1ea73e03.tar.bz2
slicer-9e86e23b430ad1bdab245b1e63c35b7a1ea73e03.tar.xz
slicer-9e86e23b430ad1bdab245b1e63c35b7a1ea73e03.zip
Apply previous fixes for classes to structs too
-rw-r--r--slicer/test/preprocessor.cpp4
-rw-r--r--slicer/test/serializers.cpp3
-rw-r--r--slicer/test/structs.ice1
-rw-r--r--slicer/tool/parser.cpp7
4 files changed, 12 insertions, 3 deletions
diff --git a/slicer/test/preprocessor.cpp b/slicer/test/preprocessor.cpp
index eddeb31..2513f99 100644
--- a/slicer/test/preprocessor.cpp
+++ b/slicer/test/preprocessor.cpp
@@ -12,7 +12,7 @@
using ComponentsCount = std::map<std::string, unsigned int>;
ComponentsCount COMPONENTS_IN_TEST_ICE = {{"classtype.ice", 2}, {"classes.ice", 3}, {"collections.ice", 5},
{"enums.ice", 2}, {"inheritance.ice", 12}, {"interfaces.ice", 0}, {"json.ice", 2}, {"locals.ice", 7},
- {"optionals.ice", 2}, {"structs.ice", 4}, {"types.ice", 3}, {"xml.ice", 5}};
+ {"optionals.ice", 2}, {"structs.ice", 5}, {"types.ice", 3}, {"xml.ice", 5}};
unsigned int
total()
@@ -21,7 +21,7 @@ total()
COMPONENTS_IN_TEST_ICE.begin(), COMPONENTS_IN_TEST_ICE.end(), 0U, [](auto & t, auto && c) {
return t += c.second;
});
- BOOST_CHECK_EQUAL(47, t);
+ BOOST_CHECK_EQUAL(48, t);
return t;
}
diff --git a/slicer/test/serializers.cpp b/slicer/test/serializers.cpp
index c8f8390..53c6965 100644
--- a/slicer/test/serializers.cpp
+++ b/slicer/test/serializers.cpp
@@ -694,5 +694,6 @@ BOOST_AUTO_TEST_CASE(enum_lookups)
BOOST_AUTO_TEST_CASE(sequence_element_in_same_slice_link_bug)
{
// Link error when sequence element type defined in same slice.
- Slicer::ModelPartForSequence<TestModule::Classes> mp(nullptr);
+ Slicer::ModelPartForSequence<TestModule::Classes> mpClasses(nullptr);
+ Slicer::ModelPartForSequence<TestModule::Dates> mpDates(nullptr);
}
diff --git a/slicer/test/structs.ice b/slicer/test/structs.ice
index fcd17fe..8edb585 100644
--- a/slicer/test/structs.ice
+++ b/slicer/test/structs.ice
@@ -29,6 +29,7 @@ module TestModule {
StructType str;
int simp;
};
+ sequence<IsoDate> Dates;
};
#endif
diff --git a/slicer/tool/parser.cpp b/slicer/tool/parser.cpp
index d2288ae..3d0505a 100644
--- a/slicer/tool/parser.cpp
+++ b/slicer/tool/parser.cpp
@@ -31,6 +31,13 @@ namespace Slicer {
return false;
};
+ bool
+ visitStructStart(const Slice::StructPtr & s) override
+ {
+ fprintbf(cpp, "struct ICE_CLASS(JAM_DLL_PUBLIC) %s;\n", s->name());
+ return false;
+ };
+
void
visitModuleEnd(const Slice::ModulePtr & m) override
{