diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/CommunicatorI.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/CommunicatorI.h | 2 | ||||
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 2 | ||||
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.h | 2 | ||||
-rw-r--r-- | cpp/src/slice2cpp/Gen.cpp | 14 |
5 files changed, 15 insertions, 7 deletions
diff --git a/cpp/src/Ice/CommunicatorI.cpp b/cpp/src/Ice/CommunicatorI.cpp index a6678b4bd3f..c47a3299c19 100644 --- a/cpp/src/Ice/CommunicatorI.cpp +++ b/cpp/src/Ice/CommunicatorI.cpp @@ -30,7 +30,7 @@ using namespace Ice; using namespace IceInternal; void -Ice::CommunicatorI::destroy() +Ice::CommunicatorI::destroy() ICE_NOEXCEPT { if(_instance) { diff --git a/cpp/src/Ice/CommunicatorI.h b/cpp/src/Ice/CommunicatorI.h index 767923b7346..c1ef6279068 100644 --- a/cpp/src/Ice/CommunicatorI.h +++ b/cpp/src/Ice/CommunicatorI.h @@ -31,7 +31,7 @@ class CommunicatorI : public Communicator { public: - virtual void destroy(); + virtual void destroy() ICE_NOEXCEPT; virtual void shutdown(); virtual void waitForShutdown(); virtual bool isShutdown() const; diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index e3b9cb2450c..ac60baa4a0c 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -346,7 +346,7 @@ Ice::ObjectAdapterI::isDeactivated() const } void -Ice::ObjectAdapterI::destroy() +Ice::ObjectAdapterI::destroy() ICE_NOEXCEPT { // // Deactivate and wait for completion. diff --git a/cpp/src/Ice/ObjectAdapterI.h b/cpp/src/Ice/ObjectAdapterI.h index b37af859e2e..855d836f471 100644 --- a/cpp/src/Ice/ObjectAdapterI.h +++ b/cpp/src/Ice/ObjectAdapterI.h @@ -57,7 +57,7 @@ public: virtual void deactivate(); virtual void waitForDeactivate(); virtual bool isDeactivated() const; - virtual void destroy(); + virtual void destroy() ICE_NOEXCEPT; virtual ObjectPrxPtr add(const ObjectPtr&, const Identity&); virtual ObjectPrxPtr addFacet(const ObjectPtr&, const Identity&, const std::string&); diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp index 49db4f74884..b23a22bad3f 100644 --- a/cpp/src/slice2cpp/Gen.cpp +++ b/cpp/src/slice2cpp/Gen.cpp @@ -2987,6 +2987,7 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p) argsAMD += "current)"; string isConst = ((p->mode() == Operation::Nonmutating) || p->hasMetaData("cpp:const")) ? " const" : ""; + string noExcept = (cl->isLocal() && p->hasMetaData("cpp:noexcept")) ? " throw()" : ""; bool amd = !cl->isLocal() && (cl->hasMetaData("amd") || p->hasMetaData("amd")); string deprecateSymbol = getDeprecateSymbol(p, cl); @@ -2994,11 +2995,13 @@ Slice::Gen::ObjectVisitor::visitOperation(const OperationPtr& p) H << sp; if(!amd) { - H << nl << deprecateSymbol << "virtual " << retS << ' ' << fixKwd(name) << params << isConst << " = 0;"; + H << nl << deprecateSymbol + << "virtual " << retS << ' ' << fixKwd(name) << params << isConst << noExcept << " = 0;"; } else { - H << nl << deprecateSymbol << "virtual void " << name << "_async" << paramsAMD << isConst << " = 0;"; + H << nl << deprecateSymbol + << "virtual void " << name << "_async" << paramsAMD << isConst << noExcept << " = 0;"; } if(!cl->isLocal()) @@ -4611,6 +4614,10 @@ Slice::Gen::MetaDataVisitor::visitOperation(const OperationPtr& p) StringList metaData = p->getMetaData(); metaData.remove("cpp:const"); + if(!cl->isLocal() && p->hasMetaData("cpp:noexcept")) + { + emitWarning(p->file(), p->line(), "ignoring metadata `cpp:noexcept' for non local interface"); + } TypePtr returnType = p->returnType(); if(!metaData.empty()) @@ -6532,11 +6539,12 @@ Slice::Gen::Cpp11LocalObjectVisitor::visitOperation(const OperationPtr& p) args += ')'; string isConst = ((p->mode() == Operation::Nonmutating) || p->hasMetaData("cpp:const")) ? " const" : ""; + string noExcept = p->hasMetaData("cpp:noexcept") ? " noexcept" : ""; string deprecateSymbol = getDeprecateSymbol(p, cl); H << sp; - H << nl << deprecateSymbol << "virtual " << retS << ' ' << fixKwd(name) << params << isConst << " = 0;"; + H << nl << deprecateSymbol << "virtual " << retS << ' ' << fixKwd(name) << params << isConst << noExcept << " = 0;"; if(cl->hasMetaData("async-oneway") || p->hasMetaData("async-oneway")) { |