diff options
author | Jose <jose@zeroc.com> | 2017-02-03 18:10:20 +0100 |
---|---|---|
committer | Jose <jose@zeroc.com> | 2017-02-03 18:10:20 +0100 |
commit | 7274ebf13c7a1ff3b587598335201c3a4e848c90 (patch) | |
tree | ad673e775b6ab68d511bcc86cf420c519b65948d /cpp/src | |
parent | Connection::close fixes for C#/Java/JS (diff) | |
download | ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.tar.bz2 ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.tar.xz ice-7274ebf13c7a1ff3b587598335201c3a4e848c90.zip |
Rework warning suppression to use global meta data
Diffstat (limited to 'cpp/src')
40 files changed, 607 insertions, 604 deletions
diff --git a/cpp/src/Slice/Checksum.cpp b/cpp/src/Slice/Checksum.cpp index 1dd25cef5c8..1c8a21511e8 100644 --- a/cpp/src/Slice/Checksum.cpp +++ b/cpp/src/Slice/Checksum.cpp @@ -21,7 +21,7 @@ class ChecksumVisitor : public ParserVisitor { public: - ChecksumVisitor(ChecksumMap&, int); + ChecksumVisitor(ChecksumMap&); virtual bool visitClassDefStart(const ClassDefPtr&); virtual bool visitExceptionStart(const ExceptionPtr&); @@ -41,8 +41,7 @@ private: } -Slice::ChecksumVisitor::ChecksumVisitor(ChecksumMap& m, int warningLevel) : - ParserVisitor(warningLevel), +Slice::ChecksumVisitor::ChecksumVisitor(ChecksumMap& m) : _map(m) { } @@ -442,11 +441,11 @@ Slice::ChecksumVisitor::updateMap(const string& scoped, const string& data) } Slice::ChecksumMap -Slice::createChecksums(const UnitPtr& u, int warningLevel) +Slice::createChecksums(const UnitPtr& u) { ChecksumMap result; - ChecksumVisitor visitor(result, warningLevel); + ChecksumVisitor visitor(result); u->visit(&visitor, false); return result; diff --git a/cpp/src/Slice/Checksum.h b/cpp/src/Slice/Checksum.h index 158ac182f77..3744d8a6ad4 100644 --- a/cpp/src/Slice/Checksum.h +++ b/cpp/src/Slice/Checksum.h @@ -19,7 +19,7 @@ namespace Slice typedef std::map<std::string, std::vector<unsigned char> > ChecksumMap; -ChecksumMap createChecksums(const UnitPtr&, int); +ChecksumMap createChecksums(const UnitPtr&); } diff --git a/cpp/src/Slice/JavaUtil.cpp b/cpp/src/Slice/JavaUtil.cpp index 7c2f83fb20e..461f9b7c09e 100644 --- a/cpp/src/Slice/JavaUtil.cpp +++ b/cpp/src/Slice/JavaUtil.cpp @@ -139,10 +139,6 @@ class MetaDataVisitor : public ParserVisitor { public: - MetaDataVisitor(int warningLevel) : ParserVisitor(warningLevel) - { - } - virtual bool visitUnitStart(const UnitPtr& p) { static const string prefix = "java:"; @@ -157,6 +153,7 @@ public: string file = *q; DefinitionContextPtr dc = p->findDefinitionContext(file); assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); StringList globalMetaData = dc->getMetaData(); for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end();) { @@ -175,7 +172,7 @@ public: } else { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, "", "ignoring invalid global metadata `" + s + "'"); } @@ -238,6 +235,11 @@ public: TypePtr returnType = p->returnType(); StringList metaData = getMetaData(p); + UnitPtr unit = p->unit(); + string file = p->file(); + DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + if(!returnType) { for(StringList::const_iterator q = metaData.begin(); q != metaData.end();) @@ -245,7 +247,7 @@ public: string s = *q++; if(s.find("java:type:", 0) == 0) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(p->file(), p->line(), "ignoring invalid metadata `" + s + "' for operation with void return type"); @@ -290,6 +292,10 @@ public: const string file = p->file(); const string line = p->line(); + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(file); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ) { string s = *q++; @@ -303,7 +309,7 @@ public: BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); if(!builtin || builtin->kind() != Builtin::KindByte) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + s + "': " + "this metadata can only be used with a byte sequence"); @@ -322,7 +328,7 @@ public: builtin->kind() != Builtin::KindInt && builtin->kind() != Builtin::KindLong && builtin->kind() != Builtin::KindFloat && builtin->kind() != Builtin::KindDouble)) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + s + "': " + "this metadata can not be used with this type"); @@ -372,6 +378,12 @@ private: StringList metaData = cont->getMetaData(); StringList result; + UnitPtr unit = cont->container()->unit(); + string file = cont->file(); + DefinitionContextPtr dc = unit->findDefinitionContext(file); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + for(StringList::const_iterator p = metaData.begin(); p != metaData.end(); ++p) { string s = *p; @@ -431,7 +443,7 @@ private: continue; } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'"); } @@ -448,6 +460,10 @@ private: StringList validateType(const SyntaxTreeBasePtr& p, const StringList& metaData, const string& file, const string& line) { + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(file); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); StringList newMetaData; for(StringList::const_iterator i = metaData.begin(); i != metaData.end(); ++i) { @@ -468,7 +484,7 @@ private: assert(b); str = b->typeId(); } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "invalid metadata for " + str); } @@ -490,7 +506,7 @@ private: } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + *i + "'"); } @@ -500,7 +516,7 @@ private: // // Only valid in sequence definition which is checked in visitSequence // - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + *i + "'"); } @@ -512,7 +528,7 @@ private: { newMetaData.push_back(*i); } - else if(warningLevel() > 0) + else if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + *i + "'"); } @@ -523,7 +539,7 @@ private: { newMetaData.push_back(*i); } - else if(warningLevel() > 0) + else if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + *i + "'"); } @@ -538,6 +554,10 @@ private: StringList validateGetSet(const SyntaxTreeBasePtr& p, const StringList& metaData, const string& file, const string& line) { + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc= unit->findDefinitionContext(file); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); StringList newMetaData; for(StringList::const_iterator i = metaData.begin(); i != metaData.end(); ++i) { @@ -560,7 +580,7 @@ private: assert(b); str = b->typeId(); } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "invalid metadata for " + str); } @@ -3219,9 +3239,9 @@ Slice::JavaCompatGenerator::createOutput() } void -Slice::JavaCompatGenerator::validateMetaData(const UnitPtr& u, int warningLevel) +Slice::JavaCompatGenerator::validateMetaData(const UnitPtr& u) { - MetaDataVisitor visitor(warningLevel); + MetaDataVisitor visitor; u->visit(&visitor, true); } @@ -5530,8 +5550,8 @@ Slice::JavaGenerator::createOutput() } void -Slice::JavaGenerator::validateMetaData(const UnitPtr& u, int warningLevel) +Slice::JavaGenerator::validateMetaData(const UnitPtr& u) { - MetaDataVisitor visitor(warningLevel); + MetaDataVisitor visitor; u->visit(&visitor, true); } diff --git a/cpp/src/Slice/JavaUtil.h b/cpp/src/Slice/JavaUtil.h index c16f78a3247..fcc77d30f63 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&, int); + static void validateMetaData(const UnitPtr&); void close(); @@ -235,7 +235,7 @@ public: // // Validate all metadata in the unit with a "java:" prefix. // - static void validateMetaData(const UnitPtr&, int); + static void validateMetaData(const UnitPtr&); void close(); diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp index 5db58db7ef9..9b95062c035 100644 --- a/cpp/src/Slice/Parser.cpp +++ b/cpp/src/Slice/Parser.cpp @@ -122,17 +122,6 @@ Unit* unit; } -Slice::ParserVisitor::ParserVisitor(int warningLevel) : - _warningLevel(warningLevel) -{ -} - -int -Slice::ParserVisitor::warningLevel() -{ - return _warningLevel; -} - // ---------------------------------------------------------------------- // DefinitionContext // ---------------------------------------------------------------------- @@ -204,6 +193,13 @@ Slice::DefinitionContext::getMetaData() const return _metaData; } +bool +Slice::DefinitionContext::suppressWarning(const string& name) const +{ + string q = findMetaData("suppress-warning"); + return q == "suppress-warning" || q == "supress-warning:all" || q == ("suppress-warning:" + name); +} + // ---------------------------------------------------------------------- // SyntaxTreeBase // ---------------------------------------------------------------------- diff --git a/cpp/src/Slice/Parser.h b/cpp/src/Slice/Parser.h index 3f969dbf330..9363105a066 100644 --- a/cpp/src/Slice/Parser.h +++ b/cpp/src/Slice/Parser.h @@ -191,8 +191,6 @@ class ParserVisitor { public: - ParserVisitor(int warningLevel = 1); - virtual ~ParserVisitor() { } virtual bool visitUnitStart(const UnitPtr&) { return true; } virtual void visitUnitEnd(const UnitPtr&) { } @@ -212,12 +210,6 @@ public: virtual void visitDictionary(const DictionaryPtr&) { } virtual void visitEnum(const EnumPtr&) { } virtual void visitConst(const ConstPtr&) { } - - int warningLevel(); - -private: - - int _warningLevel; }; // ---------------------------------------------------------------------- @@ -242,6 +234,12 @@ public: std::string findMetaData(const std::string&) const; StringList getMetaData() const; + // + // Check if we need to suppress the given warnings based + // on the [["supress-warning"]] global meta-data + // + bool suppressWarning(const std::string& = "") const; + private: int _includeLevel; diff --git a/cpp/src/Slice/Python.cpp b/cpp/src/Slice/Python.cpp index 057fb22cca4..bc1da962d70 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&, int); + static void createModules(const UnitPtr&, const string&, const string&); virtual void visitModuleEnd(const ModulePtr&); private: - PackageVisitor(StringList&, int); + PackageVisitor(StringList&); enum ReadState { PreModules, InModules, InSubmodules }; @@ -128,17 +128,16 @@ private: const char* PackageVisitor::_moduleTag = "# Modules:"; const char* PackageVisitor::_submoduleTag = "# Submodules:"; -PackageVisitor::PackageVisitor(StringList& modules, int warningLevel) : - ParserVisitor(warningLevel), +PackageVisitor::PackageVisitor(StringList& modules) : _modules(modules) { } void -PackageVisitor::createModules(const UnitPtr& unit, const string& module, const string& dir, int warningLevel) +PackageVisitor::createModules(const UnitPtr& unit, const string& module, const string& dir) { StringList modules; - PackageVisitor v(modules, warningLevel); + PackageVisitor v(modules); unit->visit(&v, false); for(StringList::iterator p = modules.begin(); p != modules.end(); ++p) @@ -404,7 +403,6 @@ 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" ; } @@ -432,7 +430,6 @@ 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 @@ -503,8 +500,6 @@ 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; @@ -670,7 +665,7 @@ Slice::Python::compile(const vector<string>& argv) // // Generate Python code. // - generate(u, all, checksum, includePaths, out, warningLevel); + generate(u, all, checksum, includePaths, out); out.close(); } @@ -680,7 +675,7 @@ Slice::Python::compile(const vector<string>& argv) // if(!noPackage) { - PackageVisitor::createModules(u, prefix + base + "_ice", output, warningLevel); + PackageVisitor::createModules(u, prefix + base + "_ice", output); } } catch(const Slice::FileException& ex) diff --git a/cpp/src/Slice/PythonUtil.cpp b/cpp/src/Slice/PythonUtil.cpp index 4d5a23caf9d..9f09a765ed4 100644 --- a/cpp/src/Slice/PythonUtil.cpp +++ b/cpp/src/Slice/PythonUtil.cpp @@ -50,8 +50,6 @@ class MetaDataVisitor : public ParserVisitor { public: - MetaDataVisitor(int); - virtual bool visitUnitStart(const UnitPtr&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitClassDecl(const ClassDeclPtr&); @@ -93,7 +91,7 @@ class ModuleVisitor : public ParserVisitor { public: - ModuleVisitor(Output&, set<string>&, int); + ModuleVisitor(Output&, set<string>&); virtual bool visitModuleStart(const ModulePtr&); @@ -110,7 +108,7 @@ class CodeVisitor : public ParserVisitor { public: - CodeVisitor(IceUtilInternal::Output&, set<string>&, int); + CodeVisitor(IceUtilInternal::Output&, set<string>&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -293,8 +291,7 @@ getDictLookup(const ContainedPtr& cont, const string& suffix = "", const string& // // ModuleVisitor implementation. // -Slice::Python::ModuleVisitor::ModuleVisitor(Output& out, set<string>& history, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Python::ModuleVisitor::ModuleVisitor(Output& out, set<string>& history) : _out(out), _history(history) { } @@ -344,8 +341,7 @@ Slice::Python::ModuleVisitor::visitModuleStart(const ModulePtr& p) // // CodeVisitor implementation. // -Slice::Python::CodeVisitor::CodeVisitor(Output& out, set<string>& moduleHistory, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Python::CodeVisitor::CodeVisitor(Output& out, set<string>& moduleHistory) : _out(out), _moduleHistory(moduleHistory) { @@ -2835,9 +2831,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, int warningLevel) + Output& out) { - Slice::Python::MetaDataVisitor visitor(warningLevel); + Slice::Python::MetaDataVisitor visitor; un->visit(&visitor, false); out << nl << "from sys import version_info as _version_info_"; @@ -2862,15 +2858,15 @@ Slice::Python::generate(const UnitPtr& un, bool all, bool checksum, const vector set<string> moduleHistory; - ModuleVisitor moduleVisitor(out, moduleHistory, warningLevel); + ModuleVisitor moduleVisitor(out, moduleHistory); un->visit(&moduleVisitor, true); - CodeVisitor codeVisitor(out, moduleHistory, warningLevel); + CodeVisitor codeVisitor(out, moduleHistory); un->visit(&codeVisitor, false); if(checksum) { - ChecksumMap checksums = createChecksums(un, warningLevel); + ChecksumMap checksums = createChecksums(un); if(!checksums.empty()) { out << sp; @@ -2986,11 +2982,6 @@ Slice::Python::printHeader(IceUtilInternal::Output& out) out << "#\n"; } -Slice::Python::MetaDataVisitor::MetaDataVisitor(int warningLevel) : - ParserVisitor(warningLevel) -{ -} - bool Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p) { @@ -3000,12 +2991,12 @@ Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p) // Validate global metadata in the top-level file and all included files. // StringList files = p->allFiles(); - for(StringList::iterator q = files.begin(); q != files.end(); ++q) { string file = *q; DefinitionContextPtr dc = p->findDefinitionContext(file); assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); StringList globalMetaData = dc->getMetaData(); for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end();) { @@ -3018,7 +3009,7 @@ Slice::Python::MetaDataVisitor::visitUnitStart(const UnitPtr& p) continue; } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, "", "ignoring invalid global metadata `" + s + "'"); } @@ -3094,6 +3085,11 @@ Slice::Python::MetaDataVisitor::visitSequence(const SequencePtr& p) const string file = p->file(); const string line = p->line(); StringList protobufMetaData; + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(file); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + for(StringList::const_iterator q = metaData.begin(); q != metaData.end(); ) { string s = *q++; @@ -3106,7 +3102,7 @@ Slice::Python::MetaDataVisitor::visitSequence(const SequencePtr& p) BuiltinPtr builtin = BuiltinPtr::dynamicCast(p->type()); if(!builtin || builtin->kind() != Builtin::KindByte) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + s + ": " + "`protobuf' encoding must be a byte sequence"); @@ -3146,6 +3142,11 @@ StringList Slice::Python::MetaDataVisitor::validateSequence(const string& file, const string& line, const TypePtr& type, const StringList& metaData) { + const UnitPtr unit = type->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(file); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + static const string prefix = "python:"; StringList newMetaData = metaData; for(StringList::const_iterator p = newMetaData.begin(); p != newMetaData.end();) @@ -3166,7 +3167,7 @@ Slice::Python::MetaDataVisitor::validateSequence(const string& file, const strin } } } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + s + "'"); } @@ -3181,12 +3182,21 @@ Slice::Python::MetaDataVisitor::reject(const ContainedPtr& cont) { StringList localMetaData = cont->getMetaData(); static const string prefix = "python:"; + + const UnitPtr unit = cont->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(cont->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + for(StringList::const_iterator p = localMetaData.begin(); p != localMetaData.end();) { string s = *p++; if(s.find(prefix) == 0) { - emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'"); + if(emitWarnings) + { + emitWarning(cont->file(), cont->line(), "ignoring invalid metadata `" + s + "'"); + } localMetaData.remove(s); } } diff --git a/cpp/src/Slice/PythonUtil.h b/cpp/src/Slice/PythonUtil.h index 161d3bdb148..9d48b3d3871 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&, int); +void generate(const Slice::UnitPtr&, bool, bool, const std::vector<std::string>&, IceUtilInternal::Output&); // // Convert a scoped name into a Python name. diff --git a/cpp/src/Slice/Ruby.cpp b/cpp/src/Slice/Ruby.cpp index 7bd4dd07d17..7861bcb8c0b 100644 --- a/cpp/src/Slice/Ruby.cpp +++ b/cpp/src/Slice/Ruby.cpp @@ -81,7 +81,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; } @@ -106,7 +105,6 @@ Slice::Ruby::compile(const vector<string>& argv) opts.addOpt("", "underscore"); opts.addOpt("", "all"); opts.addOpt("", "checksum"); - opts.addOpt("", "no-warn"); vector<string> args; try @@ -171,8 +169,6 @@ 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; @@ -315,7 +311,7 @@ Slice::Ruby::compile(const vector<string>& argv) // // Generate the Ruby mapping. // - generate(u, all, checksum, includePaths, out, warningLevel); + generate(u, all, checksum, includePaths, out); out.close(); } diff --git a/cpp/src/Slice/RubyUtil.cpp b/cpp/src/Slice/RubyUtil.cpp index 574a7cf2644..9c1a32d8e77 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&, int); + CodeVisitor(IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -184,8 +184,7 @@ splitScopedName(const string& scoped) // // CodeVisitor implementation. // -Slice::Ruby::CodeVisitor::CodeVisitor(Output& out, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Ruby::CodeVisitor::CodeVisitor(Output& out) : _out(out) { } @@ -1446,8 +1445,7 @@ 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, - int warningLevel) +Slice::Ruby::generate(const UnitPtr& un, bool all, bool checksum, const vector<string>& includePaths, Output& out) { out << nl << "require 'Ice'"; @@ -1467,12 +1465,12 @@ Slice::Ruby::generate(const UnitPtr& un, bool all, bool checksum, const vector<s } } - CodeVisitor codeVisitor(out, warningLevel); + CodeVisitor codeVisitor(out); un->visit(&codeVisitor, false); if(checksum) { - ChecksumMap checksums = createChecksums(un, warningLevel); + ChecksumMap checksums = createChecksums(un); if(!checksums.empty()) { out << sp; diff --git a/cpp/src/Slice/RubyUtil.h b/cpp/src/Slice/RubyUtil.h index 387cbc67073..e67ecd1b623 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&, int); +void generate(const Slice::UnitPtr&, bool, bool, const std::vector<std::string>&, IceUtilInternal::Output&); // // 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 77624f6cdfa..678ab4bfda6 100644 --- a/cpp/src/slice2confluence/Gen.cpp +++ b/cpp/src/slice2confluence/Gen.cpp @@ -39,8 +39,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 vector<string>& sortOrder, - int warningLevel) + const string& searchAction, unsigned indexCount, unsigned warnSummary, const vector<string>& sortOrder) { unit->mergeModules(); @@ -69,19 +68,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, warningLevel); + FileVisitor tv(files); unit->visit(&tv, false); // // Generate the start page. // - StartPageVisitor spv(files, warningLevel); + StartPageVisitor spv(files); unit->visit(&spv, false); // // Generate the table of contents. // - TOCVisitor tocv(files, indexHeader, indexFooter, warningLevel); + TOCVisitor tocv(files, indexHeader, indexFooter); unit->visit(&tocv, false); tocv.generate(); @@ -89,7 +88,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, warningLevel); + PageVisitor v(files); unit->visit(&v, false); } @@ -1954,8 +1953,7 @@ Slice::StartPageGenerator::printHeaderFooter() // Do nothing } -Slice::FileVisitor::FileVisitor(Files& files, int warningLevel) : - ParserVisitor(warningLevel), +Slice::FileVisitor::FileVisitor(Files& files) : _files(files) { } @@ -2018,8 +2016,7 @@ Slice::FileVisitor::visitEnum(const EnumPtr& e) _files.insert(e->file()); } -Slice::StartPageVisitor::StartPageVisitor(const Files& files, int warningLevel) : - ParserVisitor(warningLevel), +Slice::StartPageVisitor::StartPageVisitor(const Files& files) : _spg(files) { } @@ -2176,8 +2173,7 @@ TOCGenerator::writeEntry(const ContainedPtr& c) end(); } -TOCVisitor::TOCVisitor(const Files& files, const string& header, const string& footer, int warningLevel) : - ParserVisitor(warningLevel), +TOCVisitor::TOCVisitor(const Files& files, const string& header, const string& footer) : _tg(files, header, footer) { } @@ -3267,8 +3263,7 @@ Slice::EnumGenerator::generate(const EnumPtr& e) assert(_out.currIndent() == indent); } -Slice::PageVisitor::PageVisitor(const Files& files, int warningLevel) : - ParserVisitor(warningLevel), +Slice::PageVisitor::PageVisitor(const Files& files) : _files(files) { } diff --git a/cpp/src/slice2confluence/Gen.h b/cpp/src/slice2confluence/Gen.h index 587e28c7d1e..bc10790604b 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>(), int = 1); + unsigned, unsigned, const ::std::vector<std::string>& = ::std::vector<std::string>()); typedef ::std::set< ::std::string> Files; @@ -165,7 +165,7 @@ class FileVisitor : private ::IceUtil::noncopyable, public ParserVisitor { public: - FileVisitor(Files&, int); + FileVisitor(Files&); 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&, int); + StartPageVisitor(const Files&); 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&, int); + TOCVisitor(const Files&, const ::std::string&, const ::std::string&); 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&, int); + PageVisitor(const Files&); 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 38c7d5e2319..8eeca1c303b 100644 --- a/cpp/src/slice2confluence/Main.cpp +++ b/cpp/src/slice2confluence/Main.cpp @@ -108,7 +108,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; } @@ -137,7 +136,6 @@ 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; @@ -250,8 +248,6 @@ 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; @@ -322,7 +318,7 @@ compile(const vector<string>& argv) try { Slice::generate(p, output, header, footer, indexHeader, indexFooter, imageDir, logoURL, - searchAction, indexCount, summaryCount, sort_order, warningLevel); + searchAction, indexCount, summaryCount, sort_order); } catch(const Slice::FileException& ex) { diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index dd1ca22855c..beae822ec6b 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, int warningLevel) : + bool implCpp98, bool implCpp11, bool checksum, bool ice) : _base(base), _headerExtension(headerExtension), _implHeaderExtension(headerExtension), @@ -390,8 +390,7 @@ Slice::Gen::Gen(const string& base, const string& headerExtension, const string& _implCpp98(implCpp98), _implCpp11(implCpp11), _checksum(checksum), - _ice(ice), - _warningLevel(warningLevel) + _ice(ice) { for(vector<string>::iterator p = _includePaths.begin(); p != _includePaths.end(); ++p) { @@ -423,7 +422,7 @@ Slice::Gen::generateChecksumMap(const UnitPtr& p) { if(_checksum) { - ChecksumMap map = createChecksums(p, _warningLevel); + ChecksumMap map = createChecksums(p); if(!map.empty()) { C << sp << nl << "namespace"; @@ -456,13 +455,19 @@ Slice::Gen::generate(const UnitPtr& p) string file = p->topLevelFile(); // - // Give precedence to header-ext global metadata. + // Give precedence to header-ext/source-ext global metadata. // string headerExtension = getHeaderExt(file, p); if(!headerExtension.empty()) { _headerExtension = headerExtension; } + + string sourceExtension = getSourceExt(file, p); + if(!sourceExtension.empty()) + { + _sourceExtension = sourceExtension; + } // // Give precedence to --dll-export command-line option @@ -574,7 +579,7 @@ Slice::Gen::generate(const UnitPtr& p) H << "\n#define __" << s << "__"; H << '\n'; - validateMetaData(p, _warningLevel); + validateMetaData(p); writeExtraHeaders(C); @@ -685,15 +690,30 @@ Slice::Gen::generate(const UnitPtr& p) DefinitionContextPtr dc = p->findDefinitionContext(file); assert(dc); StringList globalMetaData = dc->getMetaData(); - for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end(); ++q) + bool emitWarnings = dc->suppressWarning("invalid-metadata"); + for(StringList::const_iterator q = globalMetaData.begin(); q != globalMetaData.end();) { - string s = *q; + string s = *q++; static const string includePrefix = "cpp:include:"; - if(s.find(includePrefix) == 0 && s.size() > includePrefix.size()) + if(s.find(includePrefix) == 0) { - H << nl << "#include <" << s.substr(includePrefix.size()) << ">"; + if(s.size() > includePrefix.size()) + { + H << nl << "#include <" << s.substr(includePrefix.size()) << ">"; + } + else + { + if(emitWarnings) + { + ostringstream ostr; + ostr << "ignoring invalid global metadata `" << s << "'"; + emitWarning(file, -1, ostr.str()); + } + globalMetaData.remove(s); + } } } + dc->setMetaData(globalMetaData); } // @@ -728,27 +748,27 @@ Slice::Gen::generate(const UnitPtr& p) C << nl << "#ifdef ICE_CPP11_MAPPING // C++11 mapping"; C.restoreIndent(); { - normalizeMetaData(p, true, _warningLevel); + normalizeMetaData(p, true); - Cpp11DeclVisitor declVisitor(H, C, _dllExport, _warningLevel); + Cpp11DeclVisitor declVisitor(H, C, _dllExport); p->visit(&declVisitor, false); - Cpp11TypesVisitor typesVisitor(H, C, _dllExport, _warningLevel); + Cpp11TypesVisitor typesVisitor(H, C, _dllExport); p->visit(&typesVisitor, false); - Cpp11LocalObjectVisitor localObjectVisitor(H, C, _dllExport, _warningLevel); + Cpp11LocalObjectVisitor localObjectVisitor(H, C, _dllExport); p->visit(&localObjectVisitor, false); - Cpp11InterfaceVisitor interfaceVisitor(H, C, _dllExport, _warningLevel); + Cpp11InterfaceVisitor interfaceVisitor(H, C, _dllExport); p->visit(&interfaceVisitor, false); - Cpp11ValueVisitor valueVisitor(H, C, _dllExport, _warningLevel); + Cpp11ValueVisitor valueVisitor(H, C, _dllExport); p->visit(&valueVisitor, false); - Cpp11ProxyVisitor proxyVisitor(H, C, _dllExport, _warningLevel); + Cpp11ProxyVisitor proxyVisitor(H, C, _dllExport); p->visit(&proxyVisitor, false); - Cpp11StreamVisitor streamVisitor(H, C, _dllExport, _warningLevel); + Cpp11StreamVisitor streamVisitor(H, C, _dllExport); p->visit(&streamVisitor, false); if(_implCpp11) @@ -769,11 +789,11 @@ Slice::Gen::generate(const UnitPtr& p) } implC << _base << "I." << _implHeaderExtension << ">"; - Cpp11ImplVisitor implVisitor(implH, implC, _dllExport, _warningLevel); + Cpp11ImplVisitor implVisitor(implH, implC, _dllExport); p->visit(&implVisitor, false); } - Cpp11CompatibilityVisitor compatibilityVisitor(H, C, _dllExport, _warningLevel); + Cpp11CompatibilityVisitor compatibilityVisitor(H, C, _dllExport); p->visit(&compatibilityVisitor, false); generateChecksumMap(p); @@ -788,21 +808,21 @@ Slice::Gen::generate(const UnitPtr& p) C << nl << "#else // C++98 mapping"; C.restoreIndent(); { - normalizeMetaData(p, false, _warningLevel); + normalizeMetaData(p, false); - ProxyDeclVisitor proxyDeclVisitor(H, C, _dllExport, _warningLevel); + ProxyDeclVisitor proxyDeclVisitor(H, C, _dllExport); p->visit(&proxyDeclVisitor, false); - ObjectDeclVisitor objectDeclVisitor(H, C, _dllExport, _warningLevel); + ObjectDeclVisitor objectDeclVisitor(H, C, _dllExport); p->visit(&objectDeclVisitor, false); - TypesVisitor typesVisitor(H, C, _dllExport, _warningLevel); + TypesVisitor typesVisitor(H, C, _dllExport); p->visit(&typesVisitor, false); - AsyncVisitor asyncVisitor(H, C, _dllExport, _warningLevel); + AsyncVisitor asyncVisitor(H, C, _dllExport); p->visit(&asyncVisitor, false); - AsyncImplVisitor asyncImplVisitor(H, C, _dllExport, _warningLevel); + AsyncImplVisitor asyncImplVisitor(H, C, _dllExport); p->visit(&asyncImplVisitor, false); // @@ -811,16 +831,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, _warningLevel); + AsyncCallbackVisitor asyncCallbackVisitor(H, C, _dllExport); p->visit(&asyncCallbackVisitor, false); - ProxyVisitor proxyVisitor(H, C, _dllExport, _warningLevel); + ProxyVisitor proxyVisitor(H, C, _dllExport); p->visit(&proxyVisitor, false); - ObjectVisitor objectVisitor(H, C, _dllExport, _warningLevel); + ObjectVisitor objectVisitor(H, C, _dllExport); p->visit(&objectVisitor, false); - StreamVisitor streamVisitor(H, C, _dllExport, _warningLevel); + StreamVisitor streamVisitor(H, C, _dllExport); p->visit(&streamVisitor, false); // @@ -828,7 +848,7 @@ Slice::Gen::generate(const UnitPtr& p) // definition, because completed calls the begin_ method in the // proxy. // - AsyncCallbackTemplateVisitor asyncCallbackTemplateVisitor(H, C, _dllExport, _warningLevel); + AsyncCallbackTemplateVisitor asyncCallbackTemplateVisitor(H, C, _dllExport); p->visit(&asyncCallbackTemplateVisitor, false); if(_implCpp98) @@ -849,7 +869,7 @@ Slice::Gen::generate(const UnitPtr& p) } implC << _base << "I." << _implHeaderExtension << ">"; - ImplVisitor implVisitor(implH, implC, _dllExport, _warningLevel); + ImplVisitor implVisitor(implH, implC, _dllExport); p->visit(&implVisitor, false); } @@ -903,8 +923,7 @@ Slice::Gen::writeExtraHeaders(IceUtilInternal::Output& out) } } -Slice::Gen::TypesVisitor::TypesVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Gen::TypesVisitor::TypesVisitor(Output& h, Output& c, const string& dllExport) : H(h), C(c), _dllExport(dllExport), _doneStaticSymbol(false), _useWstring(false) { } @@ -1538,8 +1557,7 @@ Slice::Gen::TypesVisitor::emitUpcall(const ExceptionPtr& base, const string& cal << call; } -Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& h, Output&, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& h, Output&, const string& dllExport) : H(h), _dllExport(dllExport) { } @@ -1606,8 +1624,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, int warningLevel) : - ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _dllClassExport(toDllClassExport(dllExport)), +Slice::Gen::ProxyVisitor::ProxyVisitor(Output& h, Output& c, const string& dllExport) : + H(h), C(c), _dllExport(dllExport), _dllClassExport(toDllClassExport(dllExport)), _dllMemberExport(toDllMemberExport(dllExport)), _useWstring(false) { } @@ -2156,8 +2174,7 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) } } -Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& h, Output& c, const string& dllExport) : H(h), C(c), _dllExport(dllExport) { } @@ -2226,8 +2243,7 @@ Slice::Gen::ObjectDeclVisitor::visitOperation(const OperationPtr& p) } } -Slice::Gen::ObjectVisitor::ObjectVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Gen::ObjectVisitor::ObjectVisitor(Output& h, Output& c, const string& dllExport) : H(h), C(c), _dllExport(dllExport), _doneStaticSymbol(false), _useWstring(false) { } @@ -3387,8 +3403,7 @@ 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, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Gen::AsyncCallbackVisitor::AsyncCallbackVisitor(Output& h, Output&, const string& dllExport) : H(h), _dllExport(dllExport), _useWstring(false) { } @@ -3447,8 +3462,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, int warningLevel) - : ParserVisitor(warningLevel), H(h), _dllExport(dllExport), _useWstring(false) +Slice::Gen::AsyncCallbackTemplateVisitor::AsyncCallbackTemplateVisitor(Output& h, Output&, const string& dllExport) + : H(h), _dllExport(dllExport), _useWstring(false) { } @@ -3751,8 +3766,8 @@ Slice::Gen::AsyncCallbackTemplateVisitor::generateOperation(const OperationPtr& } } -Slice::Gen::ImplVisitor::ImplVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _useWstring(false) +Slice::Gen::ImplVisitor::ImplVisitor(Output& h, Output& c, const string& dllExport) : + H(h), C(c), _dllExport(dllExport), _useWstring(false) { } @@ -4043,8 +4058,8 @@ Slice::Gen::ImplVisitor::visitClassDefStart(const ClassDefPtr& p) return true; } -Slice::Gen::AsyncVisitor::AsyncVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _useWstring(false) +Slice::Gen::AsyncVisitor::AsyncVisitor(Output& h, Output& c, const string& dllExport) : + H(h), C(c), _dllExport(dllExport), _useWstring(false) { } @@ -4178,8 +4193,8 @@ Slice::Gen::AsyncVisitor::visitOperation(const OperationPtr& p) } } -Slice::Gen::AsyncImplVisitor::AsyncImplVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _useWstring(false) +Slice::Gen::AsyncImplVisitor::AsyncImplVisitor(Output& h, Output& c, const string& dllExport) : + H(h), C(c), _dllExport(dllExport), _useWstring(false) { } @@ -4343,8 +4358,7 @@ Slice::Gen::AsyncImplVisitor::visitOperation(const OperationPtr& p) C << eb; } -Slice::Gen::StreamVisitor::StreamVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Gen::StreamVisitor::StreamVisitor(Output& h, Output& c, const string& dllExport) : H(h), C(c), _dllExport(dllExport) @@ -4475,16 +4489,12 @@ Slice::Gen::StreamVisitor::visitEnum(const EnumPtr& p) } void -Slice::Gen::validateMetaData(const UnitPtr& u, int warningLevel) +Slice::Gen::validateMetaData(const UnitPtr& u) { - MetaDataVisitor visitor(warningLevel); + MetaDataVisitor visitor; u->visit(&visitor, false); } -Slice::Gen::MetaDataVisitor::MetaDataVisitor(int warningLevel) : ParserVisitor(warningLevel) -{ -} - bool Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p) { @@ -4502,22 +4512,22 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p) DefinitionContextPtr dc = p->findDefinitionContext(file); assert(dc); StringList globalMetaData = dc->getMetaData(); - StringList newGlobalMetaData; int headerExtension = 0; + int sourceExtension = 0; int dllExport = 0; - for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end(); ++r) + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end();) { - string s = *r; - + string s = *r++; if(s.find(prefix) == 0) { static const string cppIncludePrefix = "cpp:include:"; static const string cppHeaderExtPrefix = "cpp:header-ext:"; + static const string cppSourceExtPrefix = "cpp:source-ext:"; static const string cppDllExportPrefix = "cpp:dll-export:"; if(s.find(cppIncludePrefix) == 0 && s.size() > cppIncludePrefix.size()) { - newGlobalMetaData.push_back(s); continue; } else if(s.find(cppHeaderExtPrefix) == 0 && s.size() > cppHeaderExtPrefix.size()) @@ -4525,17 +4535,30 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p) headerExtension++; if(headerExtension > 1) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream ostr; ostr << "ignoring invalid global metadata `" << s << "': directive can appear only once per file"; emitWarning(file, -1, ostr.str()); } + globalMetaData.remove(s); } - else + continue; + } + else if(s.find(cppSourceExtPrefix) == 0 && s.size() > cppSourceExtPrefix.size()) + { + sourceExtension++; + if(sourceExtension > 1) { - newGlobalMetaData.push_back(s); + if(emitWarnings) + { + ostringstream ostr; + ostr << "ignoring invalid global metadata `" << s + << "': directive can appear only once per file"; + emitWarning(file, -1, ostr.str()); + } + globalMetaData.remove(s); } continue; } @@ -4544,31 +4567,29 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p) dllExport++; if(dllExport > 1) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream ostr; ostr << "ignoring invalid global metadata `" << s << "': directive can appear only once per file"; emitWarning(file, -1, ostr.str()); } - } - else - { - newGlobalMetaData.push_back(s); + globalMetaData.remove(s); } continue; } - if(warningLevel() > 0) + if(emitWarnings) { ostringstream ostr; ostr << "ignoring invalid global metadata `" << s << "'"; emitWarning(file, -1, ostr.str()); } + globalMetaData.remove(s); } } - dc->setMetaData(newGlobalMetaData); + dc->setMetaData(globalMetaData); } return true; @@ -4640,9 +4661,14 @@ Slice::Gen::MetaDataVisitor::visitOperation(const OperationPtr& p) StringList metaData = p->getMetaData(); + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + if(!cl->isLocal() && p->hasMetaData("cpp:noexcept")) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(p->file(), p->line(), "ignoring metadata `cpp:noexcept' for non local interface"); } @@ -4654,18 +4680,18 @@ Slice::Gen::MetaDataVisitor::visitOperation(const OperationPtr& p) { for(StringList::const_iterator q = metaData.begin(); q != metaData.end();) { - if(q->find("cpp:type:") == 0 || q->find("cpp:view-type:") == 0 || - q->find("cpp:range") == 0 || (*q) == "cpp:array") + string s = *q++; + if(s.find("cpp:type:") == 0 || s.find("cpp:view-type:") == 0 || + s.find("cpp:range") == 0 || s == "cpp:array") { - if(warningLevel() > 0) + if(emitWarnings) { - emitWarning(p->file(), p->line(), "ignoring invalid metadata `" + *q + + emitWarning(p->file(), p->line(), "ignoring invalid metadata `" + s + "' for operation with void return type"); } - metaData.remove(*q); + metaData.remove(s); continue; } - ++q; } } else @@ -4726,10 +4752,15 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin static const string cpp11Prefix = "cpp11:"; static const string cpp98Prefix = "cpp98:"; - StringList newMetaData; - for(StringList::const_iterator p = metaData.begin(); p != metaData.end(); ++p) + const UnitPtr unit = cont->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(file); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + + StringList newMetaData = metaData; + for(StringList::const_iterator p = newMetaData.begin(); p != newMetaData.end();) { - string s = *p; + string s = *p++; string prefix; bool cpp98 = false; @@ -4752,7 +4783,6 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin if(s == "cpp:const" && operation) { - newMetaData.push_back(s); continue; } if(!prefix.empty()) @@ -4767,7 +4797,6 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin ExceptionPtr exception = ExceptionPtr::dynamicCast(cont); if((builtin && builtin->kind() == Builtin::KindString) || module || clss || strct || exception) { - newMetaData.push_back(s); continue; } } @@ -4775,7 +4804,6 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin { if(BuiltinPtr::dynamicCast(cont)->kind() == Builtin::KindString) { - newMetaData.push_back(s); continue; } } @@ -4783,18 +4811,15 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin { if(ss.find("type:") == 0 || ss.find("view-type:") == 0 || ss == "array" || ss.find("range") == 0) { - newMetaData.push_back(s); continue; } } if(DictionaryPtr::dynamicCast(cont) && (ss.find("type:") == 0 || ss.find("view-type:") == 0)) { - newMetaData.push_back(s); continue; } if(!cpp11 && StructPtr::dynamicCast(cont) && (ss == "class" || ss == "comparable")) { - newMetaData.push_back(s); continue; } @@ -4804,18 +4829,15 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin (cl->isLocal() && ss.find("type:") == 0) || (!cpp11 && cl->isLocal() && ss == "comparable"))) { - newMetaData.push_back(s); continue; } } if(ExceptionPtr::dynamicCast(cont) && ss == "ice_print") { - newMetaData.push_back(s); continue; } if(!cpp98 && EnumPtr::dynamicCast(cont) && ss == "unscoped") { - newMetaData.push_back(s); continue; } @@ -4823,15 +4845,15 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin ClassDeclPtr cl = ClassDeclPtr::dynamicCast(cont); if(cl && cl->isLocal() && ss.find("type:") == 0) { - newMetaData.push_back(s); continue; } } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + s + "'"); } + newMetaData.remove(s); continue; } @@ -4840,31 +4862,29 @@ Slice::Gen::MetaDataVisitor::validate(const SyntaxTreeBasePtr& cont, const Strin ClassDefPtr cl = ClassDefPtr::dynamicCast(cont); if(cl && cl->isDelegate()) { - newMetaData.push_back(s); continue; } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, line, "ignoring invalid metadata `" + s + "'"); } + newMetaData.remove(s); continue; } - newMetaData.push_back(s); } return newMetaData; } void -Slice::Gen::normalizeMetaData(const UnitPtr& u, bool cpp11, int warningLevel) +Slice::Gen::normalizeMetaData(const UnitPtr& u, bool cpp11) { - NormalizeMetaDataVisitor visitor(cpp11, warningLevel); + NormalizeMetaDataVisitor visitor(cpp11); u->visit(&visitor, false); } -Slice::Gen::NormalizeMetaDataVisitor::NormalizeMetaDataVisitor(bool cpp11, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Gen::NormalizeMetaDataVisitor::NormalizeMetaDataVisitor(bool cpp11) : _cpp11(cpp11) { } @@ -5138,9 +5158,24 @@ Slice::Gen::getHeaderExt(const string& file, const UnitPtr& unit) return ext; } +string +Slice::Gen::getSourceExt(const string& file, const UnitPtr& unit) +{ + string ext; + static const string sourceExtPrefix = "cpp:source-ext:"; + DefinitionContextPtr dc = unit->findDefinitionContext(file); + assert(dc); + string meta = dc->findMetaData(sourceExtPrefix); + if(meta.size() > sourceExtPrefix.size()) + { + ext = meta.substr(sourceExtPrefix.size()); + } + return ext; +} + // C++11 visitors -Slice::Gen::Cpp11DeclVisitor::Cpp11DeclVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport) +Slice::Gen::Cpp11DeclVisitor::Cpp11DeclVisitor(Output& h, Output& c, const string& dllExport) : + H(h), C(c), _dllExport(dllExport) { } @@ -5295,8 +5330,8 @@ Slice::Gen::Cpp11DeclVisitor::visitOperation(const OperationPtr& p) } } -Slice::Gen::Cpp11TypesVisitor::Cpp11TypesVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _dllClassExport(toDllClassExport(dllExport)), +Slice::Gen::Cpp11TypesVisitor::Cpp11TypesVisitor(Output& h, Output& c, const string& dllExport) : + H(h), C(c), _dllExport(dllExport), _dllClassExport(toDllClassExport(dllExport)), _dllMemberExport(toDllMemberExport(dllExport)), _doneStaticSymbol(false), _useWstring(false) { } @@ -5693,8 +5728,8 @@ Slice::Gen::Cpp11TypesVisitor::visitDictionary(const DictionaryPtr& p) } } -Slice::Gen::Cpp11ProxyVisitor::Cpp11ProxyVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), H(h), C(c), _dllClassExport(toDllClassExport(dllExport)), +Slice::Gen::Cpp11ProxyVisitor::Cpp11ProxyVisitor(Output& h, Output& c, const string& dllExport) : + H(h), C(c), _dllClassExport(toDllClassExport(dllExport)), _dllMemberExport(toDllMemberExport(dllExport)), _useWstring(false) { @@ -6283,9 +6318,7 @@ Slice::Gen::Cpp11TypesVisitor::emitUpcall(const ExceptionPtr& base, const string Slice::Gen::Cpp11ObjectVisitor::Cpp11ObjectVisitor(::IceUtilInternal::Output& h, ::IceUtilInternal::Output& c, - const std::string& dllExport, - int warningLevel) : - ParserVisitor(warningLevel), + const std::string& dllExport) : H(h), C(c), _dllExport(dllExport), @@ -6338,9 +6371,8 @@ Slice::Gen::Cpp11ValueVisitor::emitUpcall(const ClassDefPtr& base, const string& Slice::Gen::Cpp11LocalObjectVisitor::Cpp11LocalObjectVisitor(::IceUtilInternal::Output& h, ::IceUtilInternal::Output& c, - const std::string& dllExport, - int warningLevel) : - Cpp11ObjectVisitor(h, c, dllExport, warningLevel) + const std::string& dllExport) : + Cpp11ObjectVisitor(h, c, dllExport) { } @@ -6687,9 +6719,8 @@ Slice::Gen::Cpp11LocalObjectVisitor::visitOperation(const OperationPtr& p) Slice::Gen::Cpp11InterfaceVisitor::Cpp11InterfaceVisitor(::IceUtilInternal::Output& h, ::IceUtilInternal::Output& c, - const std::string& dllExport, - int warningLevel) : - Cpp11ObjectVisitor(h, c, dllExport, warningLevel) + const std::string& dllExport) : + Cpp11ObjectVisitor(h, c, dllExport) { } @@ -7142,9 +7173,8 @@ Slice::Gen::Cpp11InterfaceVisitor::visitOperation(const OperationPtr& p) Slice::Gen::Cpp11ValueVisitor::Cpp11ValueVisitor(::IceUtilInternal::Output& h, ::IceUtilInternal::Output& c, - const std::string& dllExport, - int warningLevel) : - Cpp11ObjectVisitor(h, c, dllExport, warningLevel) + const std::string& dllExport) : + Cpp11ObjectVisitor(h, c, dllExport) { } @@ -7497,8 +7527,7 @@ Slice::Gen::Cpp11ObjectVisitor::emitOneShotConstructor(const ClassDefPtr& p) } } -Slice::Gen::Cpp11StreamVisitor::Cpp11StreamVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Gen::Cpp11StreamVisitor::Cpp11StreamVisitor(Output& h, Output& c, const string& dllExport) : H(h), C(c), _dllExport(dllExport) @@ -7610,8 +7639,7 @@ Slice::Gen::Cpp11StreamVisitor::visitEnum(const EnumPtr& p) } -Slice::Gen::Cpp11CompatibilityVisitor::Cpp11CompatibilityVisitor(Output& h, Output&, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), +Slice::Gen::Cpp11CompatibilityVisitor::Cpp11CompatibilityVisitor(Output& h, Output&, const string& dllExport) : H(h), _dllExport(dllExport) { @@ -7661,8 +7689,8 @@ Slice::Gen::Cpp11CompatibilityVisitor::visitClassDecl(const ClassDeclPtr& p) } } -Slice::Gen::Cpp11ImplVisitor::Cpp11ImplVisitor(Output& h, Output& c, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), H(h), C(c), _dllExport(dllExport), _useWstring(false) +Slice::Gen::Cpp11ImplVisitor::Cpp11ImplVisitor(Output& h, Output& c, const string& dllExport) : + H(h), C(c), _dllExport(dllExport), _useWstring(false) { } diff --git a/cpp/src/slice2cpp/Gen.h b/cpp/src/slice2cpp/Gen.h index 660267b0539..b27d791a106 100644 --- a/cpp/src/slice2cpp/Gen.h +++ b/cpp/src/slice2cpp/Gen.h @@ -31,8 +31,7 @@ public: bool, bool, bool, - bool, - int); + bool); ~Gen(); void generate(const UnitPtr&); @@ -52,6 +51,12 @@ private: // or an empty string if no global metadata was found. // std::string getHeaderExt(const std::string& file, const UnitPtr& unit); + + // + // Returns the source extension defined in the global metadata for a given file, + // or an empty string if no global metadata was found. + // + std::string getSourceExt(const std::string& file, const UnitPtr& unit); ::IceUtilInternal::Output H; ::IceUtilInternal::Output C; @@ -72,13 +77,12 @@ 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&, int); + TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -110,7 +114,7 @@ private: { public: - ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitUnitStart(const UnitPtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -129,7 +133,7 @@ private: { public: - ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitUnitStart(const UnitPtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -155,7 +159,7 @@ private: { public: - ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -174,7 +178,7 @@ private: { public: - ObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + ObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -207,7 +211,7 @@ private: { public: - AsyncCallbackVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + AsyncCallbackVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -228,7 +232,7 @@ private: { public: - AsyncCallbackTemplateVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + AsyncCallbackTemplateVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitUnitStart(const UnitPtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -253,7 +257,7 @@ private: { public: - ImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + ImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -283,7 +287,7 @@ private: { public: - AsyncVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + AsyncVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -305,7 +309,7 @@ private: { public: - AsyncImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + AsyncImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitUnitStart(const UnitPtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -329,7 +333,7 @@ private: { public: - StreamVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + StreamVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -351,7 +355,7 @@ private: { public: - Cpp11DeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11DeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitUnitStart(const UnitPtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -374,7 +378,7 @@ private: { public: - Cpp11TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -408,7 +412,7 @@ private: { public: - Cpp11ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitUnitStart(const UnitPtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -434,7 +438,7 @@ private: { public: - Cpp11ObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11ObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); protected: @@ -457,7 +461,7 @@ private: { public: - Cpp11LocalObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11LocalObjectVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -472,7 +476,7 @@ private: { public: - Cpp11InterfaceVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11InterfaceVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -488,7 +492,7 @@ private: { public: - Cpp11ValueVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11ValueVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -504,7 +508,7 @@ private: { public: - Cpp11StreamVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11StreamVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -525,7 +529,7 @@ private: { public: - Cpp11CompatibilityVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11CompatibilityVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -541,7 +545,7 @@ private: { public: - Cpp11ImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + Cpp11ImplVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -573,8 +577,6 @@ private: { public: - MetaDataVisitor(int); - virtual bool visitUnitStart(const UnitPtr&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -602,7 +604,7 @@ private: { public: - NormalizeMetaDataVisitor(bool, int); + NormalizeMetaDataVisitor(bool); virtual bool visitUnitStart(const UnitPtr&); virtual bool visitModuleStart(const ModulePtr&); @@ -628,8 +630,8 @@ private: bool _cpp11; }; - static void validateMetaData(const UnitPtr&, int); - static void normalizeMetaData(const UnitPtr&, bool, int); + static void validateMetaData(const UnitPtr&); + static void normalizeMetaData(const UnitPtr&, bool); }; } diff --git a/cpp/src/slice2cpp/Main.cpp b/cpp/src/slice2cpp/Main.cpp index 83b19b943c9..7378da1b118 100644 --- a/cpp/src/slice2cpp/Main.cpp +++ b/cpp/src/slice2cpp/Main.cpp @@ -88,7 +88,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; } @@ -118,7 +117,6 @@ compile(const vector<string>& argv) opts.addOpt("", "ice"); opts.addOpt("", "underscore"); opts.addOpt("", "checksum"); - opts.addOpt("", "no-warn"); bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end(); vector<string> args; @@ -199,8 +197,6 @@ compile(const vector<string>& argv) bool checksum = opts.isSet("checksum"); - int warningLevel = opts.isSet("no-warn") ? 0 : 1; - if(args.empty()) { consoleErr << argv[0] << ": error: no input file" << endl; @@ -333,7 +329,7 @@ compile(const vector<string>& argv) try { Gen gen(icecpp->getBaseName(), headerExtension, sourceExtension, extraHeaders, include, - includePaths, dllExport, output, implCpp98, implCpp11, checksum, ice, warningLevel); + includePaths, dllExport, output, implCpp98, implCpp11, checksum, ice); gen.generate(u); } catch(const Slice::FileException& ex) diff --git a/cpp/src/slice2cs/CsUtil.cpp b/cpp/src/slice2cs/CsUtil.cpp index 5de4582dd56..dac1c6a362e 100644 --- a/cpp/src/slice2cs/CsUtil.cpp +++ b/cpp/src/slice2cs/CsUtil.cpp @@ -2335,16 +2335,12 @@ Slice::CsGenerator::toArrayAlloc(const string& decl, const string& sz) } void -Slice::CsGenerator::validateMetaData(const UnitPtr& u, int warningLevel) +Slice::CsGenerator::validateMetaData(const UnitPtr& u) { - MetaDataVisitor visitor(warningLevel); + MetaDataVisitor visitor; u->visit(&visitor, true); } -Slice::CsGenerator::MetaDataVisitor::MetaDataVisitor(int warningLevel) : ParserVisitor(warningLevel) -{ -} - bool Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) { @@ -2352,7 +2348,6 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) // Validate global metadata in the top-level file and all included files. // StringList files = p->allFiles(); - for(StringList::iterator q = files.begin(); q != files.end(); ++q) { string file = *q; @@ -2360,7 +2355,7 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) assert(dc); StringList globalMetaData = dc->getMetaData(); StringList newGlobalMetaData; - + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); static const string csPrefix = "cs:"; static const string clrPrefix = "clr:"; @@ -2379,7 +2374,7 @@ Slice::CsGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) static const string csAttributePrefix = csPrefix + "attribute:"; if(s.find(csAttributePrefix) != 0 || s.size() == csAttributePrefix.size()) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(file, -1, "ignoring invalid global metadata `" + oldS + "'"); } @@ -2504,6 +2499,11 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) StringList localMetaData = cont->getMetaData(); StringList newLocalMetaData; + const UnitPtr unit = cont->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(cont->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + for(StringList::iterator p = localMetaData.begin(); p != localMetaData.end(); ++p) { string& s = *p; @@ -2547,7 +2547,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) string meta; if(cont->findMetaData(csPrefix + "generic:", meta)) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(cont->file(), cont->line(), msg + " `" + meta + "':\n" + "serialization can only be used with the array mapping for byte sequences"); @@ -2623,7 +2623,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) continue; } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(cont->file(), cont->line(), msg + " `" + oldS + "'"); } @@ -2638,7 +2638,7 @@ Slice::CsGenerator::MetaDataVisitor::validate(const ContainedPtr& cont) continue; } - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(cont->file(), cont->line(), msg + " `" + s + "'"); } diff --git a/cpp/src/slice2cs/CsUtil.h b/cpp/src/slice2cs/CsUtil.h index 1741150f100..16ebd8a3c54 100644 --- a/cpp/src/slice2cs/CsUtil.h +++ b/cpp/src/slice2cs/CsUtil.h @@ -30,7 +30,7 @@ public: // // Validate all metadata in the unit with a "cs:" prefix. // - static void validateMetaData(const UnitPtr&, int); + static void validateMetaData(const UnitPtr&); protected: @@ -65,8 +65,6 @@ private: { public: - MetaDataVisitor(int); - virtual bool visitUnitStart(const UnitPtr&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); diff --git a/cpp/src/slice2cs/Gen.cpp b/cpp/src/slice2cs/Gen.cpp index c1377db72cd..0008249211a 100644 --- a/cpp/src/slice2cs/Gen.cpp +++ b/cpp/src/slice2cs/Gen.cpp @@ -154,8 +154,7 @@ resultStructReturnValueName(const ParamDeclList& outParams) } -Slice::CsVisitor::CsVisitor(Output& out, int warningLevel) : - ParserVisitor(warningLevel), +Slice::CsVisitor::CsVisitor(Output& out) : _out(out) { } @@ -2021,10 +2020,9 @@ Slice::CsVisitor::writeDocCommentParam(const OperationPtr& p, ParamDir paramType } Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir, - bool tie, bool impl, bool implTie, int warningLevel) : + bool tie, bool impl, bool implTie) : _includePaths(includePaths), - _tie(tie), - _warningLevel(warningLevel) + _tie(tie) { string fileBase = base; string::size_type pos = base.find_last_of("/\\"); @@ -2094,58 +2092,58 @@ Slice::Gen::~Gen() void Slice::Gen::generate(const UnitPtr& p) { - CsGenerator::validateMetaData(p, _warningLevel); + CsGenerator::validateMetaData(p); - UnitVisitor unitVisitor(_out, _warningLevel); + UnitVisitor unitVisitor(_out); p->visit(&unitVisitor, false); - CompactIdVisitor compactIdVisitor(_out, _warningLevel); + CompactIdVisitor compactIdVisitor(_out); p->visit(&compactIdVisitor, false); - TypesVisitor typesVisitor(_out, _warningLevel); + TypesVisitor typesVisitor(_out); p->visit(&typesVisitor, false); // // The async delegates are emitted before the proxy definition // because the proxy methods need to know the type. // - AsyncDelegateVisitor asyncDelegateVisitor(_out, _warningLevel); + AsyncDelegateVisitor asyncDelegateVisitor(_out); p->visit(&asyncDelegateVisitor, false); - ResultVisitor resultVisitor(_out, _warningLevel); + ResultVisitor resultVisitor(_out); p->visit(&resultVisitor, false); - ProxyVisitor proxyVisitor(_out, _warningLevel); + ProxyVisitor proxyVisitor(_out); p->visit(&proxyVisitor, false); - OpsVisitor opsVisitor(_out, _warningLevel); + OpsVisitor opsVisitor(_out); p->visit(&opsVisitor, false); - HelperVisitor helperVisitor(_out, _warningLevel); + HelperVisitor helperVisitor(_out); p->visit(&helperVisitor, false); - DispatcherVisitor dispatcherVisitor(_out, _tie, _warningLevel); + DispatcherVisitor dispatcherVisitor(_out, _tie); p->visit(&dispatcherVisitor, false); } void Slice::Gen::generateImpl(const UnitPtr& p) { - ImplVisitor implVisitor(_impl, _warningLevel); + ImplVisitor implVisitor(_impl); p->visit(&implVisitor, false); } void Slice::Gen::generateImplTie(const UnitPtr& p) { - ImplTieVisitor implTieVisitor(_impl, _warningLevel); + ImplTieVisitor implTieVisitor(_impl); p->visit(&implTieVisitor, false); } void Slice::Gen::generateChecksums(const UnitPtr& u) { - ChecksumMap map = createChecksums(u, _warningLevel); + ChecksumMap map = createChecksums(u); if(!map.empty()) { string className = "X" + generateUUID(); @@ -2214,8 +2212,8 @@ Slice::Gen::printHeader() _out << "//\n"; } -Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::UnitVisitor::UnitVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -2246,8 +2244,8 @@ Slice::Gen::UnitVisitor::visitUnitStart(const UnitPtr& p) return false; } -Slice::Gen::CompactIdVisitor::CompactIdVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::CompactIdVisitor::CompactIdVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -2280,8 +2278,8 @@ Slice::Gen::CompactIdVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -3767,8 +3765,8 @@ Slice::Gen::TypesVisitor::writeMemberEquals(const DataMemberList& dataMembers, i } } -Slice::Gen::ResultVisitor::ResultVisitor(::IceUtilInternal::Output& out, int warningLevel) - : CsVisitor(out, warningLevel) +Slice::Gen::ResultVisitor::ResultVisitor(::IceUtilInternal::Output& out) + : CsVisitor(out) { } @@ -3926,8 +3924,8 @@ Slice::Gen::ResultVisitor::visitOperation(const OperationPtr& p) } } -Slice::Gen::ProxyVisitor::ProxyVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::ProxyVisitor::ProxyVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -4114,8 +4112,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) } } -Slice::Gen::AsyncDelegateVisitor::AsyncDelegateVisitor(IceUtilInternal::Output& out, int warningLevel) - : CsVisitor(out, warningLevel) +Slice::Gen::AsyncDelegateVisitor::AsyncDelegateVisitor(IceUtilInternal::Output& out) + : CsVisitor(out) { } @@ -4171,8 +4169,8 @@ Slice::Gen::AsyncDelegateVisitor::visitOperation(const OperationPtr& p) _out << paramDeclAMI << epar << ';'; } -Slice::Gen::OpsVisitor::OpsVisitor(IceUtilInternal::Output& out, int warningLevel) - : CsVisitor(out, warningLevel) +Slice::Gen::OpsVisitor::OpsVisitor(IceUtilInternal::Output& out) + : CsVisitor(out) { } @@ -4269,8 +4267,8 @@ Slice::Gen::OpsVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::Gen::HelperVisitor::HelperVisitor(IceUtilInternal::Output& out, int warningLevel) : - CsVisitor(out, warningLevel) +Slice::Gen::HelperVisitor::HelperVisitor(IceUtilInternal::Output& out) : + CsVisitor(out) { } @@ -5200,8 +5198,8 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) _out << eb; } -Slice::Gen::DispatcherVisitor::DispatcherVisitor(::IceUtilInternal::Output& out, bool tie, int warningLevel) : - CsVisitor(out, warningLevel), +Slice::Gen::DispatcherVisitor::DispatcherVisitor(::IceUtilInternal::Output& out, bool tie) : + CsVisitor(out), _tie(tie) { } @@ -5414,8 +5412,8 @@ Slice::Gen::DispatcherVisitor::writeTieOperations(const ClassDefPtr& p, NameSet* } } -Slice::Gen::BaseImplVisitor::BaseImplVisitor(IceUtilInternal::Output& out, int warningLevel) - : CsVisitor(out, warningLevel) +Slice::Gen::BaseImplVisitor::BaseImplVisitor(IceUtilInternal::Output& out) + : CsVisitor(out) { } @@ -5522,8 +5520,8 @@ Slice::Gen::BaseImplVisitor::writeOperation(const OperationPtr& op, bool comment } } -Slice::Gen::ImplVisitor::ImplVisitor(IceUtilInternal::Output& out, int warningLevel) : - BaseImplVisitor(out, warningLevel) +Slice::Gen::ImplVisitor::ImplVisitor(IceUtilInternal::Output& out) : + BaseImplVisitor(out) { } @@ -5590,8 +5588,8 @@ Slice::Gen::ImplVisitor::visitClassDefEnd(const ClassDefPtr&) _out << eb; } -Slice::Gen::ImplTieVisitor::ImplTieVisitor(IceUtilInternal::Output& out, int warningLevel) - : BaseImplVisitor(out, warningLevel) +Slice::Gen::ImplTieVisitor::ImplTieVisitor(IceUtilInternal::Output& out) + : BaseImplVisitor(out) { } diff --git a/cpp/src/slice2cs/Gen.h b/cpp/src/slice2cs/Gen.h index f07bbc77cdc..d061616693d 100644 --- a/cpp/src/slice2cs/Gen.h +++ b/cpp/src/slice2cs/Gen.h @@ -20,7 +20,7 @@ class CsVisitor : public CsGenerator, public ParserVisitor { public: - CsVisitor(::IceUtilInternal::Output&, int); + CsVisitor(::IceUtilInternal::Output&); virtual ~CsVisitor(); protected: @@ -87,8 +87,7 @@ public: const std::string&, bool, bool, - bool, - int); + bool); ~Gen(); void generate(const UnitPtr&); @@ -103,7 +102,6 @@ private: IceUtilInternal::Output _impl; std::vector<std::string> _includePaths; bool _tie; - int _warningLevel; void printHeader(); @@ -111,7 +109,7 @@ private: { public: - UnitVisitor(::IceUtilInternal::Output&, int); + UnitVisitor(::IceUtilInternal::Output&); virtual bool visitUnitStart(const UnitPtr&); }; @@ -120,7 +118,7 @@ private: { public: - CompactIdVisitor(IceUtilInternal::Output&, int); + CompactIdVisitor(IceUtilInternal::Output&); virtual bool visitUnitStart(const UnitPtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -131,7 +129,7 @@ private: { public: - TypesVisitor(::IceUtilInternal::Output&, int); + TypesVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -158,7 +156,7 @@ private: { public: - AsyncDelegateVisitor(::IceUtilInternal::Output&, int); + AsyncDelegateVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -171,7 +169,7 @@ private: { public: - ResultVisitor(::IceUtilInternal::Output&, int); + ResultVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -184,7 +182,7 @@ private: { public: - ProxyVisitor(::IceUtilInternal::Output&, int); + ProxyVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -197,7 +195,7 @@ private: { public: - OpsVisitor(::IceUtilInternal::Output&, int); + OpsVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -208,7 +206,7 @@ private: { public: - HelperVisitor(::IceUtilInternal::Output&, int); + HelperVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -222,7 +220,7 @@ private: { public: - DispatcherVisitor(::IceUtilInternal::Output&, bool, int); + DispatcherVisitor(::IceUtilInternal::Output&, bool); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -241,7 +239,7 @@ private: { public: - BaseImplVisitor(::IceUtilInternal::Output&, int); + BaseImplVisitor(::IceUtilInternal::Output&); protected: @@ -252,7 +250,7 @@ private: { public: - ImplVisitor(::IceUtilInternal::Output&, int); + ImplVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -264,7 +262,7 @@ private: { public: - ImplTieVisitor(::IceUtilInternal::Output&, int); + ImplTieVisitor(::IceUtilInternal::Output&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); diff --git a/cpp/src/slice2cs/Main.cpp b/cpp/src/slice2cs/Main.cpp index 31b60cee93d..21738ba6f83 100644 --- a/cpp/src/slice2cs/Main.cpp +++ b/cpp/src/slice2cs/Main.cpp @@ -82,7 +82,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; } @@ -108,7 +107,6 @@ compile(const vector<string>& argv) opts.addOpt("", "ice"); opts.addOpt("", "underscore"); opts.addOpt("", "checksum"); - opts.addOpt("", "no-warn"); bool validate = find(argv.begin(), argv.end(), "--validate") != argv.end(); vector<string> args; @@ -181,8 +179,6 @@ compile(const vector<string>& argv) bool checksum = opts.isSet("checksum"); - int warningLevel = opts.isSet("no-warn") ? 0 : 1; - if(args.empty()) { consoleErr << argv[0] << ": error: no input file" << endl; @@ -313,7 +309,7 @@ compile(const vector<string>& argv) { try { - Gen gen(icecpp->getBaseName(), includePaths, output, tie, impl, implTie, warningLevel); + Gen gen(icecpp->getBaseName(), includePaths, output, tie, impl, implTie); gen.generate(p); if(impl) { diff --git a/cpp/src/slice2html/Gen.cpp b/cpp/src/slice2html/Gen.cpp index bd226fbd027..54383af7030 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, int warningLevel) + const string& searchAction, unsigned indexCount, unsigned warnSummary) { 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, warningLevel); + FileVisitor tv(files); unit->visit(&tv, false); // // Generate the start page. // - StartPageVisitor spv(files, warningLevel); + StartPageVisitor spv(files); unit->visit(&spv, false); // // Generate the table of contents. // - TOCVisitor tocv(files, indexHeader, indexFooter, warningLevel); + TOCVisitor tocv(files, indexHeader, indexFooter); 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, warningLevel); + PageVisitor v(files); unit->visit(&v, false); } @@ -1800,8 +1800,7 @@ Slice::StartPageGenerator::printHeaderFooter() end(); // table } -Slice::FileVisitor::FileVisitor(Files& files, int warningLevel) : - ParserVisitor(warningLevel), +Slice::FileVisitor::FileVisitor(Files& files) : _files(files) { } @@ -1864,8 +1863,7 @@ Slice::FileVisitor::visitEnum(const EnumPtr& e) _files.insert(e->file()); } -Slice::StartPageVisitor::StartPageVisitor(const Files& files, int warningLevel) : - ParserVisitor(warningLevel), +Slice::StartPageVisitor::StartPageVisitor(const Files& files) : _spg(files) { } @@ -2043,8 +2041,7 @@ TOCGenerator::writeEntry(const ContainedPtr& c) end(); } -TOCVisitor::TOCVisitor(const Files& files, const string& header, const string& footer, int warningLevel) : - ParserVisitor(warningLevel), +TOCVisitor::TOCVisitor(const Files& files, const string& header, const string& footer) : _tg(files, header, footer) { } @@ -2979,8 +2976,7 @@ Slice::EnumGenerator::generate(const EnumPtr& e) assert(_out.currIndent() == indent); } -Slice::PageVisitor::PageVisitor(const Files& files, int warningLevel) : - ParserVisitor(warningLevel), +Slice::PageVisitor::PageVisitor(const Files& files) : _files(files) { } diff --git a/cpp/src/slice2html/Gen.h b/cpp/src/slice2html/Gen.h index b38556e4bb2..8fb67136bc0 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, int); + unsigned, unsigned); typedef ::std::set< ::std::string> Files; @@ -141,7 +141,7 @@ class FileVisitor : private ::IceUtil::noncopyable, public ParserVisitor { public: - FileVisitor(Files&, int); + FileVisitor(Files&); 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&, int); + StartPageVisitor(const Files&); 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&, int); + TOCVisitor(const Files&, const ::std::string&, const ::std::string&); 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&, int); + PageVisitor(const Files&); 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 7b5a6562968..ae2bfaa75ff 100644 --- a/cpp/src/slice2html/Main.cpp +++ b/cpp/src/slice2html/Main.cpp @@ -85,7 +85,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; } @@ -113,7 +112,6 @@ 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; @@ -222,8 +220,6 @@ 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; @@ -294,7 +290,7 @@ compile(const vector<string>& argv) try { Slice::generate(p, output, header, footer, indexHeader, indexFooter, imageDir, logoURL, - searchAction, indexCount, summaryCount, warningLevel); + searchAction, indexCount, summaryCount); } catch(const Slice::FileException& ex) { diff --git a/cpp/src/slice2java/Gen.cpp b/cpp/src/slice2java/Gen.cpp index 376a8edd86e..f33a44286cd 100644 --- a/cpp/src/slice2java/Gen.cpp +++ b/cpp/src/slice2java/Gen.cpp @@ -144,9 +144,8 @@ string ofFactory(const TypePtr& type) } -Slice::JavaVisitor::JavaVisitor(const string& dir, int warningLevel) : - JavaGenerator(dir), - ParserVisitor(warningLevel) +Slice::JavaVisitor::JavaVisitor(const string& dir) : + JavaGenerator(dir) { } @@ -2299,12 +2298,10 @@ 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, - int warningLevel) : +Slice::Gen::Gen(const string& /*name*/, const string& base, const vector<string>& includePaths, const string& dir) : _base(base), _includePaths(includePaths), - _dir(dir), - _warningLevel(warningLevel) + _dir(dir) { } @@ -2315,31 +2312,31 @@ Slice::Gen::~Gen() void Slice::Gen::generate(const UnitPtr& p) { - JavaGenerator::validateMetaData(p, _warningLevel); + JavaGenerator::validateMetaData(p); - PackageVisitor packageVisitor(_dir, _warningLevel); + PackageVisitor packageVisitor(_dir); p->visit(&packageVisitor, false); - TypesVisitor typesVisitor(_dir, _warningLevel); + TypesVisitor typesVisitor(_dir); p->visit(&typesVisitor, false); - CompactIdVisitor compactIdVisitor(_dir, _warningLevel); + CompactIdVisitor compactIdVisitor(_dir); p->visit(&compactIdVisitor, false); - HelperVisitor helperVisitor(_dir, _warningLevel); + HelperVisitor helperVisitor(_dir); p->visit(&helperVisitor, false); - ProxyVisitor proxyVisitor(_dir, _warningLevel); + ProxyVisitor proxyVisitor(_dir); p->visit(&proxyVisitor, false); - DispatcherVisitor dispatcherVisitor(_dir, _warningLevel); + DispatcherVisitor dispatcherVisitor(_dir); p->visit(&dispatcherVisitor, false); } void Slice::Gen::generateImpl(const UnitPtr& p) { - ImplVisitor implVisitor(_dir, _warningLevel); + ImplVisitor implVisitor(_dir); p->visit(&implVisitor, false); } @@ -2398,8 +2395,8 @@ Slice::Gen::writeChecksumClass(const string& checksumClass, const string& dir, c out << nl; } -Slice::Gen::PackageVisitor::PackageVisitor(const string& dir, int warningLevel) : - JavaVisitor(dir, warningLevel) +Slice::Gen::PackageVisitor::PackageVisitor(const string& dir) : + JavaVisitor(dir) { } @@ -2423,8 +2420,8 @@ Slice::Gen::PackageVisitor::visitModuleStart(const ModulePtr& p) return false; } -Slice::Gen::TypesVisitor::TypesVisitor(const string& dir, int warningLevel) : - JavaVisitor(dir, warningLevel) +Slice::Gen::TypesVisitor::TypesVisitor(const string& dir) : + JavaVisitor(dir) { } @@ -2760,10 +2757,15 @@ Slice::Gen::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p) string serialVersionUID; if(p->findMetaData("java:serialVersionUID", serialVersionUID)) { + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + string::size_type pos = serialVersionUID.rfind(":") + 1; if(pos == string::npos) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for class `" << p->scoped() << "'; generating default value"; @@ -2779,7 +2781,7 @@ Slice::Gen::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p) { if(!stringToInt64(serialVersionUID, v)) // conversion error { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for class `" << p->scoped() @@ -3291,10 +3293,15 @@ Slice::Gen::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p) string serialVersionUID; if(p->findMetaData("java:serialVersionUID", serialVersionUID)) { + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); + string::size_type pos = serialVersionUID.rfind(":") + 1; if(pos == string::npos) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for exception `" << p->scoped() << "'; generating default value"; @@ -3310,7 +3317,7 @@ Slice::Gen::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p) { if(!stringToInt64(serialVersionUID, v)) // conversion error { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for exception `" << p->scoped() @@ -3610,10 +3617,14 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p) string serialVersionUID; if(p->findMetaData("java:serialVersionUID", serialVersionUID)) { + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); string::size_type pos = serialVersionUID.rfind(":") + 1; if(pos == string::npos) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for struct `" << p->scoped() << "'; generating default value"; @@ -3629,7 +3640,7 @@ Slice::Gen::TypesVisitor::visitStructEnd(const StructPtr& p) { if(!stringToInt64(serialVersionUID, v)) // conversion error { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for struct `" << p->scoped() @@ -4160,8 +4171,8 @@ Slice::Gen::TypesVisitor::validateMethod(const OperationList& ops, const std::st return true; } -Slice::Gen::CompactIdVisitor::CompactIdVisitor(const string& dir, int warningLevel) : - JavaVisitor(dir, warningLevel) +Slice::Gen::CompactIdVisitor::CompactIdVisitor(const string& dir) : + JavaVisitor(dir) { } @@ -4190,8 +4201,8 @@ Slice::Gen::CompactIdVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::Gen::HelperVisitor::HelperVisitor(const string& dir, int warningLevel) : - JavaVisitor(dir, warningLevel) +Slice::Gen::HelperVisitor::HelperVisitor(const string& dir) : + JavaVisitor(dir) { } @@ -4355,8 +4366,8 @@ Slice::Gen::HelperVisitor::visitDictionary(const DictionaryPtr& p) close(); } -Slice::Gen::ProxyVisitor::ProxyVisitor(const string& dir, int warningLevel) : - JavaVisitor(dir, warningLevel) +Slice::Gen::ProxyVisitor::ProxyVisitor(const string& dir) : + JavaVisitor(dir) { } @@ -5110,8 +5121,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) } } -Slice::Gen::DispatcherVisitor::DispatcherVisitor(const string& dir, int warningLevel) : - JavaVisitor(dir, warningLevel) +Slice::Gen::DispatcherVisitor::DispatcherVisitor(const string& dir) : + JavaVisitor(dir) { } @@ -5184,8 +5195,8 @@ Slice::Gen::DispatcherVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::Gen::ImplVisitor::ImplVisitor(const string& dir, int warningLevel) : - JavaVisitor(dir, warningLevel) +Slice::Gen::ImplVisitor::ImplVisitor(const string& dir) : + JavaVisitor(dir) { } diff --git a/cpp/src/slice2java/Gen.h b/cpp/src/slice2java/Gen.h index d2ce2ef44c1..11c7d0f7e45 100644 --- a/cpp/src/slice2java/Gen.h +++ b/cpp/src/slice2java/Gen.h @@ -25,7 +25,7 @@ public: protected: - JavaVisitor(const std::string&, int); + JavaVisitor(const std::string&); enum ParamDir { InParam, OutParam }; @@ -129,8 +129,7 @@ public: Gen(const std::string&, const std::string&, const std::vector<std::string>&, - const std::string&, - int); + const std::string&); ~Gen(); void generate(const UnitPtr&); @@ -143,13 +142,12 @@ private: std::string _base; std::vector<std::string> _includePaths; std::string _dir; - int _warningLevel; class PackageVisitor : public JavaVisitor { public: - PackageVisitor(const std::string&, int); + PackageVisitor(const std::string&); virtual bool visitModuleStart(const ModulePtr&); }; @@ -158,7 +156,7 @@ private: { public: - TypesVisitor(const std::string&, int); + TypesVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitClassDefEnd(const ClassDefPtr&); @@ -183,7 +181,7 @@ private: { public: - CompactIdVisitor(const std::string&, int); + CompactIdVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); }; @@ -192,7 +190,7 @@ private: { public: - HelperVisitor(const std::string&, int); + HelperVisitor(const std::string&); virtual void visitSequence(const SequencePtr&); virtual void visitDictionary(const DictionaryPtr&); @@ -202,7 +200,7 @@ private: { public: - ProxyVisitor(const std::string&, int); + ProxyVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitClassDefEnd(const ClassDefPtr&); @@ -213,7 +211,7 @@ private: { public: - DispatcherVisitor(const std::string&, int); + DispatcherVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); }; @@ -222,7 +220,7 @@ private: { public: - ImplVisitor(const std::string&, int); + ImplVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); diff --git a/cpp/src/slice2java/GenCompat.cpp b/cpp/src/slice2java/GenCompat.cpp index 6579642d280..a3f4179ed8f 100644 --- a/cpp/src/slice2java/GenCompat.cpp +++ b/cpp/src/slice2java/GenCompat.cpp @@ -191,9 +191,8 @@ writeParamList(Output& out, vector<string> params, bool end = true, bool newLine } -Slice::JavaCompatVisitor::JavaCompatVisitor(const string& dir, int warningLevel) : - JavaCompatGenerator(dir), - ParserVisitor(warningLevel) +Slice::JavaCompatVisitor::JavaCompatVisitor(const string& dir) : + JavaCompatGenerator(dir) { } @@ -2280,12 +2279,11 @@ 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, int warningLevel) : + const string& dir, bool tie) : _base(base), _includePaths(includePaths), _dir(dir), - _tie(tie), - _warningLevel(warningLevel) + _tie(tie) { } @@ -2296,47 +2294,47 @@ Slice::GenCompat::~GenCompat() void Slice::GenCompat::generate(const UnitPtr& p) { - JavaGenerator::validateMetaData(p, _warningLevel); + JavaGenerator::validateMetaData(p); - OpsVisitor opsVisitor(_dir, _warningLevel); + OpsVisitor opsVisitor(_dir); p->visit(&opsVisitor, false); - PackageVisitor packageVisitor(_dir, _warningLevel); + PackageVisitor packageVisitor(_dir); p->visit(&packageVisitor, false); - TypesVisitor typesVisitor(_dir, _warningLevel); + TypesVisitor typesVisitor(_dir); p->visit(&typesVisitor, false); - CompactIdVisitor compactIdVisitor(_dir, _warningLevel); + CompactIdVisitor compactIdVisitor(_dir); p->visit(&compactIdVisitor, false); - HolderVisitor holderVisitor(_dir, _warningLevel); + HolderVisitor holderVisitor(_dir); p->visit(&holderVisitor, false); - HelperVisitor helperVisitor(_dir, _warningLevel); + HelperVisitor helperVisitor(_dir); p->visit(&helperVisitor, false); - ProxyVisitor proxyVisitor(_dir, _warningLevel); + ProxyVisitor proxyVisitor(_dir); p->visit(&proxyVisitor, false); - DispatcherVisitor dispatcherVisitor(_dir, _tie, _warningLevel); + DispatcherVisitor dispatcherVisitor(_dir, _tie); p->visit(&dispatcherVisitor, false); - AsyncVisitor asyncVisitor(_dir, _warningLevel); + AsyncVisitor asyncVisitor(_dir); p->visit(&asyncVisitor, false); } void Slice::GenCompat::generateImpl(const UnitPtr& p) { - ImplVisitor implVisitor(_dir, _warningLevel); + ImplVisitor implVisitor(_dir); p->visit(&implVisitor, false); } void Slice::GenCompat::generateImplTie(const UnitPtr& p) { - ImplTieVisitor implTieVisitor(_dir, _warningLevel); + ImplTieVisitor implTieVisitor(_dir); p->visit(&implTieVisitor, false); } @@ -2395,8 +2393,8 @@ Slice::GenCompat::writeChecksumClass(const string& checksumClass, const string& out << nl; } -Slice::GenCompat::OpsVisitor::OpsVisitor(const string& dir, int warningLevel) : - JavaCompatVisitor(dir, warningLevel) +Slice::GenCompat::OpsVisitor::OpsVisitor(const string& dir) : + JavaCompatVisitor(dir) { } @@ -2530,8 +2528,8 @@ Slice::GenCompat::OpsVisitor::writeOperations(const ClassDefPtr& p, bool noCurre close(); } -Slice::GenCompat::PackageVisitor::PackageVisitor(const string& dir, int warningLevel) : - JavaCompatVisitor(dir, warningLevel) +Slice::GenCompat::PackageVisitor::PackageVisitor(const string& dir) : + JavaCompatVisitor(dir) { } @@ -2555,8 +2553,8 @@ Slice::GenCompat::PackageVisitor::visitModuleStart(const ModulePtr& p) return false; } -Slice::GenCompat::TypesVisitor::TypesVisitor(const string& dir, int warningLevel) : - JavaCompatVisitor(dir, warningLevel) +Slice::GenCompat::TypesVisitor::TypesVisitor(const string& dir) : + JavaCompatVisitor(dir) { } @@ -3014,10 +3012,14 @@ Slice::GenCompat::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p) string serialVersionUID; if(p->findMetaData("java:serialVersionUID", serialVersionUID)) { + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); string::size_type pos = serialVersionUID.rfind(":") + 1; if(pos == string::npos) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for class `" << p->scoped() << "'; generating default value"; @@ -3033,7 +3035,7 @@ Slice::GenCompat::TypesVisitor::visitClassDefEnd(const ClassDefPtr& p) { if(!stringToInt64(serialVersionUID, v)) // conversion error { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for class `" << p->scoped() @@ -3440,10 +3442,14 @@ Slice::GenCompat::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p) string serialVersionUID; if(p->findMetaData("java:serialVersionUID", serialVersionUID)) { + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); string::size_type pos = serialVersionUID.rfind(":") + 1; if(pos == string::npos) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for exception `" << p->scoped() << "'; generating default value"; @@ -3459,7 +3465,7 @@ Slice::GenCompat::TypesVisitor::visitExceptionEnd(const ExceptionPtr& p) { if(!stringToInt64(serialVersionUID, v)) // conversion error { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for exception `" << p->scoped() @@ -3762,10 +3768,14 @@ Slice::GenCompat::TypesVisitor::visitStructEnd(const StructPtr& p) string serialVersionUID; if(p->findMetaData("java:serialVersionUID", serialVersionUID)) { + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); string::size_type pos = serialVersionUID.rfind(":") + 1; if(pos == string::npos) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for struct `" << p->scoped() << "'; generating default value"; @@ -3781,7 +3791,7 @@ Slice::GenCompat::TypesVisitor::visitStructEnd(const StructPtr& p) { if(!stringToInt64(serialVersionUID, v)) // conversion error { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for struct `" << p->scoped() @@ -4212,8 +4222,8 @@ Slice::GenCompat::TypesVisitor::validateMethod(const OperationList& ops, const s return true; } -Slice::GenCompat::CompactIdVisitor::CompactIdVisitor(const string& dir, int warningLevel) : - JavaCompatVisitor(dir, warningLevel) +Slice::GenCompat::CompactIdVisitor::CompactIdVisitor(const string& dir) : + JavaCompatVisitor(dir) { } @@ -4242,8 +4252,8 @@ Slice::GenCompat::CompactIdVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::GenCompat::HolderVisitor::HolderVisitor(const string& dir, int warningLevel) : - JavaCompatVisitor(dir, warningLevel) +Slice::GenCompat::HolderVisitor::HolderVisitor(const string& dir) : + JavaCompatVisitor(dir) { } @@ -4391,8 +4401,8 @@ Slice::GenCompat::HolderVisitor::writeHolder(const TypePtr& p) close(); } -Slice::GenCompat::HelperVisitor::HelperVisitor(const string& dir, int warningLevel) : - JavaCompatVisitor(dir, warningLevel) +Slice::GenCompat::HelperVisitor::HelperVisitor(const string& dir) : + JavaCompatVisitor(dir) { } @@ -5324,8 +5334,8 @@ Slice::GenCompat::HelperVisitor::writeOperation(const ClassDefPtr& p, const stri } } -Slice::GenCompat::ProxyVisitor::ProxyVisitor(const string& dir, int warningLevel) : - JavaCompatVisitor(dir, warningLevel) +Slice::GenCompat::ProxyVisitor::ProxyVisitor(const string& dir) : + JavaCompatVisitor(dir) { } @@ -5644,8 +5654,8 @@ Slice::GenCompat::ProxyVisitor::visitOperation(const OperationPtr& p) } } -Slice::GenCompat::DispatcherVisitor::DispatcherVisitor(const string& dir, bool tie, int warningLevel) : - JavaCompatVisitor(dir, warningLevel), +Slice::GenCompat::DispatcherVisitor::DispatcherVisitor(const string& dir, bool tie) : + JavaCompatVisitor(dir), _tie(tie) { } @@ -5843,10 +5853,14 @@ Slice::GenCompat::DispatcherVisitor::visitClassDefStart(const ClassDefPtr& p) string serialVersionUID; if(p->findMetaData("java:serialVersionUID", serialVersionUID)) { + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); string::size_type pos = serialVersionUID.rfind(":") + 1; if(pos == string::npos) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for class `" << p->scoped() << "'; generating default value"; @@ -5862,7 +5876,7 @@ Slice::GenCompat::DispatcherVisitor::visitClassDefStart(const ClassDefPtr& p) { if(!stringToInt64(serialVersionUID, v)) // conversion error { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream os; os << "ignoring invalid serialVersionUID for class `" << p->scoped() @@ -5887,8 +5901,8 @@ Slice::GenCompat::DispatcherVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::GenCompat::BaseImplVisitor::BaseImplVisitor(const string& dir, int warningLevel) : - JavaCompatVisitor(dir, warningLevel) +Slice::GenCompat::BaseImplVisitor::BaseImplVisitor(const string& dir) : + JavaCompatVisitor(dir) { } @@ -6152,8 +6166,8 @@ Slice::GenCompat::BaseImplVisitor::writeOperation(Output& out, const string& pac } } -Slice::GenCompat::ImplVisitor::ImplVisitor(const string& dir, int warningLevel) : - BaseImplVisitor(dir, warningLevel) +Slice::GenCompat::ImplVisitor::ImplVisitor(const string& dir) : + BaseImplVisitor(dir) { } @@ -6208,8 +6222,8 @@ Slice::GenCompat::ImplVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::GenCompat::ImplTieVisitor::ImplTieVisitor(const string& dir, int warningLevel) : - BaseImplVisitor(dir, warningLevel) +Slice::GenCompat::ImplTieVisitor::ImplTieVisitor(const string& dir) : + BaseImplVisitor(dir) { } @@ -6297,8 +6311,8 @@ Slice::GenCompat::ImplTieVisitor::visitClassDefStart(const ClassDefPtr& p) return false; } -Slice::GenCompat::AsyncVisitor::AsyncVisitor(const string& dir, int warningLevel) : - JavaCompatVisitor(dir, warningLevel) +Slice::GenCompat::AsyncVisitor::AsyncVisitor(const string& dir) : + JavaCompatVisitor(dir) { } diff --git a/cpp/src/slice2java/GenCompat.h b/cpp/src/slice2java/GenCompat.h index 25d2d0b7091..5f8ba85aa9d 100644 --- a/cpp/src/slice2java/GenCompat.h +++ b/cpp/src/slice2java/GenCompat.h @@ -25,7 +25,7 @@ public: protected: - JavaCompatVisitor(const std::string&, int); + JavaCompatVisitor(const std::string&); enum ParamDir { InParam, OutParam }; @@ -131,8 +131,7 @@ public: const std::string&, const std::vector<std::string>&, const std::string&, - bool, - int); + bool); ~GenCompat(); void generate(const UnitPtr&); @@ -147,13 +146,12 @@ private: std::vector<std::string> _includePaths; std::string _dir; bool _tie; - int _warningLevel; class OpsVisitor : public JavaCompatVisitor { public: - OpsVisitor(const std::string&, int); + OpsVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); @@ -165,7 +163,7 @@ private: { public: - PackageVisitor(const std::string&, int); + PackageVisitor(const std::string&); virtual bool visitModuleStart(const ModulePtr&); }; @@ -174,7 +172,7 @@ private: { public: - TypesVisitor(const std::string&, int); + TypesVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitClassDefEnd(const ClassDefPtr&); @@ -198,7 +196,7 @@ private: { public: - CompactIdVisitor(const std::string&, int); + CompactIdVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); }; @@ -207,7 +205,7 @@ private: { public: - HolderVisitor(const std::string&, int); + HolderVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); virtual bool visitStructStart(const StructPtr&); @@ -224,7 +222,7 @@ private: { public: - HelperVisitor(const std::string&, int); + HelperVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitSequence(const SequencePtr&); @@ -239,7 +237,7 @@ private: { public: - ProxyVisitor(const std::string&, int); + ProxyVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitClassDefEnd(const ClassDefPtr&); @@ -250,7 +248,7 @@ private: { public: - DispatcherVisitor(const std::string&, bool, int); + DispatcherVisitor(const std::string&, bool); virtual bool visitClassDefStart(const ClassDefPtr&); @@ -262,7 +260,7 @@ private: { public: - BaseImplVisitor(const std::string&, int); + BaseImplVisitor(const std::string&); protected: @@ -288,7 +286,7 @@ private: { public: - ImplVisitor(const std::string&, int); + ImplVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); }; @@ -297,7 +295,7 @@ private: { public: - ImplTieVisitor(const std::string&, int); + ImplTieVisitor(const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); }; @@ -306,7 +304,7 @@ private: { public: - AsyncVisitor(const std::string&, int); + AsyncVisitor(const std::string&); virtual void visitOperation(const OperationPtr&); }; diff --git a/cpp/src/slice2java/Main.cpp b/cpp/src/slice2java/Main.cpp index c14a467d3b7..a1ff63c6127 100644 --- a/cpp/src/slice2java/Main.cpp +++ b/cpp/src/slice2java/Main.cpp @@ -87,7 +87,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; } @@ -116,7 +115,6 @@ 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; @@ -195,8 +193,6 @@ 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; @@ -354,7 +350,7 @@ compile(const vector<string>& argv) { if(compat) { - GenCompat gen(argv[0], icecpp->getBaseName(), includePaths, output, tie, warningLevel); + GenCompat gen(argv[0], icecpp->getBaseName(), includePaths, output, tie); gen.generate(p); if(impl) { @@ -367,7 +363,7 @@ compile(const vector<string>& argv) } else { - Gen gen(argv[0], icecpp->getBaseName(), includePaths, output, warningLevel); + Gen gen(argv[0], icecpp->getBaseName(), includePaths, output); gen.generate(p); if(impl) { @@ -380,7 +376,7 @@ compile(const vector<string>& argv) // // Calculate checksums for the Slice definitions in the unit. // - ChecksumMap m = createChecksums(p, warningLevel); + ChecksumMap m = createChecksums(p); copy(m.begin(), m.end(), inserter(checksums, checksums.begin())); } if(listGenerated) diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp index 74297f80738..29c1c9f47dc 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, int warningLevel) : ParserVisitor(warningLevel), _out(out) +Slice::JsVisitor::JsVisitor(Output& out) : _out(out) { } @@ -329,10 +329,9 @@ Slice::JsVisitor::writeDocComment(const ContainedPtr& p, const string& deprecate _out << nl << " **/"; } -Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir, int warningLevel) : +Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir) : _includePaths(includePaths), - _useStdout(false), - _warningLevel(warningLevel) + _useStdout(false) { _fileBase = base; string::size_type pos = base.find_last_of("/\\"); @@ -362,12 +361,10 @@ 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, - int warningLevel) : +Slice::Gen::Gen(const string& base, const vector<string>& includePaths, const string& dir, ostream& out) : _out(out), _includePaths(includePaths), - _useStdout(true), - _warningLevel(warningLevel) + _useStdout(true) { _fileBase = base; string::size_type pos = base.find_last_of("/\\"); @@ -418,17 +415,17 @@ Slice::Gen::generate(const UnitPtr& p) _out.restoreIndent(); } } - RequireVisitor requireVisitor(_out, _includePaths, icejs, es6module, _warningLevel); + RequireVisitor requireVisitor(_out, _includePaths, icejs, es6module); p->visit(&requireVisitor, false); vector<string> seenModules = requireVisitor.writeRequires(p); - TypesVisitor typesVisitor(_out, seenModules, icejs, _warningLevel); + TypesVisitor typesVisitor(_out, seenModules, icejs); p->visit(&typesVisitor, false); // // Export the top-level modules. // - ExportVisitor exportVisitor(_out, icejs, es6module, _warningLevel); + ExportVisitor exportVisitor(_out, icejs, es6module); p->visit(&exportVisitor, false); if(!es6module) @@ -481,8 +478,8 @@ Slice::Gen::printHeader() } Slice::Gen::RequireVisitor::RequireVisitor(IceUtilInternal::Output& out, vector<string> includePaths, - bool icejs, bool es6modules, int warningLevel) : - JsVisitor(out, warningLevel), + bool icejs, bool es6modules) : + JsVisitor(out), _icejs(icejs), _es6modules(es6modules), _seenClass(false), @@ -843,9 +840,8 @@ Slice::Gen::RequireVisitor::writeRequires(const UnitPtr& p) return seenModules; } -Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out, vector<string> seenModules, bool icejs, - int warningLevel) : - JsVisitor(out, warningLevel), +Slice::Gen::TypesVisitor::TypesVisitor(IceUtilInternal::Output& out, vector<string> seenModules, bool icejs) : + JsVisitor(out), _seenModules(seenModules), _icejs(icejs) { @@ -1849,8 +1845,8 @@ Slice::Gen::TypesVisitor::encodeTypeForOperation(const TypePtr& type) return "???"; } -Slice::Gen::ExportVisitor::ExportVisitor(IceUtilInternal::Output& out, bool icejs, bool es6modules, int warningLevel) : - JsVisitor(out, warningLevel), +Slice::Gen::ExportVisitor::ExportVisitor(IceUtilInternal::Output& out, bool icejs, bool es6modules) : + JsVisitor(out), _icejs(icejs), _es6modules(es6modules) { diff --git a/cpp/src/slice2js/Gen.h b/cpp/src/slice2js/Gen.h index dc3b65f18ba..8196ba1b48b 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&, int); + JsVisitor(::IceUtilInternal::Output&); virtual ~JsVisitor(); protected: @@ -44,14 +44,12 @@ public: Gen(const std::string&, const std::vector<std::string>&, - const std::string&, - int); + const std::string&); Gen(const std::string&, const std::vector<std::string>&, const std::string&, - std::ostream&, - int); + std::ostream&); ~Gen(); @@ -66,7 +64,6 @@ private: std::vector<std::string> _includePaths; std::string _fileBase; bool _useStdout; - int _warningLevel; void printHeader(); @@ -74,7 +71,7 @@ private: { public: - RequireVisitor(::IceUtilInternal::Output&, std::vector<std::string>, bool, bool, int); + RequireVisitor(::IceUtilInternal::Output&, std::vector<std::string>, bool, bool); virtual bool visitClassDefStart(const ClassDefPtr&); virtual bool visitStructStart(const StructPtr&); @@ -106,7 +103,7 @@ private: { public: - TypesVisitor(::IceUtilInternal::Output&, std::vector< std::string>, bool, int); + TypesVisitor(::IceUtilInternal::Output&, std::vector< std::string>, bool); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -130,7 +127,7 @@ private: { public: - ExportVisitor(::IceUtilInternal::Output&, bool, bool, int); + ExportVisitor(::IceUtilInternal::Output&, bool, bool); virtual bool visitModuleStart(const ModulePtr&); private: diff --git a/cpp/src/slice2js/Main.cpp b/cpp/src/slice2js/Main.cpp index 03f17331e59..a73738fcee9 100644 --- a/cpp/src/slice2js/Main.cpp +++ b/cpp/src/slice2js/Main.cpp @@ -80,7 +80,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; } @@ -104,7 +103,6 @@ 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(); @@ -174,8 +172,6 @@ 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; @@ -339,12 +335,12 @@ compile(const vector<string>& argv) { if(useStdout) { - Gen gen(icecpp->getBaseName(), includePaths, output, cout, warningLevel); + Gen gen(icecpp->getBaseName(), includePaths, output, cout); gen.generate(p); } else { - Gen gen(icecpp->getBaseName(), includePaths, output, warningLevel); + Gen gen(icecpp->getBaseName(), includePaths, output); gen.generate(p); } } diff --git a/cpp/src/slice2objc/Gen.cpp b/cpp/src/slice2objc/Gen.cpp index cc7b718c7e3..80b5609417e 100644 --- a/cpp/src/slice2objc/Gen.cpp +++ b/cpp/src/slice2objc/Gen.cpp @@ -12,9 +12,9 @@ #include <limits> #include <sys/stat.h> #ifndef _WIN32 -#include <unistd.h> +# include <unistd.h> #else -#include <direct.h> +# include <direct.h> #endif #include <IceUtil/Iterator.h> #include <IceUtil/UUID.h> @@ -133,8 +133,7 @@ public: } -Slice::ObjCVisitor::ObjCVisitor(Output& h, Output& m, const string& dllExport, int warningLevel) : - ParserVisitor(warningLevel), +Slice::ObjCVisitor::ObjCVisitor(Output& h, Output& m, const string& dllExport) : _H(h), _M(m), _dllExport(dllExport) @@ -658,12 +657,11 @@ 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, int warningLevel) : + const string& dir, const string& dllExport) : _base(base), _include(include), _includePaths(includePaths), - _dllExport(dllExport), - _warningLevel(warningLevel) + _dllExport(dllExport) { for(vector<string>::iterator p = _includePaths.begin(); p != _includePaths.end(); ++p) { @@ -734,7 +732,7 @@ Slice::Gen::operator!() const void Slice::Gen::generate(const UnitPtr& p) { - ObjCGenerator::validateMetaData(p, _warningLevel); + ObjCGenerator::validateMetaData(p); // // Give precedence to --dll-export command-line option @@ -834,25 +832,25 @@ Slice::Gen::generate(const UnitPtr& p) _M << nl << "# pragma clang diagnostic ignored \"-Wshadow-ivar\""; _M << nl << "#endif"; - UnitVisitor unitVisitor(_H, _M, _dllExport, _warningLevel); + UnitVisitor unitVisitor(_H, _M, _dllExport); p->visit(&unitVisitor, false); - ObjectDeclVisitor objectDeclVisitor(_H, _M, _dllExport, _warningLevel); + ObjectDeclVisitor objectDeclVisitor(_H, _M, _dllExport); p->visit(&objectDeclVisitor, false); - ProxyDeclVisitor proxyDeclVisitor(_H, _M, _dllExport, _warningLevel); + ProxyDeclVisitor proxyDeclVisitor(_H, _M, _dllExport); p->visit(&proxyDeclVisitor, false); - TypesVisitor typesVisitor(_H, _M, _dllExport, _warningLevel); + TypesVisitor typesVisitor(_H, _M, _dllExport); p->visit(&typesVisitor, false); - ProxyVisitor proxyVisitor(_H, _M, _dllExport, _warningLevel); + ProxyVisitor proxyVisitor(_H, _M, _dllExport); p->visit(&proxyVisitor, false); - DelegateMVisitor delegateMVisitor(_H, _M, _dllExport, _warningLevel); + DelegateMVisitor delegateMVisitor(_H, _M, _dllExport); p->visit(&delegateMVisitor, false); - HelperVisitor HelperVisitor(_H, _M, _dllExport, _warningLevel); + HelperVisitor HelperVisitor(_H, _M, _dllExport); p->visit(&HelperVisitor, false); } @@ -881,8 +879,8 @@ Slice::Gen::printHeader(Output& o) o << "\n// Ice version " << ICE_STRING_VERSION; } -Slice::Gen::UnitVisitor::UnitVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) : - ObjCVisitor(H, M, dllExport, warningLevel) +Slice::Gen::UnitVisitor::UnitVisitor(Output& H, Output& M, const string& dllExport) : + ObjCVisitor(H, M, dllExport) { } @@ -923,8 +921,8 @@ Slice::Gen::UnitVisitor::visitUnitEnd(const UnitPtr& unit) } } -Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) - : ObjCVisitor(H, M, dllExport, warningLevel) +Slice::Gen::ObjectDeclVisitor::ObjectDeclVisitor(Output& H, Output& M, const string& dllExport) + : ObjCVisitor(H, M, dllExport) { } @@ -944,8 +942,8 @@ Slice::Gen::ObjectDeclVisitor::visitClassDecl(const ClassDeclPtr& p) _H << nl << "@protocol " << fixName(p) << ";"; } -Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) - : ObjCVisitor(H, M, dllExport, warningLevel) +Slice::Gen::ProxyDeclVisitor::ProxyDeclVisitor(Output& H, Output& M, const string& dllExport) + : ObjCVisitor(H, M, dllExport) { } @@ -959,8 +957,8 @@ Slice::Gen::ProxyDeclVisitor::visitClassDecl(const ClassDeclPtr& p) } } -Slice::Gen::TypesVisitor::TypesVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) - : ObjCVisitor(H, M, dllExport, warningLevel) +Slice::Gen::TypesVisitor::TypesVisitor(Output& H, Output& M, const string& dllExport) + : ObjCVisitor(H, M, dllExport) { } @@ -2221,8 +2219,8 @@ Slice::Gen::TypesVisitor::writeMemberUnmarshal(const DataMemberList& dataMembers } } -Slice::Gen::ProxyVisitor::ProxyVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) - : ObjCVisitor(H, M, dllExport, warningLevel) +Slice::Gen::ProxyVisitor::ProxyVisitor(Output& H, Output& M, const string& dllExport) + : ObjCVisitor(H, M, dllExport) { } @@ -2340,8 +2338,8 @@ Slice::Gen::ProxyVisitor::visitOperation(const OperationPtr& p) _H << " response" << responseExceptionSentDecl << deprecateSymbol << ";"; } -Slice::Gen::HelperVisitor::HelperVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) : - ObjCVisitor(H, M, dllExport, warningLevel) +Slice::Gen::HelperVisitor::HelperVisitor(Output& H, Output& M, const string& dllExport) : + ObjCVisitor(H, M, dllExport) { } @@ -2643,8 +2641,8 @@ Slice::Gen::HelperVisitor::visitStructStart(const StructPtr& p) return false; } -Slice::Gen::DelegateMVisitor::DelegateMVisitor(Output& H, Output& M, const string& dllExport, int warningLevel) - : ObjCVisitor(H, M, dllExport, warningLevel) +Slice::Gen::DelegateMVisitor::DelegateMVisitor(Output& H, Output& M, const string& dllExport) + : ObjCVisitor(H, M, dllExport) { } diff --git a/cpp/src/slice2objc/Gen.h b/cpp/src/slice2objc/Gen.h index 6b6c4c99b10..0c9ef639e7d 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&, int); + ObjCVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual ~ObjCVisitor(); protected: @@ -54,8 +54,7 @@ public: const std::string&, const std::vector<std::string>&, const std::string&, - const std::string&, - int); + const std::string&); ~Gen(); bool operator!() const; // Returns true if there was a constructor error @@ -72,7 +71,6 @@ private: std::string _include; std::vector<std::string> _includePaths; std::string _dllExport; - int _warningLevel; void printHeader(::IceUtilInternal::Output&); @@ -80,7 +78,7 @@ private: { public: - UnitVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + UnitVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitUnitEnd(const UnitPtr&); @@ -94,7 +92,7 @@ private: { public: - ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + ObjectDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual void visitClassDecl(const ClassDeclPtr&); }; @@ -103,7 +101,7 @@ private: { public: - ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + ProxyDeclVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual void visitClassDecl(const ClassDeclPtr&); }; @@ -112,7 +110,7 @@ private: { public: - TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + TypesVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitModuleStart(const ModulePtr&); virtual void visitModuleEnd(const ModulePtr&); @@ -158,7 +156,7 @@ private: { public: - ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + ProxyVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitClassDefEnd(const ClassDefPtr&); @@ -169,7 +167,7 @@ private: { public: - HelperVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + HelperVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); virtual bool visitClassDefStart(const ClassDefPtr&); virtual void visitEnum(const EnumPtr&); @@ -182,7 +180,7 @@ private: { public: - DelegateMVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&, int); + DelegateMVisitor(::IceUtilInternal::Output&, ::IceUtilInternal::Output&, const std::string&); 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 7877c072ca0..24ac096d92c 100644 --- a/cpp/src/slice2objc/Main.cpp +++ b/cpp/src/slice2objc/Main.cpp @@ -80,7 +80,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; // Note: --case-sensitive is intentionally not shown here! } @@ -106,7 +105,6 @@ 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(); @@ -175,8 +173,6 @@ 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; @@ -289,8 +285,7 @@ compile(const vector<string>& argv) { try { - Gen gen(argv[0], icecpp->getBaseName(), include, includePaths, output, dllExport, - warningLevel); + Gen gen(argv[0], icecpp->getBaseName(), include, includePaths, output, dllExport); if(!gen) { u->destroy(); diff --git a/cpp/src/slice2objc/ObjCUtil.cpp b/cpp/src/slice2objc/ObjCUtil.cpp index ad2787308bc..e86290b8db3 100644 --- a/cpp/src/slice2objc/ObjCUtil.cpp +++ b/cpp/src/slice2objc/ObjCUtil.cpp @@ -1043,20 +1043,15 @@ Slice::ObjCGenerator::writeOptParamMarshalUnmarshalCode(Output &out, const TypeP } void -Slice::ObjCGenerator::validateMetaData(const UnitPtr& u, int warningLevel) +Slice::ObjCGenerator::validateMetaData(const UnitPtr& u) { - MetaDataVisitor visitor(warningLevel); + MetaDataVisitor visitor; u->visit(&visitor, true); } const string Slice::ObjCGenerator::MetaDataVisitor::_objcPrefix = "objc:"; const string Slice::ObjCGenerator::MetaDataVisitor::_msg = "ignoring invalid metadata"; -Slice::ObjCGenerator::MetaDataVisitor::MetaDataVisitor(int warningLevel) : - ParserVisitor(warningLevel) -{ -} - bool Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) { @@ -1071,6 +1066,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) DefinitionContextPtr dc = p->findDefinitionContext(file); assert(dc); StringList globalMetaData = dc->getMetaData(); + bool emitWarnings = dc->suppressWarning("invalid-metadata"); int headerDir = 0; int dllExport = 0; for(StringList::const_iterator r = globalMetaData.begin(); r != globalMetaData.end();) @@ -1086,7 +1082,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) headerDir++; if(headerDir > 1) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream ostr; ostr << "ignoring invalid global metadata `" << s @@ -1102,7 +1098,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) dllExport++; if(dllExport > 1) { - if(warningLevel() > 0) + if(emitWarnings) { ostringstream ostr; ostr << "ignoring invalid global metadata `" << s @@ -1113,7 +1109,7 @@ Slice::ObjCGenerator::MetaDataVisitor::visitUnitStart(const UnitPtr& p) } continue; } - if(warningLevel() > 0) + if(emitWarnings) { ostringstream ostr; ostr << "ignoring invalid global metadata `" << s << "'"; diff --git a/cpp/src/slice2objc/ObjCUtil.h b/cpp/src/slice2objc/ObjCUtil.h index 11e4cece024..cf5f1ee0b46 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&, int); + static void validateMetaData(const UnitPtr&); protected: struct ModulePrefix @@ -81,7 +81,6 @@ private: class MetaDataVisitor : public ParserVisitor { public: - 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 787e83ac1b8..aace7d638ec 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, int); + CodeVisitor(IceUtilInternal::Output&, bool); virtual void visitClassDecl(const ClassDeclPtr&); virtual bool visitClassDefStart(const ClassDefPtr&); @@ -141,8 +141,7 @@ private: // // CodeVisitor implementation. // -CodeVisitor::CodeVisitor(Output& out, bool ns, int warningLevel) : - ParserVisitor(warningLevel), +CodeVisitor::CodeVisitor(Output& out, bool ns) : _out(out), _ns(ns) { @@ -946,6 +945,11 @@ CodeVisitor::visitDictionary(const DictionaryPtr& p) TypePtr keyType = p->keyType(); BuiltinPtr b = BuiltinPtr::dynamicCast(keyType); + + const UnitPtr unit = p->unit(); + const DefinitionContextPtr dc = unit->findDefinitionContext(p->file()); + assert(dc); + bool emitWarnings = !dc->suppressWarning("invalid-metadata"); if(b) { switch(b->kind()) @@ -964,7 +968,7 @@ CodeVisitor::visitDictionary(const DictionaryPtr& p) case Slice::Builtin::KindFloat: case Slice::Builtin::KindDouble: { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP"); } @@ -980,7 +984,7 @@ CodeVisitor::visitDictionary(const DictionaryPtr& p) } else if(!EnumPtr::dynamicCast(keyType)) { - if(warningLevel() > 0) + if(emitWarnings) { emitWarning(p->file(), p->line(), "dictionary key type not supported in PHP"); } @@ -1473,7 +1477,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, int warningLevel) +generate(const UnitPtr& un, bool all, bool checksum, bool ns, const vector<string>& includePaths, Output& out) { if(!all) { @@ -1504,12 +1508,12 @@ generate(const UnitPtr& un, bool all, bool checksum, bool ns, const vector<strin } } - CodeVisitor codeVisitor(out, ns, warningLevel); + CodeVisitor codeVisitor(out, ns); un->visit(&codeVisitor, false); if(checksum) { - ChecksumMap checksums = createChecksums(un, warningLevel); + ChecksumMap checksums = createChecksums(un); if(!checksums.empty()) { out << sp; @@ -1620,7 +1624,6 @@ usage(const string& n) " deprecated: use instead [[\"ice-prefix\"]] metadata.\n" "--underscore Allow underscores in Slice identifiers\n" " deprecated: use instead [[\"underscore\"]] metadata.\n" - "--no-warn Disable all warnings.\n" ; } @@ -1645,7 +1648,6 @@ 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(); @@ -1717,8 +1719,6 @@ 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; @@ -1870,7 +1870,7 @@ compile(const vector<string>& argv) // // Generate the PHP mapping. // - generate(u, all, checksum, ns, includePaths, out, warningLevel); + generate(u, all, checksum, ns, includePaths, out); out << "?>\n"; out.close(); |