diff --git a/generator/binaryserializationcodegenerator.cpp b/generator/binaryserializationcodegenerator.cpp index 485b324..a527104 100644 --- a/generator/binaryserializationcodegenerator.cpp +++ b/generator/binaryserializationcodegenerator.cpp @@ -125,11 +125,16 @@ void BinarySerializationCodeGenerator::generate(ostream &os) const os << " serializer.write(static_castqualifiedName << " &>(customObject));\n"; } os << " // write members\n"; + auto membersWritten = false; for (const clang::FieldDecl *field : relevantClass.record->fields()) { if (writePrivateMembers || field->getAccess() == clang::AS_public) { os << " serializer.write(customObject." << field->getName() << ");\n"; + membersWritten = true; } } + if (relevantBases.empty() && !membersWritten) { + os << " (void)serializer;\n (void)customObject;\n"; + } os << "}\n"; // skip printing the readCustomType method for classes without default constructor because deserializing those is currently not supported @@ -146,6 +151,7 @@ void BinarySerializationCodeGenerator::generate(ostream &os) const os << " deserializer.read(static_cast<::" << baseClass->qualifiedName << " &>(customObject));\n"; } os << " // read members\n"; + auto membersRead = false; for (const clang::FieldDecl *field : relevantClass.record->fields()) { // skip const members if (field->getType().isConstant(field->getASTContext())) { @@ -153,8 +159,12 @@ void BinarySerializationCodeGenerator::generate(ostream &os) const } if (readPrivateMembers || field->getAccess() == clang::AS_public) { os << " deserializer.read(customObject." << field->getName() << ");\n"; + membersRead = true; } } + if (relevantBases.empty() && !membersRead) { + os << " (void)deserializer;\n (void)customObject;\n"; + } os << "}\n\n"; } diff --git a/generator/jsonserializationcodegenerator.cpp b/generator/jsonserializationcodegenerator.cpp index ad39ddf..3f90657 100644 --- a/generator/jsonserializationcodegenerator.cpp +++ b/generator/jsonserializationcodegenerator.cpp @@ -124,11 +124,16 @@ void JsonSerializationCodeGenerator::generate(ostream &os) const os << " push(static_castqualifiedName << " &>(reflectable), value, allocator);\n"; } os << " // push members\n"; + auto pushWritten = false; for (const clang::FieldDecl *field : relevantClass.record->fields()) { if (pushPrivateMembers || field->getAccess() == clang::AS_public) { os << " push(reflectable." << field->getName() << ", \"" << field->getName() << "\", value, allocator);\n"; + pushWritten = true; } } + if (relevantBases.empty() && !pushWritten) { + os << " (void)reflectable;\n (void)value;\n"; + } os << "}\n"; // skip printing the pull method for classes without default constructor because deserializing those is currently not supported @@ -154,6 +159,7 @@ void JsonSerializationCodeGenerator::generate(ostream &os) const << "\";\n" " }\n" " // pull members\n"; + auto pullWritten = false; for (const clang::FieldDecl *field : relevantClass.record->fields()) { // skip const members if (field->getType().isConstant(field->getASTContext())) { @@ -161,8 +167,12 @@ void JsonSerializationCodeGenerator::generate(ostream &os) const } if (pullPrivateMembers || field->getAccess() == clang::AS_public) { os << " pull(reflectable." << field->getName() << ", \"" << field->getName() << "\", value, errors);\n"; + pullWritten = true; } } + if (relevantBases.empty() && !pullWritten) { + os << " (void)reflectable;\n (void)value;\n"; + } os << " // restore error context for previous record\n" " if (errors) {\n" " errors->currentRecord = previousRecord;\n"