summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Slice/Checksum.cpp7
-rw-r--r--cpp/src/Slice/JavaUtil.cpp68
-rw-r--r--cpp/src/Slice/JavaUtil.h4
-rw-r--r--cpp/src/Slice/Parser.cpp11
-rw-r--r--cpp/src/Slice/Parser.h8
-rw-r--r--cpp/src/Slice/Python.cpp19
-rw-r--r--cpp/src/Slice/PythonUtil.cpp46
-rw-r--r--cpp/src/Slice/PythonUtil.h2
-rw-r--r--cpp/src/Slice/Ruby.cpp6
-rw-r--r--cpp/src/Slice/RubyUtil.cpp10
-rw-r--r--cpp/src/Slice/RubyUtil.h2
-rw-r--r--cpp/src/slice2confluence/Gen.cpp31
-rw-r--r--cpp/src/slice2confluence/Gen.h10
-rw-r--r--cpp/src/slice2confluence/Main.cpp6
-rw-r--r--cpp/src/slice2cpp/Gen.cpp202
-rw-r--r--cpp/src/slice2cpp/Gen.h99
-rw-r--r--cpp/src/slice2cpp/Main.cpp6
-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
-rw-r--r--cpp/src/slice2html/Gen.cpp30
-rw-r--r--cpp/src/slice2html/Gen.h10
-rw-r--r--cpp/src/slice2html/Main.cpp6
-rw-r--r--cpp/src/slice2java/Gen.cpp115
-rw-r--r--cpp/src/slice2java/Gen.h20
-rw-r--r--cpp/src/slice2java/GenCompat.cpp163
-rw-r--r--cpp/src/slice2java/GenCompat.h30
-rw-r--r--cpp/src/slice2java/Main.cpp45
-rw-r--r--cpp/src/slice2js/Gen.cpp32
-rw-r--r--cpp/src/slice2js/Gen.h15
-rw-r--r--cpp/src/slice2js/Main.cpp8
-rw-r--r--cpp/src/slice2objc/Gen.cpp61
-rw-r--r--cpp/src/slice2objc/Gen.h20
-rw-r--r--cpp/src/slice2objc/Main.cpp7
-rw-r--r--cpp/src/slice2objc/ObjCUtil.cpp38
-rw-r--r--cpp/src/slice2objc/ObjCUtil.h4
-rw-r--r--cpp/src/slice2php/Main.cpp30
39 files changed, 773 insertions, 549 deletions
diff --git a/cpp/src/Slice/Checksum.cpp b/cpp/src/Slice/Checksum.cpp
index 1c8a21511e8..887a350903f 100644
--- a/cpp/src/Slice/Checksum.cpp
+++ b/cpp/src/Slice/Checksum.cpp
@@ -21,7 +21,7 @@ class ChecksumVisitor : public ParserVisitor
{
public:
- ChecksumVisitor(ChecksumMap&);
+ ChecksumVisitor(ChecksumMap&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual bool visitExceptionStart(const ExceptionPtr&);
@@ -41,7 +41,8 @@ private:
}
-Slice::ChecksumVisitor::ChecksumVisitor(ChecksumMap& m) :
+Slice::ChecksumVisitor::ChecksumVisitor(ChecksumMap& m, int warningLevel) :
+ ParserVisitor(warningLevel),
_map(m)
{
}
@@ -445,7 +446,7 @@ Slice::createChecksums(const UnitPtr& u)
{
ChecksumMap result;
- ChecksumVisitor visitor(result);
+ ChecksumVisitor visitor(result, 0);
u->visit(&visitor, false);
return result;
diff --git a/cpp/src/Slice/JavaUtil.cpp b/cpp/src/Slice/JavaUtil.cpp
index 7bb4ab6dcea..7c2f83fb20e 100644
--- a/cpp/src/Slice/JavaUtil.cpp
+++ b/cpp/src/Slice/JavaUtil.cpp
@@ -139,6 +139,10 @@ class MetaDataVisitor : public ParserVisitor
{
public:
+ MetaDataVisitor(int warningLevel) : ParserVisitor(warningLevel)
+ {
+ }
+
virtual bool visitUnitStart(const UnitPtr& p)
{
static const string prefix = "java:";
@@ -171,7 +175,10 @@ public:
}
else
{
- emitWarning(file, "", "ignoring invalid global metadata `" + s + "'");
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, "", "ignoring invalid global metadata `" + s + "'");
+ }
globalMetaData.remove(s);
continue;
}
@@ -238,8 +245,11 @@ public:
string s = *q++;
if(s.find("java:type:", 0) == 0)
{
- emitWarning(p->file(), p->line(), "ignoring invalid metadata `" + s +
- "' for operation with void return type");
+ if(warningLevel() > 0)
+ {
+ emitWarning(p->file(), p->line(), "ignoring invalid metadata `" + s +
+ "' for operation with void return type");
+ }
metaData.remove(s);
continue;
}
@@ -293,8 +303,11 @@ public:
BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type());
if(!builtin || builtin->kind() != Builtin::KindByte)
{
- emitWarning(file, line, "ignoring invalid metadata `" + s + "': " +
- "this metadata can only be used with a byte sequence");
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "ignoring invalid metadata `" + s + "': " +
+ "this metadata can only be used with a byte sequence");
+ }
continue;
}
newMetaData.push_back(s);
@@ -309,8 +322,11 @@ public:
builtin->kind() != Builtin::KindInt && builtin->kind() != Builtin::KindLong &&
builtin->kind() != Builtin::KindFloat && builtin->kind() != Builtin::KindDouble))
{
- emitWarning(file, line, "ignoring invalid metadata `" + s + "': " +
- "this metadata can not be used with this type");
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "ignoring invalid metadata `" + s + "': " +
+ "this metadata can not be used with this type");
+ }
continue;
}
newMetaData.push_back(s);
@@ -415,7 +431,10 @@ private:
continue;
}
- emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'");
+ if(warningLevel() > 0)
+ {
+ emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'");
+ }
}
else
{
@@ -449,7 +468,10 @@ private:
assert(b);
str = b->typeId();
}
- emitWarning(file, line, "invalid metadata for " + str);
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "invalid metadata for " + str);
+ }
}
else if(i->find("java:buffer") == 0)
{
@@ -467,14 +489,21 @@ private:
}
}
- emitWarning(file, line, "ignoring invalid metadata `" + *i + "'");
+
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "ignoring invalid metadata `" + *i + "'");
+ }
}
else if(i->find("java:protobuf:") == 0 || i->find("java:serializable:") == 0)
{
//
// Only valid in sequence definition which is checked in visitSequence
//
- emitWarning(file, line, "ignoring invalid metadata `" + *i + "'");
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "ignoring invalid metadata `" + *i + "'");
+ }
}
else if(i->find("delegate") == 0)
{
@@ -483,7 +512,7 @@ private:
{
newMetaData.push_back(*i);
}
- else
+ else if(warningLevel() > 0)
{
emitWarning(file, line, "ignoring invalid metadata `" + *i + "'");
}
@@ -494,7 +523,7 @@ private:
{
newMetaData.push_back(*i);
}
- else
+ else if(warningLevel() > 0)
{
emitWarning(file, line, "ignoring invalid metadata `" + *i + "'");
}
@@ -531,7 +560,10 @@ private:
assert(b);
str = b->typeId();
}
- emitWarning(file, line, "invalid metadata for " + str);
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "invalid metadata for " + str);
+ }
continue;
}
newMetaData.push_back(*i);
@@ -3187,9 +3219,9 @@ Slice::JavaCompatGenerator::createOutput()
}
void
-Slice::JavaCompatGenerator::validateMetaData(const UnitPtr& u)
+Slice::JavaCompatGenerator::validateMetaData(const UnitPtr& u, int warningLevel)
{
- MetaDataVisitor visitor;
+ MetaDataVisitor visitor(warningLevel);
u->visit(&visitor, true);
}
@@ -5498,8 +5530,8 @@ Slice::JavaGenerator::createOutput()
}
void
-Slice::JavaGenerator::validateMetaData(const UnitPtr& u)
+Slice::JavaGenerator::validateMetaData(const UnitPtr& u, int warningLevel)
{
- MetaDataVisitor visitor;
+ MetaDataVisitor visitor(warningLevel);
u->visit(&visitor, true);
}
diff --git a/cpp/src/Slice/JavaUtil.h b/cpp/src/Slice/JavaUtil.h
index fcc77d30f63..c16f78a3247 100644
--- a/cpp/src/Slice/JavaUtil.h
+++ b/cpp/src/Slice/JavaUtil.h
@@ -68,7 +68,7 @@ public:
//
// Validate all metadata in the unit with a "java:" prefix.
//
- static void validateMetaData(const UnitPtr&);
+ static void validateMetaData(const UnitPtr&, int);
void close();
@@ -235,7 +235,7 @@ public:
//
// Validate all metadata in the unit with a "java:" prefix.
//
- static void validateMetaData(const UnitPtr&);
+ static void validateMetaData(const UnitPtr&, int);
void close();
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp
index f400cf90467..5db58db7ef9 100644
--- a/cpp/src/Slice/Parser.cpp
+++ b/cpp/src/Slice/Parser.cpp
@@ -122,6 +122,17 @@ Unit* unit;
}
+Slice::ParserVisitor::ParserVisitor(int warningLevel) :
+ _warningLevel(warningLevel)
+{
+}
+
+int
+Slice::ParserVisitor::warningLevel()
+{
+ return _warningLevel;
+}
+
// ----------------------------------------------------------------------
// DefinitionContext
// ----------------------------------------------------------------------
diff --git a/cpp/src/Slice/Parser.h b/cpp/src/Slice/Parser.h
index 38be6b6c7bc..3f969dbf330 100644
--- a/cpp/src/Slice/Parser.h
+++ b/cpp/src/Slice/Parser.h
@@ -191,6 +191,8 @@ class ParserVisitor
{
public:
+ ParserVisitor(int warningLevel = 1);
+
virtual ~ParserVisitor() { }
virtual bool visitUnitStart(const UnitPtr&) { return true; }
virtual void visitUnitEnd(const UnitPtr&) { }
@@ -210,6 +212,12 @@ public:
virtual void visitDictionary(const DictionaryPtr&) { }
virtual void visitEnum(const EnumPtr&) { }
virtual void visitConst(const ConstPtr&) { }
+
+ int warningLevel();
+
+private:
+
+ int _warningLevel;
};
// ----------------------------------------------------------------------
diff --git a/cpp/src/Slice/Python.cpp b/cpp/src/Slice/Python.cpp
index bc1da962d70..057fb22cca4 100644
--- a/cpp/src/Slice/Python.cpp
+++ b/cpp/src/Slice/Python.cpp
@@ -101,13 +101,13 @@ class PackageVisitor : public ParserVisitor
{
public:
- static void createModules(const UnitPtr&, const string&, const string&);
+ static void createModules(const UnitPtr&, const string&, const string&, int);
virtual void visitModuleEnd(const ModulePtr&);
private:
- PackageVisitor(StringList&);
+ PackageVisitor(StringList&, int);
enum ReadState { PreModules, InModules, InSubmodules };
@@ -128,16 +128,17 @@ private:
const char* PackageVisitor::_moduleTag = "# Modules:";
const char* PackageVisitor::_submoduleTag = "# Submodules:";
-PackageVisitor::PackageVisitor(StringList& modules) :
+PackageVisitor::PackageVisitor(StringList& modules, int warningLevel) :
+ ParserVisitor(warningLevel),
_modules(modules)
{
}
void
-PackageVisitor::createModules(const UnitPtr& unit, const string& module, const string& dir)
+PackageVisitor::createModules(const UnitPtr& unit, const string& module, const string& dir, int warningLevel)
{
StringList modules;
- PackageVisitor v(modules);
+ PackageVisitor v(modules, warningLevel);
unit->visit(&v, false);
for(StringList::iterator p = modules.begin(); p != modules.end(); ++p)
@@ -403,6 +404,7 @@ usage(const string& n)
"--all Generate code for Slice definitions in included files.\n"
"--checksum Generate checksums for Slice definitions.\n"
"--prefix PREFIX Prepend filenames of Python modules with PREFIX.\n"
+ "--no-warn Disable all warnings.\n"
;
}
@@ -430,6 +432,7 @@ Slice::Python::compile(const vector<string>& argv)
opts.addOpt("", "build-package");
opts.addOpt("", "checksum");
opts.addOpt("", "prefix", IceUtilInternal::Options::NeedArg);
+ opts.addOpt("", "no-warn");
vector<string> args;
try
@@ -500,6 +503,8 @@ Slice::Python::compile(const vector<string>& argv)
string prefix = opts.optArg("prefix");
+ int warningLevel = opts.isSet("no-warn") ? 0 : 1;
+
if(args.empty())
{
consoleErr << argv[0] << ": error: no input file" << endl;
@@ -665,7 +670,7 @@ Slice::Python::compile(const vector<string>& argv)
//
// Generate Python code.
//
- generate(u, all, checksum, includePaths, out);
+ generate(u, all, checksum, includePaths, out, warningLevel);
out.close();
}
@@ -675,7 +680,7 @@ Slice::Python::compile(const vector<string>& argv)
//
if(!noPackage)
{
- PackageVisitor::createModules(u, prefix + base + "_ice", output);
+ PackageVisitor::createModules(u, prefix + base + "_ice", output, warningLevel);
}
}
catch(const Slice::FileException& ex)
diff --git a/cpp/src/Slice/PythonUtil.cpp b/cpp/src/Slice/PythonUtil.cpp
index 8373daabb4f..c3e98bd1627 100644
--- a/cpp/src/Slice/PythonUtil.cpp
+++ b/cpp/src/Slice/PythonUtil.cpp
@@ -50,6 +50,8 @@ class MetaDataVisitor : public ParserVisitor
{
public:
+ MetaDataVisitor(int);
+
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitClassDecl(const ClassDeclPtr&);
@@ -91,7 +93,7 @@ class ModuleVisitor : public ParserVisitor
{
public:
- ModuleVisitor(Output&, set<string>&);
+ ModuleVisitor(Output&, set<string>&, int);
virtual bool visitModuleStart(const ModulePtr&);
@@ -108,7 +110,7 @@ class CodeVisitor : public ParserVisitor
{
public:
- CodeVisitor(IceUtilInternal::Output&, set<string>&);
+ CodeVisitor(IceUtilInternal::Output&, set<string>&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -291,7 +293,8 @@ getDictLookup(const ContainedPtr& cont, const string& suffix = "", const string&
//
// ModuleVisitor implementation.
//
-Slice::Python::ModuleVisitor::ModuleVisitor(Output& out, set<string>& history) :
+Slice::Python::ModuleVisitor::ModuleVisitor(Output& out, set<string>& history, int warningLevel) :
+ ParserVisitor(warningLevel),
_out(out), _history(history)
{
}
@@ -341,8 +344,10 @@ Slice::Python::ModuleVisitor::visitModuleStart(const ModulePtr& p)
//
// CodeVisitor implementation.
//
-Slice::Python::CodeVisitor::CodeVisitor(Output& out, set<string>& moduleHistory) :
- _out(out), _moduleHistory(moduleHistory)
+Slice::Python::CodeVisitor::CodeVisitor(Output& out, set<string>& moduleHistory, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _out(out),
+ _moduleHistory(moduleHistory)
{
}
@@ -2830,9 +2835,9 @@ Slice::Python::CodeVisitor::writeDocstring(const OperationPtr& op, DocstringMode
void
Slice::Python::generate(const UnitPtr& un, bool all, bool checksum, const vector<string>& includePaths,
- Output& out)
+ Output& out, int warningLevel)
{
- Slice::Python::MetaDataVisitor visitor;
+ Slice::Python::MetaDataVisitor visitor(warningLevel);
un->visit(&visitor, false);
out << nl << "from sys import version_info as _version_info_";
@@ -2857,10 +2862,10 @@ Slice::Python::generate(const UnitPtr& un, bool all, bool checksum, const vector
set<string> moduleHistory;
- ModuleVisitor moduleVisitor(out, moduleHistory);
+ ModuleVisitor moduleVisitor(out, moduleHistory, warningLevel);
un->visit(&moduleVisitor, true);
- CodeVisitor codeVisitor(out, moduleHistory);
+ CodeVisitor codeVisitor(out, moduleHistory, warningLevel);
un->visit(&codeVisitor, false);
if(checksum)
@@ -2981,6 +2986,11 @@ Slice::Python::printHeader(IceUtilInternal::Output& out)
out << "#\n";
}
+Slice::Python::MetaDataVisitor::MetaDataVisitor(int warningLevel) :
+ ParserVisitor(warningLevel)
+{
+}
+
bool
Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
@@ -3007,7 +3017,11 @@ Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
continue;
}
- emitWarning(file, "", "ignoring invalid global metadata `" + s + "'");
+
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, "", "ignoring invalid global metadata `" + s + "'");
+ }
globalMetaData.remove(s);
}
}
@@ -3092,8 +3106,11 @@ Slice::Python::MetaDataVisitor::visitSequence(const SequencePtr& p)
BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type());
if(!builtin || builtin->kind() != Builtin::KindByte)
{
- emitWarning(file, line, "ignoring invalid metadata `" + s + ": " +
- "`protobuf' encoding must be a byte sequence");
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "ignoring invalid metadata `" + s + ": " +
+ "`protobuf' encoding must be a byte sequence");
+ }
}
else
{
@@ -3149,7 +3166,10 @@ Slice::Python::MetaDataVisitor::validateSequence(const string& file, const strin
}
}
}
- emitWarning(file, line, "ignoring invalid metadata `" + s + "'");
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "ignoring invalid metadata `" + s + "'");
+ }
newMetaData.remove(s);
}
}
diff --git a/cpp/src/Slice/PythonUtil.h b/cpp/src/Slice/PythonUtil.h
index 9d48b3d3871..161d3bdb148 100644
--- a/cpp/src/Slice/PythonUtil.h
+++ b/cpp/src/Slice/PythonUtil.h
@@ -21,7 +21,7 @@ namespace Python
//
// Generate Python code for a translation unit.
//
-void generate(const Slice::UnitPtr&, bool, bool, const std::vector<std::string>&, IceUtilInternal::Output&);
+void generate(const Slice::UnitPtr&, bool, bool, const std::vector<std::string>&, IceUtilInternal::Output&, int);
//
// Convert a scoped name into a Python name.
diff --git a/cpp/src/Slice/Ruby.cpp b/cpp/src/Slice/Ruby.cpp
index 7861bcb8c0b..7bd4dd07d17 100644
--- a/cpp/src/Slice/Ruby.cpp
+++ b/cpp/src/Slice/Ruby.cpp
@@ -81,6 +81,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"
;
}
@@ -105,6 +106,7 @@ Slice::Ruby::compile(const vector<string>& argv)
opts.addOpt("", "underscore");
opts.addOpt("", "all");
opts.addOpt("", "checksum");
+ opts.addOpt("", "no-warn");
vector<string> args;
try
@@ -169,6 +171,8 @@ Slice::Ruby::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;
@@ -311,7 +315,7 @@ Slice::Ruby::compile(const vector<string>& argv)
//
// Generate the Ruby mapping.
//
- generate(u, all, checksum, includePaths, out);
+ generate(u, all, checksum, includePaths, out, warningLevel);
out.close();
}
diff --git a/cpp/src/Slice/RubyUtil.cpp b/cpp/src/Slice/RubyUtil.cpp
index 9c1a32d8e77..f0cbcdc7fb1 100644
--- a/cpp/src/Slice/RubyUtil.cpp
+++ b/cpp/src/Slice/RubyUtil.cpp
@@ -52,7 +52,7 @@ class CodeVisitor : public ParserVisitor
{
public:
- CodeVisitor(IceUtilInternal::Output&);
+ CodeVisitor(IceUtilInternal::Output&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -184,7 +184,8 @@ splitScopedName(const string& scoped)
//
// CodeVisitor implementation.
//
-Slice::Ruby::CodeVisitor::CodeVisitor(Output& out) :
+Slice::Ruby::CodeVisitor::CodeVisitor(Output& out, int warningLevel) :
+ ParserVisitor(warningLevel),
_out(out)
{
}
@@ -1445,7 +1446,8 @@ Slice::Ruby::CodeVisitor::collectExceptionMembers(const ExceptionPtr& p, MemberI
}
void
-Slice::Ruby::generate(const UnitPtr& un, bool all, bool checksum, const vector<string>& includePaths, Output& out)
+Slice::Ruby::generate(const UnitPtr& un, bool all, bool checksum, const vector<string>& includePaths, Output& out,
+ int warningLevel)
{
out << nl << "require 'Ice'";
@@ -1465,7 +1467,7 @@ Slice::Ruby::generate(const UnitPtr& un, bool all, bool checksum, const vector<s
}
}
- CodeVisitor codeVisitor(out);
+ CodeVisitor codeVisitor(out, warningLevel);
un->visit(&codeVisitor, false);
if(checksum)
diff --git a/cpp/src/Slice/RubyUtil.h b/cpp/src/Slice/RubyUtil.h
index e67ecd1b623..387cbc67073 100644
--- a/cpp/src/Slice/RubyUtil.h
+++ b/cpp/src/Slice/RubyUtil.h
@@ -21,7 +21,7 @@ namespace Ruby
//
// Generate Ruby code for a translation unit.
//
-void generate(const Slice::UnitPtr&, bool, bool, const std::vector<std::string>&, IceUtilInternal::Output&);
+void generate(const Slice::UnitPtr&, bool, bool, const std::vector<std::string>&, IceUtilInternal::Output&, int);
//
// Check the given identifier against Ruby's list of reserved words. If it matches
diff --git a/cpp/src/slice2confluence/Gen.cpp b/cpp/src/slice2confluence/Gen.cpp
index 00bd746812d..77624f6cdfa 100644
--- a/cpp/src/slice2confluence/Gen.cpp
+++ b/cpp/src/slice2confluence/Gen.cpp
@@ -39,7 +39,8 @@ namespace Slice
void
generate(const UnitPtr& unit, const string& dir, const string& header, const string& footer,
const string& indexHeader, const string& indexFooter, const string& imageDir, const string& logoURL,
- const string& searchAction, unsigned indexCount, unsigned warnSummary, const vector<string>& sortOrder)
+ const string& searchAction, unsigned indexCount, unsigned warnSummary, const vector<string>& sortOrder,
+ int warningLevel)
{
unit->mergeModules();
@@ -68,19 +69,19 @@ generate(const UnitPtr& unit, const string& dir, const string& header, const str
// to the symbol; if the latter, we cannot.
//
Files files;
- FileVisitor tv(files);
+ FileVisitor tv(files, warningLevel);
unit->visit(&tv, false);
//
// Generate the start page.
//
- StartPageVisitor spv(files);
+ StartPageVisitor spv(files, warningLevel);
unit->visit(&spv, false);
//
// Generate the table of contents.
//
- TOCVisitor tocv(files, indexHeader, indexFooter);
+ TOCVisitor tocv(files, indexHeader, indexFooter, warningLevel);
unit->visit(&tocv, false);
tocv.generate();
@@ -88,7 +89,7 @@ generate(const UnitPtr& unit, const string& dir, const string& header, const str
// Generate the individual HTML pages.
//
GeneratorBase::setSymbols(tocv.symbols());
- PageVisitor v(files);
+ PageVisitor v(files, warningLevel);
unit->visit(&v, false);
}
@@ -1953,8 +1954,9 @@ Slice::StartPageGenerator::printHeaderFooter()
// Do nothing
}
-Slice::FileVisitor::FileVisitor(Files& files)
- : _files(files)
+Slice::FileVisitor::FileVisitor(Files& files, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _files(files)
{
}
@@ -2016,8 +2018,9 @@ Slice::FileVisitor::visitEnum(const EnumPtr& e)
_files.insert(e->file());
}
-Slice::StartPageVisitor::StartPageVisitor(const Files& files)
- : _spg(files)
+Slice::StartPageVisitor::StartPageVisitor(const Files& files, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _spg(files)
{
}
@@ -2173,8 +2176,9 @@ TOCGenerator::writeEntry(const ContainedPtr& c)
end();
}
-TOCVisitor::TOCVisitor(const Files& files, const string& header, const string& footer)
- : _tg(files, header, footer)
+TOCVisitor::TOCVisitor(const Files& files, const string& header, const string& footer, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _tg(files, header, footer)
{
}
@@ -3263,8 +3267,9 @@ Slice::EnumGenerator::generate(const EnumPtr& e)
assert(_out.currIndent() == indent);
}
-Slice::PageVisitor::PageVisitor(const Files& files)
- : _files(files)
+Slice::PageVisitor::PageVisitor(const Files& files, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _files(files)
{
}
diff --git a/cpp/src/slice2confluence/Gen.h b/cpp/src/slice2confluence/Gen.h
index bc10790604b..587e28c7d1e 100644
--- a/cpp/src/slice2confluence/Gen.h
+++ b/cpp/src/slice2confluence/Gen.h
@@ -21,7 +21,7 @@ namespace Slice
void generate(const UnitPtr&, const ::std::string&, const ::std::string&, const ::std::string&, const std::string&,
const ::std::string&, const ::std::string&, const ::std::string&, const ::std::string&,
- unsigned, unsigned, const ::std::vector<std::string>& = ::std::vector<std::string>());
+ unsigned, unsigned, const ::std::vector<std::string>& = ::std::vector<std::string>(), int = 1);
typedef ::std::set< ::std::string> Files;
@@ -165,7 +165,7 @@ class FileVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- FileVisitor(Files&);
+ FileVisitor(Files&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
@@ -186,7 +186,7 @@ class StartPageVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- StartPageVisitor(const Files&);
+ StartPageVisitor(const Files&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
@@ -219,7 +219,7 @@ class TOCVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- TOCVisitor(const Files&, const ::std::string&, const ::std::string&);
+ TOCVisitor(const Files&, const ::std::string&, const ::std::string&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
@@ -279,7 +279,7 @@ class PageVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- PageVisitor(const Files&);
+ PageVisitor(const Files&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
diff --git a/cpp/src/slice2confluence/Main.cpp b/cpp/src/slice2confluence/Main.cpp
index 8eeca1c303b..38c7d5e2319 100644
--- a/cpp/src/slice2confluence/Main.cpp
+++ b/cpp/src/slice2confluence/Main.cpp
@@ -108,6 +108,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"
;
}
@@ -136,6 +137,7 @@ compile(const vector<string>& argv)
opts.addOpt("d", "debug");
opts.addOpt("", "ice");
opts.addOpt("", "underscore");
+ opts.addOpt("", "no-warn");
bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end();
vector<string> args;
@@ -248,6 +250,8 @@ compile(const vector<string>& argv)
bool underscore = opts.isSet("underscore");
+ int warningLevel = opts.isSet("no-warn") ? 0 : 1;
+
if(args.empty())
{
consoleErr << argv[0] << ": error: no input file" << endl;
@@ -318,7 +322,7 @@ compile(const vector<string>& argv)
try
{
Slice::generate(p, output, header, footer, indexHeader, indexFooter, imageDir, logoURL,
- searchAction, indexCount, summaryCount, sort_order);
+ searchAction, indexCount, summaryCount, sort_order, warningLevel);
}
catch(const Slice::FileException& ex)
{
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index d227ef1e88a..df72af69bc0 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -377,7 +377,7 @@ condString(bool ok, const string& str)
Slice::Gen::Gen(const string& base, const string& headerExtension, const string& sourceExtension,
const vector<string>& extraHeaders, const string& include,
const vector<string>& includePaths, const string& dllExport, const string& dir,
- bool implCpp98, bool implCpp11, bool checksum, bool ice) :
+ bool implCpp98, bool implCpp11, bool checksum, bool ice, int warningLevel) :
_base(base),
_headerExtension(headerExtension),
_implHeaderExtension(headerExtension),
@@ -390,7 +390,8 @@ Slice::Gen::Gen(const string& base, const string& headerExtension, const string&
_implCpp98(implCpp98),
_implCpp11(implCpp11),
_checksum(checksum),
- _ice(ice)
+ _ice(ice),
+ _warningLevel(warningLevel)
{
for(vector<string>::iterator p = _includePaths.begin(); p != _includePaths.end(); ++p)
{
@@ -573,7 +574,7 @@ Slice::Gen::generate(const UnitPtr& p)
H << "\n#define __" << s << "__";
H << '\n';
- validateMetaData(p);
+ validateMetaData(p, _warningLevel);
writeExtraHeaders(C);
@@ -727,27 +728,27 @@ Slice::Gen::generate(const UnitPtr& p)
C << nl << "#ifdef ICE_CPP11_MAPPING // C++11 mapping";
C.restoreIndent();
{
- normalizeMetaData(p, true);
+ normalizeMetaData(p, true, _warningLevel);
- Cpp11DeclVisitor declVisitor(H, C, _dllExport);
+ Cpp11DeclVisitor declVisitor(H, C, _dllExport, _warningLevel);
p->visit(&declVisitor, false);
- Cpp11TypesVisitor typesVisitor(H, C, _dllExport);
+ Cpp11TypesVisitor typesVisitor(H, C, _dllExport, _warningLevel);
p->visit(&typesVisitor, false);
- Cpp11LocalObjectVisitor localObjectVisitor(H, C, _dllExport);
+ Cpp11LocalObjectVisitor localObjectVisitor(H, C, _dllExport, _warningLevel);
p->visit(&localObjectVisitor, false);
- Cpp11InterfaceVisitor interfaceVisitor(H, C, _dllExport);
+ Cpp11InterfaceVisitor interfaceVisitor(H, C, _dllExport, _warningLevel);
p->visit(&interfaceVisitor, false);
- Cpp11ValueVisitor valueVisitor(H, C, _dllExport);
+ Cpp11ValueVisitor valueVisitor(H, C, _dllExport, _warningLevel);
p->visit(&valueVisitor, false);
- Cpp11ProxyVisitor proxyVisitor(H, C, _dllExport);
+ Cpp11ProxyVisitor proxyVisitor(H, C, _dllExport, _warningLevel);
p->visit(&proxyVisitor, false);
- Cpp11StreamVisitor streamVisitor(H, C, _dllExport);
+ Cpp11StreamVisitor streamVisitor(H, C, _dllExport, _warningLevel);
p->visit(&streamVisitor, false);
if(_implCpp11)
@@ -768,11 +769,11 @@ Slice::Gen::generate(const UnitPtr& p)
}
implC << _base << "I." << _implHeaderExtension << ">";
- Cpp11ImplVisitor implVisitor(implH, implC, _dllExport);
+ Cpp11ImplVisitor implVisitor(implH, implC, _dllExport, _warningLevel);
p->visit(&implVisitor, false);
}
- Cpp11CompatibilityVisitor compatibilityVisitor(H, C, _dllExport);
+ Cpp11CompatibilityVisitor compatibilityVisitor(H, C, _dllExport, _warningLevel);
p->visit(&compatibilityVisitor, false);
generateChecksumMap(p);
@@ -787,21 +788,21 @@ Slice::Gen::generate(const UnitPtr& p)
C << nl << "#else // C++98 mapping";
C.restoreIndent();
{
- normalizeMetaData(p, false);
+ normalizeMetaData(p, false, _warningLevel);
- ProxyDeclVisitor proxyDeclVisitor(H, C, _dllExport);
+ ProxyDeclVisitor proxyDeclVisitor(H, C, _dllExport, _warningLevel);
p->visit(&proxyDeclVisitor, false);
- ObjectDeclVisitor objectDeclVisitor(H, C, _dllExport);
+ ObjectDeclVisitor objectDeclVisitor(H, C, _dllExport, _warningLevel);
p->visit(&objectDeclVisitor, false);
- TypesVisitor typesVisitor(H, C, _dllExport);
+ TypesVisitor typesVisitor(H, C, _dllExport, _warningLevel);
p->visit(&typesVisitor, false);
- AsyncVisitor asyncVisitor(H, C, _dllExport);
+ AsyncVisitor asyncVisitor(H, C, _dllExport, _warningLevel);
p->visit(&asyncVisitor, false);
- AsyncImplVisitor asyncImplVisitor(H, C, _dllExport);
+ AsyncImplVisitor asyncImplVisitor(H, C, _dllExport, _warningLevel);
p->visit(&asyncImplVisitor, false);
//
@@ -810,16 +811,16 @@ Slice::Gen::generate(const UnitPtr& p)
// the proxy relies on knowing the hierarchy to make the begin_
// methods type-safe.
//
- AsyncCallbackVisitor asyncCallbackVisitor(H, C, _dllExport);
+ AsyncCallbackVisitor asyncCallbackVisitor(H, C, _dllExport, _warningLevel);
p->visit(&asyncCallbackVisitor, false);
- ProxyVisitor proxyVisitor(H, C, _dllExport);
+ ProxyVisitor proxyVisitor(H, C, _dllExport, _warningLevel);
p->visit(&proxyVisitor, false);
- ObjectVisitor objectVisitor(H, C, _dllExport);
+ ObjectVisitor objectVisitor(H, C, _dllExport, _warningLevel);
p->visit(&objectVisitor, false);
- StreamVisitor streamVisitor(H, C, _dllExport);
+ StreamVisitor streamVisitor(H, C, _dllExport, _warningLevel);
p->visit(&streamVisitor, false);
//
@@ -827,7 +828,7 @@ Slice::Gen::generate(const UnitPtr& p)
// definition, because completed calls the begin_ method in the
// proxy.
//
- AsyncCallbackTemplateVisitor asyncCallbackTemplateVisitor(H, C, _dllExport);
+ AsyncCallbackTemplateVisitor asyncCallbackTemplateVisitor(H, C, _dllExport, _warningLevel);
p->visit(&asyncCallbackTemplateVisitor, false);
if(_implCpp98)
@@ -848,7 +849,7 @@ Slice::Gen::generate(const UnitPtr& p)
}
implC << _base << "I." << _implHeaderExtension << ">";
- ImplVisitor implVisitor(implH, implC, _dllExport);
+ ImplVisitor implVisitor(implH, implC, _dllExport, _warningLevel);
p->visit(&implVisitor, false);
}
@@ -902,7 +903,8 @@ Slice::Gen::writeExtraHeaders(IceUtilInternal::Output& out)
}
}
-Slice::Gen::TypesVisitor::TypesVisitor(Output& h, Output& c, const string& dllExport) :
+Slice::Gen::TypesVisitor::TypesVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel),
H(h), C(c), _dllExport(dllExport), _doneStaticSymbol(false), _useWstring(false)
{
}
@@ -1536,7 +1538,8 @@ Slice::Gen::TypesVisitor::emitUpcall(const ExceptionPtr& base, const string& cal
<< call;
}
-Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& h, Output&, const string& dllExport) :
+Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& h, Output&, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel),
H(h), _dllExport(dllExport)
{
}
@@ -1603,8 +1606,8 @@ Slice::Gen::ProxyDeclVisitor::visitClassDecl(const ClassDeclPtr& p)
H << nl << _dllExport << "::IceProxy::Ice::Object* upCast(::IceProxy" << scoped << "*);";
}
-Slice::Gen::ProxyVisitor::ProxyVisitor(Output& h, Output& c, const string& dllExport) :
- H(h), C(c), _dllExport(dllExport), _dllClassExport(toDllClassExport(dllExport)),
+Slice::Gen::ProxyVisitor::ProxyVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _dllClassExport(toDllClassExport(dllExport)),
_dllMemberExport(toDllMemberExport(dllExport)), _useWstring(false)
{
}
@@ -2153,7 +2156,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& h, Output& c, const string& dllExport) :
+Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel),
H(h), C(c), _dllExport(dllExport)
{
}
@@ -2222,7 +2226,8 @@ Slice::Gen::ObjectDeclVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::Gen::ObjectVisitor::ObjectVisitor(Output& h, Output& c, const string& dllExport) :
+Slice::Gen::ObjectVisitor::ObjectVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel),
H(h), C(c), _dllExport(dllExport), _doneStaticSymbol(false), _useWstring(false)
{
}
@@ -3382,7 +3387,8 @@ Slice::Gen::ObjectVisitor::emitUpcall(const ClassDefPtr& base, const string& cal
C << nl << (base ? fixKwd(base->scoped()) : string("::Ice::Object")) << call;
}
-Slice::Gen::AsyncCallbackVisitor::AsyncCallbackVisitor(Output& h, Output&, const string& dllExport) :
+Slice::Gen::AsyncCallbackVisitor::AsyncCallbackVisitor(Output& h, Output&, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel),
H(h), _dllExport(dllExport), _useWstring(false)
{
}
@@ -3441,8 +3447,8 @@ Slice::Gen::AsyncCallbackVisitor::visitOperation(const OperationPtr& p)
H << nl << "typedef ::IceUtil::Handle< " << delName << "_Base> " << delName << "Ptr;";
}
-Slice::Gen::AsyncCallbackTemplateVisitor::AsyncCallbackTemplateVisitor(Output& h, Output&, const string& dllExport)
- : H(h), _dllExport(dllExport), _useWstring(false)
+Slice::Gen::AsyncCallbackTemplateVisitor::AsyncCallbackTemplateVisitor(Output& h, Output&, const string& dllExport, int warningLevel)
+ : ParserVisitor(warningLevel), H(h), _dllExport(dllExport), _useWstring(false)
{
}
@@ -3745,8 +3751,8 @@ Slice::Gen::AsyncCallbackTemplateVisitor::generateOperation(const OperationPtr&
}
}
-Slice::Gen::ImplVisitor::ImplVisitor(Output& h, Output& c, const string& dllExport) :
- H(h), C(c), _dllExport(dllExport), _useWstring(false)
+Slice::Gen::ImplVisitor::ImplVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _useWstring(false)
{
}
@@ -4037,8 +4043,8 @@ Slice::Gen::ImplVisitor::visitClassDefStart(const ClassDefPtr& p)
return true;
}
-Slice::Gen::AsyncVisitor::AsyncVisitor(Output& h, Output& c, const string& dllExport) :
- H(h), C(c), _dllExport(dllExport), _useWstring(false)
+Slice::Gen::AsyncVisitor::AsyncVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _useWstring(false)
{
}
@@ -4172,8 +4178,8 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::Gen::AsyncImplVisitor::AsyncImplVisitor(Output& h, Output& c, const string& dllExport) :
- H(h), C(c), _dllExport(dllExport), _useWstring(false)
+Slice::Gen::AsyncImplVisitor::AsyncImplVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _useWstring(false)
{
}
@@ -4337,7 +4343,8 @@ Slice::Gen::AsyncImplVisitor::visitOperation(const OperationPtr& p)
C << eb;
}
-Slice::Gen::StreamVisitor::StreamVisitor(Output& h, Output& c, const string& dllExport) :
+Slice::Gen::StreamVisitor::StreamVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel),
H(h),
C(c),
_dllExport(dllExport)
@@ -4468,12 +4475,16 @@ Slice::Gen::StreamVisitor::visitEnum(const EnumPtr& p)
}
void
-Slice::Gen::validateMetaData(const UnitPtr& u)
+Slice::Gen::validateMetaData(const UnitPtr& u, int warningLevel)
{
- MetaDataVisitor visitor;
+ MetaDataVisitor visitor(warningLevel);
u->visit(&visitor, false);
}
+Slice::Gen::MetaDataVisitor::MetaDataVisitor(int warningLevel) : ParserVisitor(warningLevel)
+{
+}
+
bool
Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
@@ -4514,10 +4525,13 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
headerExtension++;
if(headerExtension > 1)
{
- ostringstream ostr;
- ostr << "ignoring invalid global metadata `" << s
- << "': directive can appear only once per file";
- emitWarning(file, -1, ostr.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << s
+ << "': directive can appear only once per file";
+ emitWarning(file, -1, ostr.str());
+ }
}
else
{
@@ -4530,10 +4544,13 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
dllExport++;
if(dllExport > 1)
{
- ostringstream ostr;
- ostr << "ignoring invalid global metadata `" << s
- << "': directive can appear only once per file";
- emitWarning(file, -1, ostr.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << s
+ << "': directive can appear only once per file";
+ emitWarning(file, -1, ostr.str());
+ }
}
else
{
@@ -4542,9 +4559,12 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
continue;
}
- ostringstream ostr;
- ostr << "ignoring invalid global metadata `" << s << "'";
- emitWarning(file, -1, ostr.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << s << "'";
+ emitWarning(file, -1, ostr.str());
+ }
}
}
@@ -4622,7 +4642,10 @@ Slice::Gen::MetaDataVisitor::visitOperation(const OperationPtr& p)
if(!cl->isLocal() && p->hasMetaData("cpp:noexcept"))
{
- emitWarning(p->file(), p->line(), "ignoring metadata `cpp:noexcept' for non local interface");
+ if(warningLevel() > 0)
+ {
+ emitWarning(p->file(), p->line(), "ignoring metadata `cpp:noexcept' for non local interface");
+ }
metaData.remove("cpp:noexcept");
}
@@ -4634,9 +4657,11 @@ Slice::Gen::MetaDataVisitor::visitOperation(const OperationPtr& p)
if(q->find("cpp:type:") == 0 || q->find("cpp:view-type:") == 0 ||
q->find("cpp:range") == 0 || (*q) == "cpp:array")
{
- emitWarning(p->file(), p->line(), "ignoring invalid metadata `" + *q +
- "' for operation with void return type");
-
+ if(warningLevel() > 0)
+ {
+ emitWarning(p->file(), p->line(), "ignoring invalid metadata `" + *q +
+ "' for operation with void return type");
+ }
metaData.remove(*q);
continue;
}
@@ -4802,7 +4827,11 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin
continue;
}
}
- emitWarning(file, line, "ignoring invalid metadata `" + s + "'");
+
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "ignoring invalid metadata `" + s + "'");
+ }
continue;
}
@@ -4814,7 +4843,11 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin
newMetaData.push_back(s);
continue;
}
- emitWarning(file, line, "ignoring invalid metadata `" + s + "'");
+
+ if(warningLevel() > 0)
+ {
+ emitWarning(file, line, "ignoring invalid metadata `" + s + "'");
+ }
continue;
}
newMetaData.push_back(s);
@@ -4824,13 +4857,14 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin
void
-Slice::Gen::normalizeMetaData(const UnitPtr& u, bool cpp11)
+Slice::Gen::normalizeMetaData(const UnitPtr& u, bool cpp11, int warningLevel)
{
- NormalizeMetaDataVisitor visitor(cpp11);
+ NormalizeMetaDataVisitor visitor(cpp11, warningLevel);
u->visit(&visitor, false);
}
-Slice::Gen::NormalizeMetaDataVisitor::NormalizeMetaDataVisitor(bool cpp11) :
+Slice::Gen::NormalizeMetaDataVisitor::NormalizeMetaDataVisitor(bool cpp11, int warningLevel) :
+ ParserVisitor(warningLevel),
_cpp11(cpp11)
{
}
@@ -5105,8 +5139,8 @@ Slice::Gen::getHeaderExt(const string& file, const UnitPtr& unit)
}
// C++11 visitors
-Slice::Gen::Cpp11DeclVisitor::Cpp11DeclVisitor(Output& h, Output& c, const string& dllExport) :
- H(h), C(c), _dllExport(dllExport)
+Slice::Gen::Cpp11DeclVisitor::Cpp11DeclVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport)
{
}
@@ -5261,8 +5295,8 @@ Slice::Gen::Cpp11DeclVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::Gen::Cpp11TypesVisitor::Cpp11TypesVisitor(Output& h, Output& c, const string& dllExport) :
- H(h), C(c), _dllExport(dllExport), _dllClassExport(toDllClassExport(dllExport)),
+Slice::Gen::Cpp11TypesVisitor::Cpp11TypesVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _dllClassExport(toDllClassExport(dllExport)),
_dllMemberExport(toDllMemberExport(dllExport)), _doneStaticSymbol(false), _useWstring(false)
{
}
@@ -5659,8 +5693,9 @@ Slice::Gen::Cpp11TypesVisitor::visitDictionary(const DictionaryPtr& p)
}
}
-Slice::Gen::Cpp11ProxyVisitor::Cpp11ProxyVisitor(Output& h, Output& c, const string& dllExport) :
- H(h), C(c), _dllClassExport(toDllClassExport(dllExport)), _dllMemberExport(toDllMemberExport(dllExport)),
+Slice::Gen::Cpp11ProxyVisitor::Cpp11ProxyVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel), H(h), C(c), _dllClassExport(toDllClassExport(dllExport)),
+ _dllMemberExport(toDllMemberExport(dllExport)),
_useWstring(false)
{
}
@@ -6248,7 +6283,9 @@ Slice::Gen::Cpp11TypesVisitor::emitUpcall(const ExceptionPtr& base, const string
Slice::Gen::Cpp11ObjectVisitor::Cpp11ObjectVisitor(::IceUtilInternal::Output& h,
::IceUtilInternal::Output& c,
- const std::string& dllExport) :
+ const std::string& dllExport,
+ int warningLevel) :
+ ParserVisitor(warningLevel),
H(h),
C(c),
_dllExport(dllExport),
@@ -6301,8 +6338,9 @@ Slice::Gen::Cpp11ValueVisitor::emitUpcall(const ClassDefPtr& base, const string&
Slice::Gen::Cpp11LocalObjectVisitor::Cpp11LocalObjectVisitor(::IceUtilInternal::Output& h,
::IceUtilInternal::Output& c,
- const std::string& dllExport) :
- Cpp11ObjectVisitor(h, c, dllExport)
+ const std::string& dllExport,
+ int warningLevel) :
+ Cpp11ObjectVisitor(h, c, dllExport, warningLevel)
{
}
@@ -6649,8 +6687,9 @@ Slice::Gen::Cpp11LocalObjectVisitor::visitOperation(const OperationPtr& p)
Slice::Gen::Cpp11InterfaceVisitor::Cpp11InterfaceVisitor(::IceUtilInternal::Output& h,
::IceUtilInternal::Output& c,
- const std::string& dllExport) :
- Cpp11ObjectVisitor(h, c, dllExport)
+ const std::string& dllExport,
+ int warningLevel) :
+ Cpp11ObjectVisitor(h, c, dllExport, warningLevel)
{
}
@@ -7103,8 +7142,9 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p)
Slice::Gen::Cpp11ValueVisitor::Cpp11ValueVisitor(::IceUtilInternal::Output& h,
::IceUtilInternal::Output& c,
- const std::string& dllExport) :
- Cpp11ObjectVisitor(h, c, dllExport)
+ const std::string& dllExport,
+ int warningLevel) :
+ Cpp11ObjectVisitor(h, c, dllExport, warningLevel)
{
}
@@ -7457,7 +7497,8 @@ Slice::Gen::Cpp11ObjectVisitor::emitOneShotConstructor(const ClassDefPtr& p)
}
}
-Slice::Gen::Cpp11StreamVisitor::Cpp11StreamVisitor(Output& h, Output& c, const string& dllExport) :
+Slice::Gen::Cpp11StreamVisitor::Cpp11StreamVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel),
H(h),
C(c),
_dllExport(dllExport)
@@ -7569,7 +7610,8 @@ Slice::Gen::Cpp11StreamVisitor::visitEnum(const EnumPtr& p)
}
-Slice::Gen::Cpp11CompatibilityVisitor::Cpp11CompatibilityVisitor(Output& h, Output&, const string& dllExport) :
+Slice::Gen::Cpp11CompatibilityVisitor::Cpp11CompatibilityVisitor(Output& h, Output&, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel),
H(h),
_dllExport(dllExport)
{
@@ -7619,8 +7661,8 @@ Slice::Gen::Cpp11CompatibilityVisitor::visitClassDecl(const ClassDeclPtr& p)
}
}
-Slice::Gen::Cpp11ImplVisitor::Cpp11ImplVisitor(Output& h, Output& c, const string& dllExport) :
- H(h), C(c), _dllExport(dllExport), _useWstring(false)
+Slice::Gen::Cpp11ImplVisitor::Cpp11ImplVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _useWstring(false)
{
}
diff --git a/cpp/src/slice2cpp/Gen.h b/cpp/src/slice2cpp/Gen.h
index 768a148969a..660267b0539 100644
--- a/cpp/src/slice2cpp/Gen.h
+++ b/cpp/src/slice2cpp/Gen.h
@@ -31,7 +31,8 @@ public:
bool,
bool,
bool,
- bool);
+ bool,
+ int);
~Gen();
void generate(const UnitPtr&);
@@ -71,12 +72,13 @@ private:
bool _implCpp11;
bool _checksum;
bool _ice;
+ int _warningLevel;
class TypesVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -108,7 +110,7 @@ private:
{
public:
- ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -127,7 +129,7 @@ private:
{
public:
- ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -153,7 +155,7 @@ private:
{
public:
- ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -172,7 +174,7 @@ private:
{
public:
- ObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ ObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -205,7 +207,7 @@ private:
{
public:
- AsyncCallbackVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ AsyncCallbackVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -226,7 +228,7 @@ private:
{
public:
- AsyncCallbackTemplateVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ AsyncCallbackTemplateVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -251,7 +253,7 @@ private:
{
public:
- ImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ ImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -281,7 +283,7 @@ private:
{
public:
- AsyncVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ AsyncVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -303,7 +305,7 @@ private:
{
public:
- AsyncImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ AsyncImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -327,7 +329,7 @@ private:
{
public:
- StreamVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ StreamVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -349,7 +351,7 @@ private:
{
public:
- Cpp11DeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11DeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -372,7 +374,7 @@ private:
{
public:
- Cpp11TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -406,7 +408,7 @@ private:
{
public:
- Cpp11ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -432,7 +434,7 @@ private:
{
public:
- Cpp11ObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11ObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
protected:
@@ -455,7 +457,7 @@ private:
{
public:
- Cpp11LocalObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11LocalObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -470,7 +472,7 @@ private:
{
public:
- Cpp11InterfaceVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11InterfaceVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -486,7 +488,7 @@ private:
{
public:
- Cpp11ValueVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11ValueVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -498,56 +500,11 @@ private:
void emitUpcall(const ClassDefPtr&, const std::string&);
};
- class Cpp11AsyncVisitor : private ::IceUtil::noncopyable, public ParserVisitor
- {
- public:
-
- Cpp11AsyncVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
-
- virtual bool visitModuleStart(const ModulePtr&);
- virtual void visitModuleEnd(const ModulePtr&);
- virtual bool visitClassDefStart(const ClassDefPtr&);
- virtual void visitClassDefEnd(const ClassDefPtr&);
- virtual void visitOperation(const OperationPtr&);
-
- private:
-
- ::IceUtilInternal::Output& H;
-
- std::string _dllExport;
- int _useWstring;
- std::list<int> _useWstringHist;
- };
-
- class Cpp11AsyncImplVisitor : private ::IceUtil::noncopyable, public ParserVisitor
- {
- public:
-
- Cpp11AsyncImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
-
- virtual bool visitUnitStart(const UnitPtr&);
- virtual void visitUnitEnd(const UnitPtr&);
- virtual bool visitModuleStart(const ModulePtr&);
- virtual void visitModuleEnd(const ModulePtr&);
- virtual bool visitClassDefStart(const ClassDefPtr&);
- virtual void visitClassDefEnd(const ClassDefPtr&);
- virtual void visitOperation(const OperationPtr&);
-
- private:
-
- ::IceUtilInternal::Output& H;
- ::IceUtilInternal::Output& C;
-
- std::string _dllExport;
- int _useWstring;
- std::list<int> _useWstringHist;
- };
-
class Cpp11StreamVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- Cpp11StreamVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11StreamVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -568,7 +525,7 @@ private:
{
public:
- Cpp11CompatibilityVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11CompatibilityVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -584,7 +541,7 @@ private:
{
public:
- Cpp11ImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ Cpp11ImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -616,6 +573,8 @@ private:
{
public:
+ MetaDataVisitor(int);
+
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -643,7 +602,7 @@ private:
{
public:
- explicit NormalizeMetaDataVisitor(bool);
+ NormalizeMetaDataVisitor(bool, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
@@ -669,8 +628,8 @@ private:
bool _cpp11;
};
- static void validateMetaData(const UnitPtr&);
- static void normalizeMetaData(const UnitPtr&, bool);
+ static void validateMetaData(const UnitPtr&, int);
+ static void normalizeMetaData(const UnitPtr&, bool, int);
};
}
diff --git a/cpp/src/slice2cpp/Main.cpp b/cpp/src/slice2cpp/Main.cpp
index 7378da1b118..83b19b943c9 100644
--- a/cpp/src/slice2cpp/Main.cpp
+++ b/cpp/src/slice2cpp/Main.cpp
@@ -88,6 +88,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"
;
}
@@ -117,6 +118,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;
@@ -197,6 +199,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;
@@ -329,7 +333,7 @@ compile(const vector<string>& argv)
try
{
Gen gen(icecpp->getBaseName(), headerExtension, sourceExtension, extraHeaders, include,
- includePaths, dllExport, output, implCpp98, implCpp11, checksum, ice);
+ includePaths, dllExport, output, implCpp98, implCpp11, checksum, ice, warningLevel);
gen.generate(u);
}
catch(const Slice::FileException& ex)
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)
{
diff --git a/cpp/src/slice2html/Gen.cpp b/cpp/src/slice2html/Gen.cpp
index 1c4de107d54..bd226fbd027 100644
--- a/cpp/src/slice2html/Gen.cpp
+++ b/cpp/src/slice2html/Gen.cpp
@@ -37,7 +37,7 @@ namespace Slice
void
generate(const UnitPtr& unit, const string& dir, const string& header, const string& footer,
const string& indexHeader, const string& indexFooter, const string& imageDir, const string& logoURL,
- const string& searchAction, unsigned indexCount, unsigned warnSummary)
+ const string& searchAction, unsigned indexCount, unsigned warnSummary, int warningLevel)
{
unit->mergeModules();
@@ -66,19 +66,19 @@ generate(const UnitPtr& unit, const string& dir, const string& header, const str
// to the symbol; if the latter, we cannot.
//
Files files;
- FileVisitor tv(files);
+ FileVisitor tv(files, warningLevel);
unit->visit(&tv, false);
//
// Generate the start page.
//
- StartPageVisitor spv(files);
+ StartPageVisitor spv(files, warningLevel);
unit->visit(&spv, false);
//
// Generate the table of contents.
//
- TOCVisitor tocv(files, indexHeader, indexFooter);
+ TOCVisitor tocv(files, indexHeader, indexFooter, warningLevel);
unit->visit(&tocv, false);
tocv.generate();
@@ -86,7 +86,7 @@ generate(const UnitPtr& unit, const string& dir, const string& header, const str
// Generate the individual HTML pages.
//
GeneratorBase::setSymbols(tocv.symbols());
- PageVisitor v(files);
+ PageVisitor v(files, warningLevel);
unit->visit(&v, false);
}
@@ -1800,8 +1800,9 @@ Slice::StartPageGenerator::printHeaderFooter()
end(); // table
}
-Slice::FileVisitor::FileVisitor(Files& files)
- : _files(files)
+Slice::FileVisitor::FileVisitor(Files& files, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _files(files)
{
}
@@ -1863,8 +1864,9 @@ Slice::FileVisitor::visitEnum(const EnumPtr& e)
_files.insert(e->file());
}
-Slice::StartPageVisitor::StartPageVisitor(const Files& files)
- : _spg(files)
+Slice::StartPageVisitor::StartPageVisitor(const Files& files, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _spg(files)
{
}
@@ -2041,8 +2043,9 @@ TOCGenerator::writeEntry(const ContainedPtr& c)
end();
}
-TOCVisitor::TOCVisitor(const Files& files, const string& header, const string& footer)
- : _tg(files, header, footer)
+TOCVisitor::TOCVisitor(const Files& files, const string& header, const string& footer, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _tg(files, header, footer)
{
}
@@ -2976,8 +2979,9 @@ Slice::EnumGenerator::generate(const EnumPtr& e)
assert(_out.currIndent() == indent);
}
-Slice::PageVisitor::PageVisitor(const Files& files)
- : _files(files)
+Slice::PageVisitor::PageVisitor(const Files& files, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _files(files)
{
}
diff --git a/cpp/src/slice2html/Gen.h b/cpp/src/slice2html/Gen.h
index 8fb67136bc0..b38556e4bb2 100644
--- a/cpp/src/slice2html/Gen.h
+++ b/cpp/src/slice2html/Gen.h
@@ -18,7 +18,7 @@ namespace Slice
void generate(const UnitPtr&, const ::std::string&, const ::std::string&, const ::std::string&, const std::string&,
const ::std::string&, const ::std::string&, const ::std::string&, const ::std::string&,
- unsigned, unsigned);
+ unsigned, unsigned, int);
typedef ::std::set< ::std::string> Files;
@@ -141,7 +141,7 @@ class FileVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- FileVisitor(Files&);
+ FileVisitor(Files&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
@@ -162,7 +162,7 @@ class StartPageVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- StartPageVisitor(const Files&);
+ StartPageVisitor(const Files&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
@@ -195,7 +195,7 @@ class TOCVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- TOCVisitor(const Files&, const ::std::string&, const ::std::string&);
+ TOCVisitor(const Files&, const ::std::string&, const ::std::string&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
@@ -255,7 +255,7 @@ class PageVisitor : private ::IceUtil::noncopyable, public ParserVisitor
{
public:
- PageVisitor(const Files&);
+ PageVisitor(const Files&, int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
diff --git a/cpp/src/slice2html/Main.cpp b/cpp/src/slice2html/Main.cpp
index ae2bfaa75ff..7b5a6562968 100644
--- a/cpp/src/slice2html/Main.cpp
+++ b/cpp/src/slice2html/Main.cpp
@@ -85,6 +85,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"
;
}
@@ -112,6 +113,7 @@ compile(const vector<string>& argv)
opts.addOpt("d", "debug");
opts.addOpt("", "ice");
opts.addOpt("", "underscore");
+ opts.addOpt("", "no-warn");
bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end();
vector<string> args;
@@ -220,6 +222,8 @@ compile(const vector<string>& argv)
bool underscore = opts.isSet("underscore");
+ int warningLevel = opts.isSet("no-warn") ? 0 : 1;
+
if(args.empty())
{
consoleErr << argv[0] << ": error: no input file" << endl;
@@ -290,7 +294,7 @@ compile(const vector<string>& argv)
try
{
Slice::generate(p, output, header, footer, indexHeader, indexFooter, imageDir, logoURL,
- searchAction, indexCount, summaryCount);
+ searchAction, indexCount, summaryCount, warningLevel);
}
catch(const Slice::FileException& ex)
{
diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp
index 6fea7f223f1..376a8edd86e 100644
--- a/cpp/src/slice2java/Gen.cpp
+++ b/cpp/src/slice2java/Gen.cpp
@@ -144,8 +144,9 @@ string ofFactory(const TypePtr& type)
}
-Slice::JavaVisitor::JavaVisitor(const string& dir) :
- JavaGenerator(dir)
+Slice::JavaVisitor::JavaVisitor(const string& dir, int warningLevel) :
+ JavaGenerator(dir),
+ ParserVisitor(warningLevel)
{
}
@@ -2298,10 +2299,12 @@ Slice::JavaVisitor::writeServantDocComment(Output& out, const OperationPtr& p, c
out << nl << " **/";
}
-Slice::Gen::Gen(const string& /*name*/, const string& base, const vector<string>& includePaths, const string& dir) :
+Slice::Gen::Gen(const string& /*name*/, const string& base, const vector<string>& includePaths, const string& dir,
+ int warningLevel) :
_base(base),
_includePaths(includePaths),
- _dir(dir)
+ _dir(dir),
+ _warningLevel(warningLevel)
{
}
@@ -2312,31 +2315,31 @@ Slice::Gen::~Gen()
void
Slice::Gen::generate(const UnitPtr& p)
{
- JavaGenerator::validateMetaData(p);
+ JavaGenerator::validateMetaData(p, _warningLevel);
- PackageVisitor packageVisitor(_dir);
+ PackageVisitor packageVisitor(_dir, _warningLevel);
p->visit(&packageVisitor, false);
- TypesVisitor typesVisitor(_dir);
+ TypesVisitor typesVisitor(_dir, _warningLevel);
p->visit(&typesVisitor, false);
- CompactIdVisitor compactIdVisitor(_dir);
+ CompactIdVisitor compactIdVisitor(_dir, _warningLevel);
p->visit(&compactIdVisitor, false);
- HelperVisitor helperVisitor(_dir);
+ HelperVisitor helperVisitor(_dir, _warningLevel);
p->visit(&helperVisitor, false);
- ProxyVisitor proxyVisitor(_dir);
+ ProxyVisitor proxyVisitor(_dir, _warningLevel);
p->visit(&proxyVisitor, false);
- DispatcherVisitor dispatcherVisitor(_dir);
+ DispatcherVisitor dispatcherVisitor(_dir, _warningLevel);
p->visit(&dispatcherVisitor, false);
}
void
Slice::Gen::generateImpl(const UnitPtr& p)
{
- ImplVisitor implVisitor(_dir);
+ ImplVisitor implVisitor(_dir, _warningLevel);
p->visit(&implVisitor, false);
}
@@ -2395,8 +2398,8 @@ Slice::Gen::writeChecksumClass(const string& checksumClass, const string& dir, c
out << nl;
}
-Slice::Gen::PackageVisitor::PackageVisitor(const string& dir) :
- JavaVisitor(dir)
+Slice::Gen::PackageVisitor::PackageVisitor(const string& dir, int warningLevel) :
+ JavaVisitor(dir, warningLevel)
{
}
@@ -2420,8 +2423,8 @@ Slice::Gen::PackageVisitor::visitModuleStart(const ModulePtr& p)
return false;
}
-Slice::Gen::TypesVisitor::TypesVisitor(const string& dir) :
- JavaVisitor(dir)
+Slice::Gen::TypesVisitor::TypesVisitor(const string& dir, int warningLevel) :
+ JavaVisitor(dir, warningLevel)
{
}
@@ -2760,9 +2763,12 @@ Slice::Gen::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p)
string::size_type pos = serialVersionUID.rfind(":") + 1;
if(pos == string::npos)
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for class `" << p->scoped() << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for class `" << p->scoped() << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
else
@@ -2773,10 +2779,13 @@ Slice::Gen::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p)
{
if(!stringToInt64(serialVersionUID, v)) // conversion error
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for class `" << p->scoped()
- << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for class `" << p->scoped()
+ << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
}
@@ -3285,9 +3294,12 @@ Slice::Gen::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p)
string::size_type pos = serialVersionUID.rfind(":") + 1;
if(pos == string::npos)
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for exception `" << p->scoped() << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for exception `" << p->scoped() << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
else
@@ -3298,10 +3310,13 @@ Slice::Gen::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p)
{
if(!stringToInt64(serialVersionUID, v)) // conversion error
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for exception `" << p->scoped()
- << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for exception `" << p->scoped()
+ << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
}
@@ -3598,9 +3613,12 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
string::size_type pos = serialVersionUID.rfind(":") + 1;
if(pos == string::npos)
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for struct `" << p->scoped() << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for struct `" << p->scoped() << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
else
@@ -3611,10 +3629,13 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p)
{
if(!stringToInt64(serialVersionUID, v)) // conversion error
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for struct `" << p->scoped()
- << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for struct `" << p->scoped()
+ << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
}
@@ -4139,8 +4160,8 @@ Slice::Gen::TypesVisitor::validateMethod(const OperationList& ops, const std::st
return true;
}
-Slice::Gen::CompactIdVisitor::CompactIdVisitor(const string& dir) :
- JavaVisitor(dir)
+Slice::Gen::CompactIdVisitor::CompactIdVisitor(const string& dir, int warningLevel) :
+ JavaVisitor(dir, warningLevel)
{
}
@@ -4169,8 +4190,8 @@ Slice::Gen::CompactIdVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::Gen::HelperVisitor::HelperVisitor(const string& dir) :
- JavaVisitor(dir)
+Slice::Gen::HelperVisitor::HelperVisitor(const string& dir, int warningLevel) :
+ JavaVisitor(dir, warningLevel)
{
}
@@ -4334,8 +4355,8 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p)
close();
}
-Slice::Gen::ProxyVisitor::ProxyVisitor(const string& dir) :
- JavaVisitor(dir)
+Slice::Gen::ProxyVisitor::ProxyVisitor(const string& dir, int warningLevel) :
+ JavaVisitor(dir, warningLevel)
{
}
@@ -5089,8 +5110,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::Gen::DispatcherVisitor::DispatcherVisitor(const string& dir) :
- JavaVisitor(dir)
+Slice::Gen::DispatcherVisitor::DispatcherVisitor(const string& dir, int warningLevel) :
+ JavaVisitor(dir, warningLevel)
{
}
@@ -5163,8 +5184,8 @@ Slice::Gen::DispatcherVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::Gen::ImplVisitor::ImplVisitor(const string& dir) :
- JavaVisitor(dir)
+Slice::Gen::ImplVisitor::ImplVisitor(const string& dir, int warningLevel) :
+ JavaVisitor(dir, warningLevel)
{
}
diff --git a/cpp/src/slice2java/Gen.h b/cpp/src/slice2java/Gen.h
index 11c7d0f7e45..d2ce2ef44c1 100644
--- a/cpp/src/slice2java/Gen.h
+++ b/cpp/src/slice2java/Gen.h
@@ -25,7 +25,7 @@ public:
protected:
- JavaVisitor(const std::string&);
+ JavaVisitor(const std::string&, int);
enum ParamDir { InParam, OutParam };
@@ -129,7 +129,8 @@ public:
Gen(const std::string&,
const std::string&,
const std::vector<std::string>&,
- const std::string&);
+ const std::string&,
+ int);
~Gen();
void generate(const UnitPtr&);
@@ -142,12 +143,13 @@ private:
std::string _base;
std::vector<std::string> _includePaths;
std::string _dir;
+ int _warningLevel;
class PackageVisitor : public JavaVisitor
{
public:
- PackageVisitor(const std::string&);
+ PackageVisitor(const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
};
@@ -156,7 +158,7 @@ private:
{
public:
- TypesVisitor(const std::string&);
+ TypesVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
@@ -181,7 +183,7 @@ private:
{
public:
- CompactIdVisitor(const std::string&);
+ CompactIdVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
};
@@ -190,7 +192,7 @@ private:
{
public:
- HelperVisitor(const std::string&);
+ HelperVisitor(const std::string&, int);
virtual void visitSequence(const SequencePtr&);
virtual void visitDictionary(const DictionaryPtr&);
@@ -200,7 +202,7 @@ private:
{
public:
- ProxyVisitor(const std::string&);
+ ProxyVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
@@ -211,7 +213,7 @@ private:
{
public:
- DispatcherVisitor(const std::string&);
+ DispatcherVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
};
@@ -220,7 +222,7 @@ private:
{
public:
- ImplVisitor(const std::string&);
+ ImplVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
diff --git a/cpp/src/slice2java/GenCompat.cpp b/cpp/src/slice2java/GenCompat.cpp
index 7bccb844408..6579642d280 100644
--- a/cpp/src/slice2java/GenCompat.cpp
+++ b/cpp/src/slice2java/GenCompat.cpp
@@ -191,8 +191,9 @@ writeParamList(Output& out, vector<string> params, bool end = true, bool newLine
}
-Slice::JavaCompatVisitor::JavaCompatVisitor(const string& dir) :
- JavaCompatGenerator(dir)
+Slice::JavaCompatVisitor::JavaCompatVisitor(const string& dir, int warningLevel) :
+ JavaCompatGenerator(dir),
+ ParserVisitor(warningLevel)
{
}
@@ -2278,11 +2279,13 @@ Slice::JavaCompatVisitor::writeDocCommentParam(Output& out, const OperationPtr&
}
}
-Slice::GenCompat::GenCompat(const string& /*name*/, const string& base, const vector<string>& includePaths, const string& dir, bool tie) :
+Slice::GenCompat::GenCompat(const string& /*name*/, const string& base, const vector<string>& includePaths,
+ const string& dir, bool tie, int warningLevel) :
_base(base),
_includePaths(includePaths),
_dir(dir),
- _tie(tie)
+ _tie(tie),
+ _warningLevel(warningLevel)
{
}
@@ -2293,47 +2296,47 @@ Slice::GenCompat::~GenCompat()
void
Slice::GenCompat::generate(const UnitPtr& p)
{
- JavaGenerator::validateMetaData(p);
+ JavaGenerator::validateMetaData(p, _warningLevel);
- OpsVisitor opsVisitor(_dir);
+ OpsVisitor opsVisitor(_dir, _warningLevel);
p->visit(&opsVisitor, false);
- PackageVisitor packageVisitor(_dir);
+ PackageVisitor packageVisitor(_dir, _warningLevel);
p->visit(&packageVisitor, false);
- TypesVisitor typesVisitor(_dir);
+ TypesVisitor typesVisitor(_dir, _warningLevel);
p->visit(&typesVisitor, false);
- CompactIdVisitor compactIdVisitor(_dir);
+ CompactIdVisitor compactIdVisitor(_dir, _warningLevel);
p->visit(&compactIdVisitor, false);
- HolderVisitor holderVisitor(_dir);
+ HolderVisitor holderVisitor(_dir, _warningLevel);
p->visit(&holderVisitor, false);
- HelperVisitor helperVisitor(_dir);
+ HelperVisitor helperVisitor(_dir, _warningLevel);
p->visit(&helperVisitor, false);
- ProxyVisitor proxyVisitor(_dir);
+ ProxyVisitor proxyVisitor(_dir, _warningLevel);
p->visit(&proxyVisitor, false);
- DispatcherVisitor dispatcherVisitor(_dir, _tie);
+ DispatcherVisitor dispatcherVisitor(_dir, _tie, _warningLevel);
p->visit(&dispatcherVisitor, false);
- AsyncVisitor asyncVisitor(_dir);
+ AsyncVisitor asyncVisitor(_dir, _warningLevel);
p->visit(&asyncVisitor, false);
}
void
Slice::GenCompat::generateImpl(const UnitPtr& p)
{
- ImplVisitor implVisitor(_dir);
+ ImplVisitor implVisitor(_dir, _warningLevel);
p->visit(&implVisitor, false);
}
void
Slice::GenCompat::generateImplTie(const UnitPtr& p)
{
- ImplTieVisitor implTieVisitor(_dir);
+ ImplTieVisitor implTieVisitor(_dir, _warningLevel);
p->visit(&implTieVisitor, false);
}
@@ -2392,8 +2395,8 @@ Slice::GenCompat::writeChecksumClass(const string& checksumClass, const string&
out << nl;
}
-Slice::GenCompat::OpsVisitor::OpsVisitor(const string& dir) :
- JavaCompatVisitor(dir)
+Slice::GenCompat::OpsVisitor::OpsVisitor(const string& dir, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel)
{
}
@@ -2527,8 +2530,8 @@ Slice::GenCompat::OpsVisitor::writeOperations(const ClassDefPtr& p, bool noCurre
close();
}
-Slice::GenCompat::PackageVisitor::PackageVisitor(const string& dir) :
- JavaCompatVisitor(dir)
+Slice::GenCompat::PackageVisitor::PackageVisitor(const string& dir, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel)
{
}
@@ -2552,8 +2555,8 @@ Slice::GenCompat::PackageVisitor::visitModuleStart(const ModulePtr& p)
return false;
}
-Slice::GenCompat::TypesVisitor::TypesVisitor(const string& dir) :
- JavaCompatVisitor(dir)
+Slice::GenCompat::TypesVisitor::TypesVisitor(const string& dir, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel)
{
}
@@ -3014,9 +3017,12 @@ Slice::GenCompat::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p)
string::size_type pos = serialVersionUID.rfind(":") + 1;
if(pos == string::npos)
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for class `" << p->scoped() << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for class `" << p->scoped() << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
else
@@ -3027,10 +3033,13 @@ Slice::GenCompat::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p)
{
if(!stringToInt64(serialVersionUID, v)) // conversion error
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for class `" << p->scoped()
- << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for class `" << p->scoped()
+ << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
}
@@ -3434,9 +3443,12 @@ Slice::GenCompat::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p)
string::size_type pos = serialVersionUID.rfind(":") + 1;
if(pos == string::npos)
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for exception `" << p->scoped() << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for exception `" << p->scoped() << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
else
@@ -3447,10 +3459,13 @@ Slice::GenCompat::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p)
{
if(!stringToInt64(serialVersionUID, v)) // conversion error
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for exception `" << p->scoped()
- << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for exception `" << p->scoped()
+ << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
}
@@ -3750,9 +3765,12 @@ Slice::GenCompat::TypesVisitor::visitStructEnd(const StructPtr& p)
string::size_type pos = serialVersionUID.rfind(":") + 1;
if(pos == string::npos)
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for struct `" << p->scoped() << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for struct `" << p->scoped() << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
else
@@ -3763,10 +3781,13 @@ Slice::GenCompat::TypesVisitor::visitStructEnd(const StructPtr& p)
{
if(!stringToInt64(serialVersionUID, v)) // conversion error
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for struct `" << p->scoped()
- << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for struct `" << p->scoped()
+ << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
}
@@ -4191,8 +4212,8 @@ Slice::GenCompat::TypesVisitor::validateMethod(const OperationList& ops, const s
return true;
}
-Slice::GenCompat::CompactIdVisitor::CompactIdVisitor(const string& dir) :
- JavaCompatVisitor(dir)
+Slice::GenCompat::CompactIdVisitor::CompactIdVisitor(const string& dir, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel)
{
}
@@ -4221,8 +4242,8 @@ Slice::GenCompat::CompactIdVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::GenCompat::HolderVisitor::HolderVisitor(const string& dir) :
- JavaCompatVisitor(dir)
+Slice::GenCompat::HolderVisitor::HolderVisitor(const string& dir, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel)
{
}
@@ -4370,8 +4391,8 @@ Slice::GenCompat::HolderVisitor::writeHolder(const TypePtr& p)
close();
}
-Slice::GenCompat::HelperVisitor::HelperVisitor(const string& dir) :
- JavaCompatVisitor(dir)
+Slice::GenCompat::HelperVisitor::HelperVisitor(const string& dir, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel)
{
}
@@ -5303,8 +5324,8 @@ Slice::GenCompat::HelperVisitor::writeOperation(const ClassDefPtr& p, const stri
}
}
-Slice::GenCompat::ProxyVisitor::ProxyVisitor(const string& dir) :
- JavaCompatVisitor(dir)
+Slice::GenCompat::ProxyVisitor::ProxyVisitor(const string& dir, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel)
{
}
@@ -5623,8 +5644,8 @@ Slice::GenCompat::ProxyVisitor::visitOperation(const OperationPtr& p)
}
}
-Slice::GenCompat::DispatcherVisitor::DispatcherVisitor(const string& dir, bool tie) :
- JavaCompatVisitor(dir),
+Slice::GenCompat::DispatcherVisitor::DispatcherVisitor(const string& dir, bool tie, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel),
_tie(tie)
{
}
@@ -5825,9 +5846,12 @@ Slice::GenCompat::DispatcherVisitor::visitClassDefStart(const ClassDefPtr& p)
string::size_type pos = serialVersionUID.rfind(":") + 1;
if(pos == string::npos)
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for class `" << p->scoped() << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for class `" << p->scoped() << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
else
@@ -5838,10 +5862,13 @@ Slice::GenCompat::DispatcherVisitor::visitClassDefStart(const ClassDefPtr& p)
{
if(!stringToInt64(serialVersionUID, v)) // conversion error
{
- ostringstream os;
- os << "ignoring invalid serialVersionUID for class `" << p->scoped()
- << "'; generating default value";
- emitWarning("", "", os.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream os;
+ os << "ignoring invalid serialVersionUID for class `" << p->scoped()
+ << "'; generating default value";
+ emitWarning("", "", os.str());
+ }
out << computeSerialVersionUUID(p);
}
}
@@ -5860,8 +5887,8 @@ Slice::GenCompat::DispatcherVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::GenCompat::BaseImplVisitor::BaseImplVisitor(const string& dir) :
- JavaCompatVisitor(dir)
+Slice::GenCompat::BaseImplVisitor::BaseImplVisitor(const string& dir, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel)
{
}
@@ -6125,8 +6152,8 @@ Slice::GenCompat::BaseImplVisitor::writeOperation(Output& out, const string& pac
}
}
-Slice::GenCompat::ImplVisitor::ImplVisitor(const string& dir) :
- BaseImplVisitor(dir)
+Slice::GenCompat::ImplVisitor::ImplVisitor(const string& dir, int warningLevel) :
+ BaseImplVisitor(dir, warningLevel)
{
}
@@ -6181,8 +6208,8 @@ Slice::GenCompat::ImplVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::GenCompat::ImplTieVisitor::ImplTieVisitor(const string& dir) :
- BaseImplVisitor(dir)
+Slice::GenCompat::ImplTieVisitor::ImplTieVisitor(const string& dir, int warningLevel) :
+ BaseImplVisitor(dir, warningLevel)
{
}
@@ -6270,8 +6297,8 @@ Slice::GenCompat::ImplTieVisitor::visitClassDefStart(const ClassDefPtr& p)
return false;
}
-Slice::GenCompat::AsyncVisitor::AsyncVisitor(const string& dir) :
- JavaCompatVisitor(dir)
+Slice::GenCompat::AsyncVisitor::AsyncVisitor(const string& dir, int warningLevel) :
+ JavaCompatVisitor(dir, warningLevel)
{
}
diff --git a/cpp/src/slice2java/GenCompat.h b/cpp/src/slice2java/GenCompat.h
index 5f8ba85aa9d..25d2d0b7091 100644
--- a/cpp/src/slice2java/GenCompat.h
+++ b/cpp/src/slice2java/GenCompat.h
@@ -25,7 +25,7 @@ public:
protected:
- JavaCompatVisitor(const std::string&);
+ JavaCompatVisitor(const std::string&, int);
enum ParamDir { InParam, OutParam };
@@ -131,7 +131,8 @@ public:
const std::string&,
const std::vector<std::string>&,
const std::string&,
- bool);
+ bool,
+ int);
~GenCompat();
void generate(const UnitPtr&);
@@ -146,12 +147,13 @@ private:
std::vector<std::string> _includePaths;
std::string _dir;
bool _tie;
+ int _warningLevel;
class OpsVisitor : public JavaCompatVisitor
{
public:
- OpsVisitor(const std::string&);
+ OpsVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
@@ -163,7 +165,7 @@ private:
{
public:
- PackageVisitor(const std::string&);
+ PackageVisitor(const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
};
@@ -172,7 +174,7 @@ private:
{
public:
- TypesVisitor(const std::string&);
+ TypesVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
@@ -196,7 +198,7 @@ private:
{
public:
- CompactIdVisitor(const std::string&);
+ CompactIdVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
};
@@ -205,7 +207,7 @@ private:
{
public:
- HolderVisitor(const std::string&);
+ HolderVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual bool visitStructStart(const StructPtr&);
@@ -222,7 +224,7 @@ private:
{
public:
- HelperVisitor(const std::string&);
+ HelperVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitSequence(const SequencePtr&);
@@ -237,7 +239,7 @@ private:
{
public:
- ProxyVisitor(const std::string&);
+ ProxyVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
@@ -248,7 +250,7 @@ private:
{
public:
- DispatcherVisitor(const std::string&, bool);
+ DispatcherVisitor(const std::string&, bool, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
@@ -260,7 +262,7 @@ private:
{
public:
- BaseImplVisitor(const std::string&);
+ BaseImplVisitor(const std::string&, int);
protected:
@@ -286,7 +288,7 @@ private:
{
public:
- ImplVisitor(const std::string&);
+ ImplVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
};
@@ -295,7 +297,7 @@ private:
{
public:
- ImplTieVisitor(const std::string&);
+ ImplTieVisitor(const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
};
@@ -304,7 +306,7 @@ private:
{
public:
- AsyncVisitor(const std::string&);
+ AsyncVisitor(const std::string&, int);
virtual void visitOperation(const OperationPtr&);
};
diff --git a/cpp/src/slice2java/Main.cpp b/cpp/src/slice2java/Main.cpp
index 86b07bf60d5..2ea06372755 100644
--- a/cpp/src/slice2java/Main.cpp
+++ b/cpp/src/slice2java/Main.cpp
@@ -87,6 +87,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"
;
}
@@ -115,6 +116,7 @@ compile(const vector<string>& argv)
opts.addOpt("", "checksum", IceUtilInternal::Options::NeedArg);
opts.addOpt("", "meta", IceUtilInternal::Options::NeedArg, "", IceUtilInternal::Options::Repeat);
opts.addOpt("", "compat");
+ opts.addOpt("", "no-warn");
bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end();
vector<string>args;
@@ -193,6 +195,8 @@ compile(const vector<string>& argv)
bool compat = opts.isSet("compat");
+ int warningLevel = opts.isSet("no-warn") ? 0 : 1;
+
if(args.empty())
{
consoleErr << argv[0] << ": error: no input file" << endl;
@@ -350,7 +354,7 @@ compile(const vector<string>& argv)
{
if(compat)
{
- GenCompat gen(argv[0], icecpp->getBaseName(), includePaths, output, tie);
+ GenCompat gen(argv[0], icecpp->getBaseName(), includePaths, output, tie, warningLevel);
gen.generate(p);
if(impl)
{
@@ -360,39 +364,28 @@ compile(const vector<string>& argv)
{
gen.generateImplTie(p);
}
- if(!checksumClass.empty())
- {
- //
- // Calculate checksums for the Slice definitions in the unit.
- //
- ChecksumMap m = createChecksums(p);
- copy(m.begin(), m.end(), inserter(checksums, checksums.begin()));
- }
- if(listGenerated)
- {
- FileTracker::instance()->setOutput(os.str(), false);
- }
}
else
{
- Gen gen(argv[0], icecpp->getBaseName(), includePaths, output);
+ Gen gen(argv[0], icecpp->getBaseName(), includePaths, output, warningLevel);
gen.generate(p);
if(impl)
{
gen.generateImpl(p);
}
- if(!checksumClass.empty())
- {
- //
- // Calculate checksums for the Slice definitions in the unit.
- //
- ChecksumMap m = createChecksums(p);
- copy(m.begin(), m.end(), inserter(checksums, checksums.begin()));
- }
- if(listGenerated)
- {
- FileTracker::instance()->setOutput(os.str(), false);
- }
+ }
+
+ if(!checksumClass.empty())
+ {
+ //
+ // Calculate checksums for the Slice definitions in the unit.
+ //
+ ChecksumMap m = createChecksums(p);
+ copy(m.begin(), m.end(), inserter(checksums, checksums.begin()));
+ }
+ if(listGenerated)
+ {
+ FileTracker::instance()->setOutput(os.str(), false);
}
}
catch(const Slice::FileException& ex)
diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp
index 29c1c9f47dc..74297f80738 100644
--- a/cpp/src/slice2js/Gen.cpp
+++ b/cpp/src/slice2js/Gen.cpp
@@ -89,7 +89,7 @@ getDeprecateReason(const ContainedPtr& p1, const ContainedPtr& p2, const string&
}
-Slice::JsVisitor::JsVisitor(Output& out) : _out(out)
+Slice::JsVisitor::JsVisitor(Output& out, int warningLevel) : ParserVisitor(warningLevel), _out(out)
{
}
@@ -329,9 +329,10 @@ Slice::JsVisitor::writeDocComment(const ContainedPtr& p, const string& deprecate
_out << nl << " **/";
}
-Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir) :
+Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir, int warningLevel) :
_includePaths(includePaths),
- _useStdout(false)
+ _useStdout(false),
+ _warningLevel(warningLevel)
{
_fileBase = base;
string::size_type pos = base.find_last_of("/\\");
@@ -361,10 +362,12 @@ Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const st
printGeneratedHeader(_out, _fileBase + ".ice");
}
-Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir, ostream& out) :
+Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir, ostream& out,
+ int warningLevel) :
_out(out),
_includePaths(includePaths),
- _useStdout(true)
+ _useStdout(true),
+ _warningLevel(warningLevel)
{
_fileBase = base;
string::size_type pos = base.find_last_of("/\\");
@@ -415,17 +418,17 @@ Slice::Gen::generate(const UnitPtr& p)
_out.restoreIndent();
}
}
- RequireVisitor requireVisitor(_out, _includePaths, icejs, es6module);
+ RequireVisitor requireVisitor(_out, _includePaths, icejs, es6module, _warningLevel);
p->visit(&requireVisitor, false);
vector<string> seenModules = requireVisitor.writeRequires(p);
- TypesVisitor typesVisitor(_out, seenModules, icejs);
+ TypesVisitor typesVisitor(_out, seenModules, icejs, _warningLevel);
p->visit(&typesVisitor, false);
//
// Export the top-level modules.
//
- ExportVisitor exportVisitor(_out, icejs, es6module);
+ ExportVisitor exportVisitor(_out, icejs, es6module, _warningLevel);
p->visit(&exportVisitor, false);
if(!es6module)
@@ -478,8 +481,8 @@ Slice::Gen::printHeader()
}
Slice::Gen::RequireVisitor::RequireVisitor(IceUtilInternal::Output& out, vector<string> includePaths,
- bool icejs, bool es6modules) :
- JsVisitor(out),
+ bool icejs, bool es6modules, int warningLevel) :
+ JsVisitor(out, warningLevel),
_icejs(icejs),
_es6modules(es6modules),
_seenClass(false),
@@ -840,8 +843,9 @@ Slice::Gen::RequireVisitor::writeRequires(const UnitPtr& p)
return seenModules;
}
-Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out, vector<string> seenModules, bool icejs) :
- JsVisitor(out),
+Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out, vector<string> seenModules, bool icejs,
+ int warningLevel) :
+ JsVisitor(out, warningLevel),
_seenModules(seenModules),
_icejs(icejs)
{
@@ -1845,8 +1849,8 @@ Slice::Gen::TypesVisitor::encodeTypeForOperation(const TypePtr& type)
return "???";
}
-Slice::Gen::ExportVisitor::ExportVisitor(IceUtilInternal::Output& out, bool icejs, bool es6modules) :
- JsVisitor(out),
+Slice::Gen::ExportVisitor::ExportVisitor(IceUtilInternal::Output& out, bool icejs, bool es6modules, int warningLevel) :
+ JsVisitor(out, warningLevel),
_icejs(icejs),
_es6modules(es6modules)
{
diff --git a/cpp/src/slice2js/Gen.h b/cpp/src/slice2js/Gen.h
index 8196ba1b48b..dc3b65f18ba 100644
--- a/cpp/src/slice2js/Gen.h
+++ b/cpp/src/slice2js/Gen.h
@@ -19,7 +19,7 @@ class JsVisitor : public JsGenerator, public ParserVisitor
{
public:
- JsVisitor(::IceUtilInternal::Output&);
+ JsVisitor(::IceUtilInternal::Output&, int);
virtual ~JsVisitor();
protected:
@@ -44,12 +44,14 @@ public:
Gen(const std::string&,
const std::vector<std::string>&,
- const std::string&);
+ const std::string&,
+ int);
Gen(const std::string&,
const std::vector<std::string>&,
const std::string&,
- std::ostream&);
+ std::ostream&,
+ int);
~Gen();
@@ -64,6 +66,7 @@ private:
std::vector<std::string> _includePaths;
std::string _fileBase;
bool _useStdout;
+ int _warningLevel;
void printHeader();
@@ -71,7 +74,7 @@ private:
{
public:
- RequireVisitor(::IceUtilInternal::Output&, std::vector<std::string>, bool, bool);
+ RequireVisitor(::IceUtilInternal::Output&, std::vector<std::string>, bool, bool, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual bool visitStructStart(const StructPtr&);
@@ -103,7 +106,7 @@ private:
{
public:
- TypesVisitor(::IceUtilInternal::Output&, std::vector< std::string>, bool);
+ TypesVisitor(::IceUtilInternal::Output&, std::vector< std::string>, bool, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -127,7 +130,7 @@ private:
{
public:
- ExportVisitor(::IceUtilInternal::Output&, bool, bool);
+ ExportVisitor(::IceUtilInternal::Output&, bool, bool, int);
virtual bool visitModuleStart(const ModulePtr&);
private:
diff --git a/cpp/src/slice2js/Main.cpp b/cpp/src/slice2js/Main.cpp
index a73738fcee9..03f17331e59 100644
--- a/cpp/src/slice2js/Main.cpp
+++ b/cpp/src/slice2js/Main.cpp
@@ -80,6 +80,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"
;
}
@@ -103,6 +104,7 @@ compile(const vector<string>& argv)
opts.addOpt("d", "debug");
opts.addOpt("", "ice");
opts.addOpt("", "underscore");
+ opts.addOpt("", "no-warn");
bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end();
@@ -172,6 +174,8 @@ compile(const vector<string>& argv)
bool underscore = opts.isSet("underscore");
+ int warningLevel = opts.isSet("no-warn") ? 0 : 1;
+
if(args.empty())
{
consoleErr << argv[0] << ": error: no input file" << endl;
@@ -335,12 +339,12 @@ compile(const vector<string>& argv)
{
if(useStdout)
{
- Gen gen(icecpp->getBaseName(), includePaths, output, cout);
+ Gen gen(icecpp->getBaseName(), includePaths, output, cout, warningLevel);
gen.generate(p);
}
else
{
- Gen gen(icecpp->getBaseName(), includePaths, output);
+ Gen gen(icecpp->getBaseName(), includePaths, output, warningLevel);
gen.generate(p);
}
}
diff --git a/cpp/src/slice2objc/Gen.cpp b/cpp/src/slice2objc/Gen.cpp
index 8b927cc9830..cc7b718c7e3 100644
--- a/cpp/src/slice2objc/Gen.cpp
+++ b/cpp/src/slice2objc/Gen.cpp
@@ -133,7 +133,11 @@ public:
}
-Slice::ObjCVisitor::ObjCVisitor(Output& h, Output& m, const string& dllExport) : _H(h), _M(m), _dllExport(dllExport)
+Slice::ObjCVisitor::ObjCVisitor(Output& h, Output& m, const string& dllExport, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _H(h),
+ _M(m),
+ _dllExport(dllExport)
{
}
@@ -654,11 +658,12 @@ Slice::ObjCVisitor::getServerArgs(const OperationPtr& op) const
}
Slice::Gen::Gen(const string& name, const string& base, const string& include, const vector<string>& includePaths,
- const string& dir, const string& dllExport)
- : _base(base),
- _include(include),
- _includePaths(includePaths),
- _dllExport(dllExport)
+ const string& dir, const string& dllExport, int warningLevel) :
+ _base(base),
+ _include(include),
+ _includePaths(includePaths),
+ _dllExport(dllExport),
+ _warningLevel(warningLevel)
{
for(vector<string>::iterator p = _includePaths.begin(); p != _includePaths.end(); ++p)
{
@@ -729,7 +734,7 @@ Slice::Gen::operator!() const
void
Slice::Gen::generate(const UnitPtr& p)
{
- ObjCGenerator::validateMetaData(p);
+ ObjCGenerator::validateMetaData(p, _warningLevel);
//
// Give precedence to --dll-export command-line option
@@ -829,25 +834,25 @@ Slice::Gen::generate(const UnitPtr& p)
_M << nl << "# pragma clang diagnostic ignored \"-Wshadow-ivar\"";
_M << nl << "#endif";
- UnitVisitor unitVisitor(_H, _M, _dllExport);
+ UnitVisitor unitVisitor(_H, _M, _dllExport, _warningLevel);
p->visit(&unitVisitor, false);
- ObjectDeclVisitor objectDeclVisitor(_H, _M, _dllExport);
+ ObjectDeclVisitor objectDeclVisitor(_H, _M, _dllExport, _warningLevel);
p->visit(&objectDeclVisitor, false);
- ProxyDeclVisitor proxyDeclVisitor(_H, _M, _dllExport);
+ ProxyDeclVisitor proxyDeclVisitor(_H, _M, _dllExport, _warningLevel);
p->visit(&proxyDeclVisitor, false);
- TypesVisitor typesVisitor(_H, _M, _dllExport);
+ TypesVisitor typesVisitor(_H, _M, _dllExport, _warningLevel);
p->visit(&typesVisitor, false);
- ProxyVisitor proxyVisitor(_H, _M, _dllExport);
+ ProxyVisitor proxyVisitor(_H, _M, _dllExport, _warningLevel);
p->visit(&proxyVisitor, false);
- DelegateMVisitor delegateMVisitor(_H, _M, _dllExport);
+ DelegateMVisitor delegateMVisitor(_H, _M, _dllExport, _warningLevel);
p->visit(&delegateMVisitor, false);
- HelperVisitor HelperVisitor(_H, _M, _dllExport);
+ HelperVisitor HelperVisitor(_H, _M, _dllExport, _warningLevel);
p->visit(&HelperVisitor, false);
}
@@ -876,8 +881,8 @@ Slice::Gen::printHeader(Output& o)
o << "\n// Ice version " << ICE_STRING_VERSION;
}
-Slice::Gen::UnitVisitor::UnitVisitor(Output& H, Output& M, const string& dllExport) :
- ObjCVisitor(H, M, dllExport)
+Slice::Gen::UnitVisitor::UnitVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) :
+ ObjCVisitor(H, M, dllExport, warningLevel)
{
}
@@ -918,8 +923,8 @@ Slice::Gen::UnitVisitor::visitUnitEnd(const UnitPtr& unit)
}
}
-Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& H, Output& M, const string& dllExport)
- : ObjCVisitor(H, M, dllExport)
+Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
+ : ObjCVisitor(H, M, dllExport, warningLevel)
{
}
@@ -939,8 +944,8 @@ Slice::Gen::ObjectDeclVisitor::visitClassDecl(const ClassDeclPtr& p)
_H << nl << "@protocol " << fixName(p) << ";";
}
-Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& H, Output& M, const string& dllExport)
- : ObjCVisitor(H, M, dllExport)
+Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
+ : ObjCVisitor(H, M, dllExport, warningLevel)
{
}
@@ -954,8 +959,8 @@ Slice::Gen::ProxyDeclVisitor::visitClassDecl(const ClassDeclPtr& p)
}
}
-Slice::Gen::TypesVisitor::TypesVisitor(Output& H, Output& M, const string& dllExport)
- : ObjCVisitor(H, M, dllExport)
+Slice::Gen::TypesVisitor::TypesVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
+ : ObjCVisitor(H, M, dllExport, warningLevel)
{
}
@@ -2216,8 +2221,8 @@ Slice::Gen::TypesVisitor::writeMemberUnmarshal(const DataMemberList& dataMembers
}
}
-Slice::Gen::ProxyVisitor::ProxyVisitor(Output& H, Output& M, const string& dllExport)
- : ObjCVisitor(H, M, dllExport)
+Slice::Gen::ProxyVisitor::ProxyVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
+ : ObjCVisitor(H, M, dllExport, warningLevel)
{
}
@@ -2335,8 +2340,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p)
_H << " response" << responseExceptionSentDecl << deprecateSymbol << ";";
}
-Slice::Gen::HelperVisitor::HelperVisitor(Output& H, Output& M, const string& dllExport) :
- ObjCVisitor(H, M, dllExport)
+Slice::Gen::HelperVisitor::HelperVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) :
+ ObjCVisitor(H, M, dllExport, warningLevel)
{
}
@@ -2638,8 +2643,8 @@ Slice::Gen::HelperVisitor::visitStructStart(const StructPtr& p)
return false;
}
-Slice::Gen::DelegateMVisitor::DelegateMVisitor(Output& H, Output& M, const string& dllExport)
- : ObjCVisitor(H, M, dllExport)
+Slice::Gen::DelegateMVisitor::DelegateMVisitor(Output& H, Output& M, const string& dllExport, int warningLevel)
+ : ObjCVisitor(H, M, dllExport, warningLevel)
{
}
diff --git a/cpp/src/slice2objc/Gen.h b/cpp/src/slice2objc/Gen.h
index 0c9ef639e7d..6b6c4c99b10 100644
--- a/cpp/src/slice2objc/Gen.h
+++ b/cpp/src/slice2objc/Gen.h
@@ -20,7 +20,7 @@ class ObjCVisitor : public ObjCGenerator, public ParserVisitor
{
public:
- ObjCVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ ObjCVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual ~ObjCVisitor();
protected:
@@ -54,7 +54,8 @@ public:
const std::string&,
const std::vector<std::string>&,
const std::string&,
- const std::string&);
+ const std::string&,
+ int);
~Gen();
bool operator!() const; // Returns true if there was a constructor error
@@ -71,6 +72,7 @@ private:
std::string _include;
std::vector<std::string> _includePaths;
std::string _dllExport;
+ int _warningLevel;
void printHeader(::IceUtilInternal::Output&);
@@ -78,7 +80,7 @@ private:
{
public:
- UnitVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ UnitVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitUnitEnd(const UnitPtr&);
@@ -92,7 +94,7 @@ private:
{
public:
- ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual void visitClassDecl(const ClassDeclPtr&);
};
@@ -101,7 +103,7 @@ private:
{
public:
- ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual void visitClassDecl(const ClassDeclPtr&);
};
@@ -110,7 +112,7 @@ private:
{
public:
- TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
@@ -156,7 +158,7 @@ private:
{
public:
- ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitClassDefEnd(const ClassDefPtr&);
@@ -167,7 +169,7 @@ private:
{
public:
- HelperVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ HelperVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitClassDefStart(const ClassDefPtr&);
virtual void visitEnum(const EnumPtr&);
@@ -180,7 +182,7 @@ private:
{
public:
- DelegateMVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&);
+ DelegateMVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int);
virtual bool visitModuleStart(const ModulePtr&);
virtual void visitModuleEnd(const ModulePtr&);
diff --git a/cpp/src/slice2objc/Main.cpp b/cpp/src/slice2objc/Main.cpp
index 24ac096d92c..7877c072ca0 100644
--- a/cpp/src/slice2objc/Main.cpp
+++ b/cpp/src/slice2objc/Main.cpp
@@ -80,6 +80,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"
;
// Note: --case-sensitive is intentionally not shown here!
}
@@ -105,6 +106,7 @@ compile(const vector<string>& argv)
opts.addOpt("", "ice");
opts.addOpt("", "underscore");
opts.addOpt("", "case-sensitive");
+ opts.addOpt("", "no-warn");
bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end();
@@ -173,6 +175,8 @@ compile(const vector<string>& argv)
bool underscore = opts.isSet("underscore");
+ int warningLevel = opts.isSet("no-warn") ? 0 : 1;
+
if(args.empty())
{
consoleErr << argv[0] << ": no input file" << endl;
@@ -285,7 +289,8 @@ compile(const vector<string>& argv)
{
try
{
- Gen gen(argv[0], icecpp->getBaseName(), include, includePaths, output, dllExport);
+ Gen gen(argv[0], icecpp->getBaseName(), include, includePaths, output, dllExport,
+ warningLevel);
if(!gen)
{
u->destroy();
diff --git a/cpp/src/slice2objc/ObjCUtil.cpp b/cpp/src/slice2objc/ObjCUtil.cpp
index 1087a9a5bfc..ad2787308bc 100644
--- a/cpp/src/slice2objc/ObjCUtil.cpp
+++ b/cpp/src/slice2objc/ObjCUtil.cpp
@@ -1043,16 +1043,17 @@ Slice::ObjCGenerator::writeOptParamMarshalUnmarshalCode(Output &out, const TypeP
}
void
-Slice::ObjCGenerator::validateMetaData(const UnitPtr& u)
+Slice::ObjCGenerator::validateMetaData(const UnitPtr& u, int warningLevel)
{
- MetaDataVisitor visitor;
+ MetaDataVisitor visitor(warningLevel);
u->visit(&visitor, true);
}
const string Slice::ObjCGenerator::MetaDataVisitor::_objcPrefix = "objc:";
const string Slice::ObjCGenerator::MetaDataVisitor::_msg = "ignoring invalid metadata";
-Slice::ObjCGenerator::MetaDataVisitor::MetaDataVisitor()
+Slice::ObjCGenerator::MetaDataVisitor::MetaDataVisitor(int warningLevel) :
+ ParserVisitor(warningLevel)
{
}
@@ -1085,10 +1086,13 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
headerDir++;
if(headerDir > 1)
{
- ostringstream ostr;
- ostr << "ignoring invalid global metadata `" << s
- << "': directive can appear only once per file";
- emitWarning(file, -1, ostr.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << s
+ << "': directive can appear only once per file";
+ emitWarning(file, -1, ostr.str());
+ }
globalMetaData.remove(s);
}
continue;
@@ -1098,17 +1102,23 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
dllExport++;
if(dllExport > 1)
{
- ostringstream ostr;
- ostr << "ignoring invalid global metadata `" << s
- << "': directive can appear only once per file";
- emitWarning(file, -1, ostr.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << s
+ << "': directive can appear only once per file";
+ emitWarning(file, -1, ostr.str());
+ }
globalMetaData.remove(s);
}
continue;
}
- ostringstream ostr;
- ostr << "ignoring invalid global metadata `" << s << "'";
- emitWarning(file, -1, ostr.str());
+ if(warningLevel() > 0)
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << s << "'";
+ emitWarning(file, -1, ostr.str());
+ }
globalMetaData.remove(s);
}
}
diff --git a/cpp/src/slice2objc/ObjCUtil.h b/cpp/src/slice2objc/ObjCUtil.h
index 83f516f3027..11e4cece024 100644
--- a/cpp/src/slice2objc/ObjCUtil.h
+++ b/cpp/src/slice2objc/ObjCUtil.h
@@ -32,7 +32,7 @@ public:
//
// Validate all metadata in the unit with an "objc:" prefix.
//
- static void validateMetaData(const UnitPtr&);
+ static void validateMetaData(const UnitPtr&, int);
protected:
struct ModulePrefix
@@ -81,7 +81,7 @@ private:
class MetaDataVisitor : public ParserVisitor
{
public:
- MetaDataVisitor();
+ MetaDataVisitor(int);
virtual bool visitUnitStart(const UnitPtr&);
virtual bool visitModuleStart(const ModulePtr&);
diff --git a/cpp/src/slice2php/Main.cpp b/cpp/src/slice2php/Main.cpp
index 73822f05f9d..205aec133b3 100644
--- a/cpp/src/slice2php/Main.cpp
+++ b/cpp/src/slice2php/Main.cpp
@@ -63,7 +63,7 @@ class CodeVisitor : public ParserVisitor
{
public:
- CodeVisitor(IceUtilInternal::Output&, bool);
+ CodeVisitor(IceUtilInternal::Output&, bool, int);
virtual void visitClassDecl(const ClassDeclPtr&);
virtual bool visitClassDefStart(const ClassDefPtr&);
@@ -141,8 +141,10 @@ private:
//
// CodeVisitor implementation.
//
-CodeVisitor::CodeVisitor(Output& out, bool ns) :
- _out(out), _ns(ns)
+CodeVisitor::CodeVisitor(Output& out, bool ns, int warningLevel) :
+ ParserVisitor(warningLevel),
+ _out(out),
+ _ns(ns)
{
}
@@ -961,8 +963,13 @@ CodeVisitor::visitDictionary(const DictionaryPtr& p)
case Slice::Builtin::KindFloat:
case Slice::Builtin::KindDouble:
- emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP");
+ {
+ if(warningLevel() > 0)
+ {
+ emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP");
+ }
break;
+ }
case Slice::Builtin::KindObject:
case Slice::Builtin::KindObjectProxy:
@@ -973,7 +980,10 @@ CodeVisitor::visitDictionary(const DictionaryPtr& p)
}
else if(!EnumPtr::dynamicCast(keyType))
{
- emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP");
+ if(warningLevel() > 0)
+ {
+ emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP");
+ }
}
string type = getTypeVar(p);
@@ -1463,7 +1473,7 @@ CodeVisitor::collectExceptionMembers(const ExceptionPtr& p, MemberInfoList& allM
}
static void
-generate(const UnitPtr& un, bool all, bool checksum, bool ns, const vector<string>& includePaths, Output& out)
+generate(const UnitPtr& un, bool all, bool checksum, bool ns, const vector<string>& includePaths, Output& out, int warningLevel)
{
if(!all)
{
@@ -1494,7 +1504,7 @@ generate(const UnitPtr& un, bool all, bool checksum, bool ns, const vector<strin
}
}
- CodeVisitor codeVisitor(out, ns);
+ CodeVisitor codeVisitor(out, ns, warningLevel);
un->visit(&codeVisitor, false);
if(checksum)
@@ -1610,6 +1620,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"
;
}
@@ -1634,6 +1645,7 @@ compile(const vector<string>& argv)
opts.addOpt("", "all");
opts.addOpt("", "checksum");
opts.addOpt("n", "no-namespace");
+ opts.addOpt("", "no-warn");
bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end();
@@ -1705,6 +1717,8 @@ compile(const vector<string>& argv)
bool ns = !opts.isSet("no-namespace");
+ int warningLevel = opts.isSet("no-warn") ? 0 : 1;
+
if(args.empty())
{
consoleErr << argv[0] << ": error: no input file" << endl;
@@ -1856,7 +1870,7 @@ compile(const vector<string>& argv)
//
// Generate the PHP mapping.
//
- generate(u, all, checksum, ns, includePaths, out);
+ generate(u, all, checksum, ns, includePaths, out, warningLevel);
out << "?>\n";
out.close();