summaryrefslogtreecommitdiff
path: root/cpp/src/slice2cs
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2017-02-01 23:16:30 +0100
committerJose <jose@zeroc.com>2017-02-01 23:16:30 +0100
commitca131951f8d81ea3da13277172a24234b5c848ea (patch)
tree28b8d9ad6a09f550ef43f3b24df8048da8e70d7d /cpp/src/slice2cs
parentAdded entries for support of try-with-resources/with statement in Java/Python (diff)
downloadice-ca131951f8d81ea3da13277172a24234b5c848ea.tar.bz2
ice-ca131951f8d81ea3da13277172a24234b5c848ea.tar.xz
ice-ca131951f8d81ea3da13277172a24234b5c848ea.zip
Add --no-warn option to Slice compilers
Diffstat (limited to 'cpp/src/slice2cs')
-rw-r--r--cpp/src/slice2cs/CsUtil.cpp31
-rw-r--r--cpp/src/slice2cs/CsUtil.h4
-rw-r--r--cpp/src/slice2cs/Gen.cpp80
-rw-r--r--cpp/src/slice2cs/Gen.h30
-rw-r--r--cpp/src/slice2cs/Main.cpp6
5 files changed, 89 insertions, 62 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);
diff --git a/cpp/src/slice2cs/CsUtil.h b/cpp/src/slice2cs/CsUtil.h
index 16ebd8a3c54..1741150f100 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&);
+ static void validateMetaData(const UnitPtr&, int);
protected:
@@ -65,6 +65,8 @@ 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 0008249211a..5e6fc6b6407 100644
--- a/cpp/src/slice2cs/Gen.cpp
+++ b/cpp/src/slice2cs/Gen.cpp
@@ -154,7 +154,8 @@ resultStructReturnValueName(const ParamDeclList& outParams)
}
-Slice::CsVisitor::CsVisitor(Output& out) :
+Slice::CsVisitor::CsVisitor(Output& out, int warningLevel) :
+ ParserVisitor(warningLevel),
_out(out)
{
}
@@ -2020,9 +2021,10 @@ 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) :
+ bool tie, bool impl, bool implTie, int warningLevel) :
_includePaths(includePaths),
- _tie(tie)
+ _tie(tie),
+ _warningLevel(warningLevel)
{
string fileBase = base;
string::size_type pos = base.find_last_of("/\\");
@@ -2092,51 +2094,51 @@ Slice::Gen::~Gen()
void
Slice::Gen::generate(const UnitPtr& p)
{
- CsGenerator::validateMetaData(p);
+ CsGenerator::validateMetaData(p, _warningLevel);
- UnitVisitor unitVisitor(_out);
+ UnitVisitor unitVisitor(_out, _warningLevel);
p->visit(&unitVisitor, false);
- CompactIdVisitor compactIdVisitor(_out);
+ CompactIdVisitor compactIdVisitor(_out, _warningLevel);
p->visit(&compactIdVisitor, false);
- TypesVisitor typesVisitor(_out);
+ TypesVisitor typesVisitor(_out, _warningLevel);
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);
+ AsyncDelegateVisitor asyncDelegateVisitor(_out, _warningLevel);
p->visit(&asyncDelegateVisitor, false);
- ResultVisitor resultVisitor(_out);
+ ResultVisitor resultVisitor(_out, _warningLevel);
p->visit(&resultVisitor, false);
- ProxyVisitor proxyVisitor(_out);
+ ProxyVisitor proxyVisitor(_out, _warningLevel);
p->visit(&proxyVisitor, false);
- OpsVisitor opsVisitor(_out);
+ OpsVisitor opsVisitor(_out, _warningLevel);
p->visit(&opsVisitor, false);
- HelperVisitor helperVisitor(_out);
+ HelperVisitor helperVisitor(_out, _warningLevel);
p->visit(&helperVisitor, false);
- DispatcherVisitor dispatcherVisitor(_out, _tie);
+ DispatcherVisitor dispatcherVisitor(_out, _tie, _warningLevel);
p->visit(&dispatcherVisitor, false);
}
void
Slice::Gen::generateImpl(const UnitPtr& p)
{
- ImplVisitor implVisitor(_impl);
+ ImplVisitor implVisitor(_impl, _warningLevel);
p->visit(&implVisitor, false);
}
void
Slice::Gen::generateImplTie(const UnitPtr& p)
{
- ImplTieVisitor implTieVisitor(_impl);
+ ImplTieVisitor implTieVisitor(_impl, _warningLevel);
p->visit(&implTieVisitor, false);
}
@@ -2212,8 +2214,8 @@ Slice::Gen::printHeader()
_out << "//\n";
}
-Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out) :
- CsVisitor(out)
+Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out, int warningLevel) :
+ CsVisitor(out, warningLevel)
{
}
@@ -2244,8 +2246,8 @@ Slice::Gen::UnitVisitor::visitUnitStart(const UnitPtr& p)
return false;
}
-Slice::Gen::CompactIdVisitor::CompactIdVisitor(IceUtilInternal::Output& out) :
- CsVisitor(out)
+Slice::Gen::CompactIdVisitor::CompactIdVisitor(IceUtilInternal::Output& out, int warningLevel) :
+ CsVisitor(out, warningLevel)
{
}
@@ -2278,8 +2280,8 @@ Slice::Gen::CompactIdVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out) :
- CsVisitor(out)
+Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out, int warningLevel) :
+ CsVisitor(out, warningLevel)
{
}
@@ -3765,8 +3767,8 @@ Slice::Gen::TypesVisitor::writeMemberEquals(const DataMemberList& dataMembers, i
}
}
-Slice::Gen::ResultVisitor::ResultVisitor(::IceUtilInternal::Output& out)
- : CsVisitor(out)
+Slice::Gen::ResultVisitor::ResultVisitor(::IceUtilInternal::Output& out, int warningLevel)
+ : CsVisitor(out, warningLevel)
{
}
@@ -3924,8 +3926,8 @@ Slice::Gen::ResultVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::Gen::ProxyVisitor::ProxyVisitor(IceUtilInternal::Output& out) :
- CsVisitor(out)
+Slice::Gen::ProxyVisitor::ProxyVisitor(IceUtilInternal::Output& out, int warningLevel) :
+ CsVisitor(out, warningLevel)
{
}
@@ -4112,8 +4114,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::Gen::AsyncDelegateVisitor::AsyncDelegateVisitor(IceUtilInternal::Output& out)
- : CsVisitor(out)
+Slice::Gen::AsyncDelegateVisitor::AsyncDelegateVisitor(IceUtilInternal::Output& out, int warningLevel)
+ : CsVisitor(out, warningLevel)
{
}
@@ -4169,8 +4171,8 @@ Slice::Gen::AsyncDelegateVisitor::visitOperation(const OperationPtr& p)
_out << paramDeclAMI << epar << ';';
}
-Slice::Gen::OpsVisitor::OpsVisitor(IceUtilInternal::Output& out)
- : CsVisitor(out)
+Slice::Gen::OpsVisitor::OpsVisitor(IceUtilInternal::Output& out, int warningLevel)
+ : CsVisitor(out, warningLevel)
{
}
@@ -4267,8 +4269,8 @@ Slice::Gen::OpsVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::Gen::HelperVisitor::HelperVisitor(IceUtilInternal::Output& out) :
- CsVisitor(out)
+Slice::Gen::HelperVisitor::HelperVisitor(IceUtilInternal::Output& out, int warningLevel) :
+ CsVisitor(out, warningLevel)
{
}
@@ -5198,8 +5200,8 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p)
_out << eb;
}
-Slice::Gen::DispatcherVisitor::DispatcherVisitor(::IceUtilInternal::Output& out, bool tie) :
- CsVisitor(out),
+Slice::Gen::DispatcherVisitor::DispatcherVisitor(::IceUtilInternal::Output& out, bool tie, int warningLevel) :
+ CsVisitor(out, warningLevel),
_tie(tie)
{
}
@@ -5412,8 +5414,8 @@ Slice::Gen::DispatcherVisitor::writeTieOperations(const ClassDefPtr& p, NameSet*
}
}
-Slice::Gen::BaseImplVisitor::BaseImplVisitor(IceUtilInternal::Output& out)
- : CsVisitor(out)
+Slice::Gen::BaseImplVisitor::BaseImplVisitor(IceUtilInternal::Output& out, int warningLevel)
+ : CsVisitor(out, warningLevel)
{
}
@@ -5520,8 +5522,8 @@ Slice::Gen::BaseImplVisitor::writeOperation(const OperationPtr& op, bool comment
}
}
-Slice::Gen::ImplVisitor::ImplVisitor(IceUtilInternal::Output& out) :
- BaseImplVisitor(out)
+Slice::Gen::ImplVisitor::ImplVisitor(IceUtilInternal::Output& out, int warningLevel) :
+ BaseImplVisitor(out, warningLevel)
{
}
@@ -5588,8 +5590,8 @@ Slice::Gen::ImplVisitor::visitClassDefEnd(const ClassDefPtr&)
_out << eb;
}
-Slice::Gen::ImplTieVisitor::ImplTieVisitor(IceUtilInternal::Output& out)
- : BaseImplVisitor(out)
+Slice::Gen::ImplTieVisitor::ImplTieVisitor(IceUtilInternal::Output& out, int warningLevel)
+ : BaseImplVisitor(out, warningLevel)
{
}
diff --git a/cpp/src/slice2cs/Gen.h b/cpp/src/slice2cs/Gen.h
index d061616693d..f07bbc77cdc 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&);
+ CsVisitor(::IceUtilInternal::Output&, int);
virtual ~CsVisitor();
protected:
@@ -87,7 +87,8 @@ public:
const std::string&,
bool,
bool,
- bool);
+ bool,
+ int);
~Gen();
void generate(const UnitPtr&);
@@ -102,6 +103,7 @@ private:
IceUtilInternal::Output _impl;
std::vector<std::string> _includePaths;
bool _tie;
+ int _warningLevel;
void printHeader();
@@ -109,7 +111,7 @@ private:
{
public:
- UnitVisitor(::IceUtilInternal::Output&);
+ UnitVisitor(::IceUtilInternal::Output&, int);
virtual bool visitUnitStart(const UnitPtr&);
};
@@ -118,7 +120,7 @@ private:
{
public:
- CompactIdVisitor(IceUtilInternal::Output&);
+ CompactIdVisitor(IceUtilInternal::Output&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -129,7 +131,7 @@ private:
{
public:
- TypesVisitor(::IceUtilInternal::Output&);
+ TypesVisitor(::IceUtilInternal::Output&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -156,7 +158,7 @@ private:
{
public:
- AsyncDelegateVisitor(::IceUtilInternal::Output&);
+ AsyncDelegateVisitor(::IceUtilInternal::Output&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -169,7 +171,7 @@ private:
{
public:
- ResultVisitor(::IceUtilInternal::Output&);
+ ResultVisitor(::IceUtilInternal::Output&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -182,7 +184,7 @@ private:
{
public:
- ProxyVisitor(::IceUtilInternal::Output&);
+ ProxyVisitor(::IceUtilInternal::Output&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -195,7 +197,7 @@ private:
{
public:
- OpsVisitor(::IceUtilInternal::Output&);
+ OpsVisitor(::IceUtilInternal::Output&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -206,7 +208,7 @@ private:
{
public:
- HelperVisitor(::IceUtilInternal::Output&);
+ HelperVisitor(::IceUtilInternal::Output&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -220,7 +222,7 @@ private:
{
public:
- DispatcherVisitor(::IceUtilInternal::Output&, bool);
+ DispatcherVisitor(::IceUtilInternal::Output&, bool, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -239,7 +241,7 @@ private:
{
public:
- BaseImplVisitor(::IceUtilInternal::Output&);
+ BaseImplVisitor(::IceUtilInternal::Output&, int);
protected:
@@ -250,7 +252,7 @@ private:
{
public:
- ImplVisitor(::IceUtilInternal::Output&);
+ ImplVisitor(::IceUtilInternal::Output&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -262,7 +264,7 @@ private:
{
public:
- ImplTieVisitor(::IceUtilInternal::Output&);
+ ImplTieVisitor(::IceUtilInternal::Output&, int);
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 21738ba6f83..31b60cee93d 100644
--- a/cpp/src/slice2cs/Main.cpp
+++ b/cpp/src/slice2cs/Main.cpp
@@ -82,6 +82,7 @@ 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"
;
}
@@ -107,6 +108,7 @@ 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;
@@ -179,6 +181,8 @@ 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;
@@ -309,7 +313,7 @@ compile(const vector<string>& argv)
{
try
{
- Gen gen(icecpp->getBaseName(), includePaths, output, tie, impl, implTie);
+ Gen gen(icecpp->getBaseName(), includePaths, output, tie, impl, implTie, warningLevel);
gen.generate(p);
if(impl)
{