summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cs
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
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')
-rw-r--r--cpp/src/slice2cs/CsUtil.cpp24
-rw-r--r--cpp/src/slice2cs/CsUtil.h4
-rw-r--r--cpp/src/slice2cs/Gen.cpp82
-rw-r--r--cpp/src/slice2cs/Gen.h30
-rw-r--r--cpp/src/slice2cs/Main.cpp6
5 files changed, 68 insertions, 78 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 + "'");
}
diff --git a/cpp/src/slice2cs/CsUtil.h b/cpp/src/slice2cs/CsUtil.h
index 1741150f100..16ebd8a3c54 100644
--- a/cpp/src/slice2cs/CsUtil.h
+++ b/cpp/src/slice2cs/CsUtil.h
@@ -30,7 +30,7 @@ public:
//
// Validate all metadata in the unit with a "cs:" prefix.
//
- static void validateMetaData(const UnitPtr&, int);
+ static void validateMetaData(const UnitPtr&);
protected:
@@ -65,8 +65,6 @@ private:
{
public:
- MetaDataVisitor(int);
-
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp
index c1377db72cd..0008249211a 100644
--- a/cpp/src/slice2cs/Gen.cpp
+++ b/cpp/src/slice2cs/Gen.cpp
@@ -154,8 +154,7 @@ resultStructReturnValueName(const ParamDeclList& outParams)
}
-Slice::CsVisitor::CsVisitor(Output& out, int warningLevel) :
- ParserVisitor(warningLevel),
+Slice::CsVisitor::CsVisitor(Output& out) :
_out(out)
{
}
@@ -2021,10 +2020,9 @@ Slice::CsVisitor::writeDocCommentParam(const OperationPtr& p, ParamDir paramType
}
Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir,
- bool tie, bool impl, bool implTie, int warningLevel) :
+ bool tie, bool impl, bool implTie) :
_includePaths(includePaths),
- _tie(tie),
- _warningLevel(warningLevel)
+ _tie(tie)
{
string fileBase = base;
string::size_type pos = base.find_last_of("/\\");
@@ -2094,58 +2092,58 @@ Slice::Gen::~Gen()
void
Slice::Gen::generate(const UnitPtr& p)
{
- CsGenerator::validateMetaData(p, _warningLevel);
+ CsGenerator::validateMetaData(p);
- UnitVisitor unitVisitor(_out, _warningLevel);
+ UnitVisitor unitVisitor(_out);
p->visit(&unitVisitor, false);
- CompactIdVisitor compactIdVisitor(_out, _warningLevel);
+ CompactIdVisitor compactIdVisitor(_out);
p->visit(&compactIdVisitor, false);
- TypesVisitor typesVisitor(_out, _warningLevel);
+ TypesVisitor typesVisitor(_out);
p->visit(&typesVisitor, false);
//
// The async delegates are emitted before the proxy definition
// because the proxy methods need to know the type.
//
- AsyncDelegateVisitor asyncDelegateVisitor(_out, _warningLevel);
+ AsyncDelegateVisitor asyncDelegateVisitor(_out);
p->visit(&asyncDelegateVisitor, false);
- ResultVisitor resultVisitor(_out, _warningLevel);
+ ResultVisitor resultVisitor(_out);
p->visit(&resultVisitor, false);
- ProxyVisitor proxyVisitor(_out, _warningLevel);
+ ProxyVisitor proxyVisitor(_out);
p->visit(&proxyVisitor, false);
- OpsVisitor opsVisitor(_out, _warningLevel);
+ OpsVisitor opsVisitor(_out);
p->visit(&opsVisitor, false);
- HelperVisitor helperVisitor(_out, _warningLevel);
+ HelperVisitor helperVisitor(_out);
p->visit(&helperVisitor, false);
- DispatcherVisitor dispatcherVisitor(_out, _tie, _warningLevel);
+ DispatcherVisitor dispatcherVisitor(_out, _tie);
p->visit(&dispatcherVisitor, false);
}
void
Slice::Gen::generateImpl(const UnitPtr& p)
{
- ImplVisitor implVisitor(_impl, _warningLevel);
+ ImplVisitor implVisitor(_impl);
p->visit(&implVisitor, false);
}
void
Slice::Gen::generateImplTie(const UnitPtr& p)
{
- ImplTieVisitor implTieVisitor(_impl, _warningLevel);
+ ImplTieVisitor implTieVisitor(_impl);
p->visit(&implTieVisitor, false);
}
void
Slice::Gen::generateChecksums(const UnitPtr& u)
{
- ChecksumMap map = createChecksums(u, _warningLevel);
+ ChecksumMap map = createChecksums(u);
if(!map.empty())
{
string className = "X" + generateUUID();
@@ -2214,8 +2212,8 @@ Slice::Gen::printHeader()
_out << "//\n";
}
-Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out, int warningLevel) :
- CsVisitor(out, warningLevel)
+Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out) :
+ CsVisitor(out)
{
}
@@ -2246,8 +2244,8 @@ Slice::Gen::UnitVisitor::visitUnitStart(const UnitPtr& p)
return false;
}
-Slice::Gen::CompactIdVisitor::CompactIdVisitor(IceUtilInternal::Output& out, int warningLevel) :
- CsVisitor(out, warningLevel)
+Slice::Gen::CompactIdVisitor::CompactIdVisitor(IceUtilInternal::Output& out) :
+ CsVisitor(out)
{
}
@@ -2280,8 +2278,8 @@ Slice::Gen::CompactIdVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out, int warningLevel) :
- CsVisitor(out, warningLevel)
+Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out) :
+ CsVisitor(out)
{
}
@@ -3767,8 +3765,8 @@ Slice::Gen::TypesVisitor::writeMemberEquals(const DataMemberList& dataMembers, i
}
}
-Slice::Gen::ResultVisitor::ResultVisitor(::IceUtilInternal::Output& out, int warningLevel)
- : CsVisitor(out, warningLevel)
+Slice::Gen::ResultVisitor::ResultVisitor(::IceUtilInternal::Output& out)
+ : CsVisitor(out)
{
}
@@ -3926,8 +3924,8 @@ Slice::Gen::ResultVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::Gen::ProxyVisitor::ProxyVisitor(IceUtilInternal::Output& out, int warningLevel) :
- CsVisitor(out, warningLevel)
+Slice::Gen::ProxyVisitor::ProxyVisitor(IceUtilInternal::Output& out) :
+ CsVisitor(out)
{
}
@@ -4114,8 +4112,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::Gen::AsyncDelegateVisitor::AsyncDelegateVisitor(IceUtilInternal::Output& out, int warningLevel)
- : CsVisitor(out, warningLevel)
+Slice::Gen::AsyncDelegateVisitor::AsyncDelegateVisitor(IceUtilInternal::Output& out)
+ : CsVisitor(out)
{
}
@@ -4171,8 +4169,8 @@ Slice::Gen::AsyncDelegateVisitor::visitOperation(const OperationPtr& p)
_out << paramDeclAMI << epar << ';';
}
-Slice::Gen::OpsVisitor::OpsVisitor(IceUtilInternal::Output& out, int warningLevel)
- : CsVisitor(out, warningLevel)
+Slice::Gen::OpsVisitor::OpsVisitor(IceUtilInternal::Output& out)
+ : CsVisitor(out)
{
}
@@ -4269,8 +4267,8 @@ Slice::Gen::OpsVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::Gen::HelperVisitor::HelperVisitor(IceUtilInternal::Output& out, int warningLevel) :
- CsVisitor(out, warningLevel)
+Slice::Gen::HelperVisitor::HelperVisitor(IceUtilInternal::Output& out) :
+ CsVisitor(out)
{
}
@@ -5200,8 +5198,8 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p)
_out << eb;
}
-Slice::Gen::DispatcherVisitor::DispatcherVisitor(::IceUtilInternal::Output& out, bool tie, int warningLevel) :
- CsVisitor(out, warningLevel),
+Slice::Gen::DispatcherVisitor::DispatcherVisitor(::IceUtilInternal::Output& out, bool tie) :
+ CsVisitor(out),
_tie(tie)
{
}
@@ -5414,8 +5412,8 @@ Slice::Gen::DispatcherVisitor::writeTieOperations(const ClassDefPtr& p, NameSet*
}
}
-Slice::Gen::BaseImplVisitor::BaseImplVisitor(IceUtilInternal::Output& out, int warningLevel)
- : CsVisitor(out, warningLevel)
+Slice::Gen::BaseImplVisitor::BaseImplVisitor(IceUtilInternal::Output& out)
+ : CsVisitor(out)
{
}
@@ -5522,8 +5520,8 @@ Slice::Gen::BaseImplVisitor::writeOperation(const OperationPtr& op, bool comment
}
}
-Slice::Gen::ImplVisitor::ImplVisitor(IceUtilInternal::Output& out, int warningLevel) :
- BaseImplVisitor(out, warningLevel)
+Slice::Gen::ImplVisitor::ImplVisitor(IceUtilInternal::Output& out) :
+ BaseImplVisitor(out)
{
}
@@ -5590,8 +5588,8 @@ Slice::Gen::ImplVisitor::visitClassDefEnd(const ClassDefPtr&)
_out << eb;
}
-Slice::Gen::ImplTieVisitor::ImplTieVisitor(IceUtilInternal::Output& out, int warningLevel)
- : BaseImplVisitor(out, warningLevel)
+Slice::Gen::ImplTieVisitor::ImplTieVisitor(IceUtilInternal::Output& out)
+ : BaseImplVisitor(out)
{
}
diff --git a/cpp/src/slice2cs/Gen.h b/cpp/src/slice2cs/Gen.h
index f07bbc77cdc..d061616693d 100644
--- a/cpp/src/slice2cs/Gen.h
+++ b/cpp/src/slice2cs/Gen.h
@@ -20,7 +20,7 @@ class CsVisitor : public CsGenerator, public ParserVisitor
{
public:
- CsVisitor(::IceUtilInternal::Output&, int);
+ CsVisitor(::IceUtilInternal::Output&);
virtual ~CsVisitor();
protected:
@@ -87,8 +87,7 @@ public:
const std::string&,
bool,
bool,
- bool,
- int);
+ bool);
~Gen();
void generate(const UnitPtr&);
@@ -103,7 +102,6 @@ private:
IceUtilInternal::Output _impl;
std::vector<std::string> _includePaths;
bool _tie;
- int _warningLevel;
void printHeader();
@@ -111,7 +109,7 @@ private:
{
public:
- UnitVisitor(::IceUtilInternal::Output&, int);
+ UnitVisitor(::IceUtilInternal::Output&);
virtual bool visitUnitStart(const UnitPtr&);
};
@@ -120,7 +118,7 @@ private:
{
public:
- CompactIdVisitor(IceUtilInternal::Output&, int);
+ CompactIdVisitor(IceUtilInternal::Output&);
virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -131,7 +129,7 @@ private:
{
public:
- TypesVisitor(::IceUtilInternal::Output&, int);
+ TypesVisitor(::IceUtilInternal::Output&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -158,7 +156,7 @@ private:
{
public:
- AsyncDelegateVisitor(::IceUtilInternal::Output&, int);
+ AsyncDelegateVisitor(::IceUtilInternal::Output&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -171,7 +169,7 @@ private:
{
public:
- ResultVisitor(::IceUtilInternal::Output&, int);
+ ResultVisitor(::IceUtilInternal::Output&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -184,7 +182,7 @@ private:
{
public:
- ProxyVisitor(::IceUtilInternal::Output&, int);
+ ProxyVisitor(::IceUtilInternal::Output&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -197,7 +195,7 @@ private:
{
public:
- OpsVisitor(::IceUtilInternal::Output&, int);
+ OpsVisitor(::IceUtilInternal::Output&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -208,7 +206,7 @@ private:
{
public:
- HelperVisitor(::IceUtilInternal::Output&, int);
+ HelperVisitor(::IceUtilInternal::Output&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -222,7 +220,7 @@ private:
{
public:
- DispatcherVisitor(::IceUtilInternal::Output&, bool, int);
+ DispatcherVisitor(::IceUtilInternal::Output&, bool);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -241,7 +239,7 @@ private:
{
public:
- BaseImplVisitor(::IceUtilInternal::Output&, int);
+ BaseImplVisitor(::IceUtilInternal::Output&);
protected:
@@ -252,7 +250,7 @@ private:
{
public:
- ImplVisitor(::IceUtilInternal::Output&, int);
+ ImplVisitor(::IceUtilInternal::Output&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -264,7 +262,7 @@ private:
{
public:
- ImplTieVisitor(::IceUtilInternal::Output&, int);
+ ImplTieVisitor(::IceUtilInternal::Output&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
diff --git a/cpp/src/slice2cs/Main.cpp b/cpp/src/slice2cs/Main.cpp
index 31b60cee93d..21738ba6f83 100644
--- a/cpp/src/slice2cs/Main.cpp
+++ b/cpp/src/slice2cs/Main.cpp
@@ -82,7 +82,6 @@ usage(const string& n)
" deprecated: use instead [[\"ice-prefix\"]] metadata.\n"
"--underscore Allow underscores in Slice identifiers\n"
" deprecated: use instead [[\"underscore\"]] metadata.\n"
- "--no-warn Disable all warnings.\n"
;
}
@@ -108,7 +107,6 @@ compile(const vector<string>& argv)
opts.addOpt("", "ice");
opts.addOpt("", "underscore");
opts.addOpt("", "checksum");
- opts.addOpt("", "no-warn");
bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end();
vector<string> args;
@@ -181,8 +179,6 @@ compile(const vector<string>& argv)
bool checksum = opts.isSet("checksum");
- int warningLevel = opts.isSet("no-warn") ? 0 : 1;
-
if(args.empty())
{
consoleErr << argv[0] << ": error: no input file" << endl;
@@ -313,7 +309,7 @@ compile(const vector<string>& argv)
{
try
{
- Gen gen(icecpp->getBaseName(), includePaths, output, tie, impl, implTie, warningLevel);
+ Gen gen(icecpp->getBaseName(), includePaths, output, tie, impl, implTie);
gen.generate(p);
if(impl)
{