summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cs/CsUtil.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2017-02-03 18:10:20 +0100
committerJose <jose@zeroc.com>2017-02-03 18:10:20 +0100
commit7274ebf13c7a1ff3b587598335201c3a4e848c90 (patch)
treead673e775b6ab68d511bcc86cf420c519b65948d /cpp/src/slice2cs/CsUtil.cpp
parentConnection::close fixes for C#/Java/JS (diff)
downloadice-7274ebf13c7a1ff3b587598335201c3a4e848c90.tar.bz2
ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.tar.xz
ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.zip
Rework warning suppression to use global meta data
Diffstat (limited to 'cpp/src/slice2cs/CsUtil.cpp')
-rw-r--r--cpp/src/slice2cs/CsUtil.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/cpp/src/slice2cs/CsUtil.cpp b/cpp/src/slice2cs/CsUtil.cpp
index 5de4582dd56..dac1c6a362e 100644
--- a/cpp/src/slice2cs/CsUtil.cpp
+++ b/cpp/src/slice2cs/CsUtil.cpp
@@ -2335,16 +2335,12 @@ Slice::CsGenerator::toArrayAlloc(const string& decl, const string& sz)
}
void
-Slice::CsGenerator::validateMetaData(const UnitPtr& u, int warningLevel)
+Slice::CsGenerator::validateMetaData(const UnitPtr& u)
{
- MetaDataVisitor visitor(warningLevel);
+ MetaDataVisitor visitor;
u->visit(&visitor, true);
}
-Slice::CsGenerator::MetaDataVisitor::MetaDataVisitor(int warningLevel) : ParserVisitor(warningLevel)
-{
-}
-
bool
Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
@@ -2352,7 +2348,6 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
// Validate global metadata in the top-level file and all included files.
//
StringList files = p->allFiles();
-
for(StringList::iterator q = files.begin(); q != files.end(); ++q)
{
string file = *q;
@@ -2360,7 +2355,7 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
assert(dc);
StringList globalMetaData = dc->getMetaData();
StringList newGlobalMetaData;
-
+ bool emitWarnings = !dc->suppressWarning("invalid-metadata");
static const string csPrefix = "cs:";
static const string clrPrefix = "clr:";
@@ -2379,7 +2374,7 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
static const string csAttributePrefix = csPrefix + "attribute:";
if(s.find(csAttributePrefix) != 0 || s.size() == csAttributePrefix.size())
{
- if(warningLevel() > 0)
+ if(emitWarnings)
{
emitWarning(file, -1, "ignoring invalid global metadata `" + oldS + "'");
}
@@ -2504,6 +2499,11 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
StringList localMetaData = cont->getMetaData();
StringList newLocalMetaData;
+ const UnitPtr unit = cont->unit();
+ const DefinitionContextPtr dc = unit->findDefinitionContext(cont->file());
+ assert(dc);
+ bool emitWarnings = !dc->suppressWarning("invalid-metadata");
+
for(StringList::iterator p = localMetaData.begin(); p != localMetaData.end(); ++p)
{
string& s = *p;
@@ -2547,7 +2547,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
string meta;
if(cont->findMetaData(csPrefix + "generic:", meta))
{
- if(warningLevel() > 0)
+ if(emitWarnings)
{
emitWarning(cont->file(), cont->line(), msg + " `" + meta + "':\n" +
"serialization can only be used with the array mapping for byte sequences");
@@ -2623,7 +2623,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
continue;
}
- if(warningLevel() > 0)
+ if(emitWarnings)
{
emitWarning(cont->file(), cont->line(), msg + " `" + oldS + "'");
}
@@ -2638,7 +2638,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont)
continue;
}
- if(warningLevel() > 0)
+ if(emitWarnings)
{
emitWarning(cont->file(), cont->line(), msg + " `" + s + "'");
}