summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cs/CsUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2cs/CsUtil.cpp')
-rw-r--r--cpp/src/slice2cs/CsUtil.cpp31
1 files changed, 24 insertions, 7 deletions
diff --git a/cpp/src/slice2cs/CsUtil.cpp b/cpp/src/slice2cs/CsUtil.cpp
index 251b910f473..5de4582dd56 100644
--- a/cpp/src/slice2cs/CsUtil.cpp
+++ b/cpp/src/slice2cs/CsUtil.cpp
@@ -2335,12 +2335,16 @@ Slice::CsGenerator::toArrayAlloc(const string& decl, const string& sz)
}
void
-Slice::CsGenerator::validateMetaData(const UnitPtr& u)
+Slice::CsGenerator::validateMetaData(const UnitPtr& u, int warningLevel)
{
- MetaDataVisitor visitor;
+ MetaDataVisitor visitor(warningLevel);
u->visit(&visitor, true);
}
+Slice::CsGenerator::MetaDataVisitor::MetaDataVisitor(int warningLevel) : ParserVisitor(warningLevel)
+{
+}
+
bool
Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
@@ -2375,7 +2379,10 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
static const string csAttributePrefix = csPrefix + "attribute:";
if(s.find(csAttributePrefix) != 0 || s.size() == csAttributePrefix.size())
{
- emitWarning(file, -1, "ignoring invalid global metadata `" + oldS + "'");
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, -1, "ignoring invalid global metadata `" + oldS + "'");
+ }
continue;
}
}
@@ -2540,8 +2547,11 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
string meta;
if(cont->findMetaData(csPrefix + "generic:", meta))
{
- emitWarning(cont->file(), cont->line(), msg + " `" + meta + "':\n" +
- "serialization can only be used with the array mapping for byte sequences");
+ if(warningLevel() > 0)
+ {
+ emitWarning(cont->file(), cont->line(), msg + " `" + meta + "':\n" +
+ "serialization can only be used with the array mapping for byte sequences");
+ }
continue;
}
string type = s.substr(csSerializablePrefix.size());
@@ -2613,7 +2623,10 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
continue;
}
- emitWarning(cont->file(), cont->line(), msg + " `" + oldS + "'");
+ if(warningLevel() > 0)
+ {
+ emitWarning(cont->file(), cont->line(), msg + " `" + oldS + "'");
+ }
continue;
}
else if(s == "delegate")
@@ -2624,7 +2637,11 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
newLocalMetaData.push_back(s);
continue;
}
- emitWarning(cont->file(), cont->line(), msg + " `" + s + "'");
+
+ if(warningLevel() > 0)
+ {
+ emitWarning(cont->file(), cont->line(), msg + " `" + s + "'");
+ }
continue;
}
newLocalMetaData.push_back(s);