diff options
author | Alex Beregszaszi <alex@rtfs.hu> | 2018-08-08 22:56:12 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-08 22:56:12 +0800 |
commit | efeffa808371b64e6aa7eb5d340baf5989af2cd5 (patch) | |
tree | 8271ff11b14351a732394dd6d808e0f76c883228 | |
parent | 863778fe3614f8387723572693f276f66321fd74 (diff) | |
parent | 7bf9526f5edacd91602b9b9b07247e7a7b46fcc2 (diff) | |
download | dexon-solidity-efeffa808371b64e6aa7eb5d340baf5989af2cd5.tar.gz dexon-solidity-efeffa808371b64e6aa7eb5d340baf5989af2cd5.tar.zst dexon-solidity-efeffa808371b64e6aa7eb5d340baf5989af2cd5.zip |
Merge pull request #4761 from ethereum/libsolc-exceptions
Mark libsolc external C functions as noexcept
-rw-r--r-- | libsolc/libsolc.cpp | 18 | ||||
-rw-r--r-- | libsolc/libsolc.h | 24 | ||||
-rw-r--r-- | libsolidity/interface/StandardCompiler.cpp | 4 | ||||
-rw-r--r-- | libsolidity/interface/StandardCompiler.h | 4 |
4 files changed, 28 insertions, 22 deletions
diff --git a/libsolc/libsolc.cpp b/libsolc/libsolc.cpp index 26ce98ce..6931ed08 100644 --- a/libsolc/libsolc.cpp +++ b/libsolc/libsolc.cpp @@ -270,46 +270,46 @@ static string s_outputBuffer; extern "C" { -extern char const* license() +extern char const* license() noexcept { static string fullLicenseText = otherLicenses + licenseText; return fullLicenseText.c_str(); } -extern char const* version() +extern char const* version() noexcept { return VersionString.c_str(); } -extern char const* compileJSON(char const* _input, bool _optimize) +extern char const* compileJSON(char const* _input, bool _optimize) noexcept { s_outputBuffer = compileSingle(_input, _optimize); return s_outputBuffer.c_str(); } -extern char const* compileJSONMulti(char const* _input, bool _optimize) +extern char const* compileJSONMulti(char const* _input, bool _optimize) noexcept { s_outputBuffer = compileMulti(_input, _optimize); return s_outputBuffer.c_str(); } -extern char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback) +extern char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback) noexcept { s_outputBuffer = compileMulti(_input, _optimize, _readCallback); return s_outputBuffer.c_str(); } -extern char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback) +extern char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback) noexcept { s_outputBuffer = compileStandardInternal(_input, _readCallback); return s_outputBuffer.c_str(); } -extern char const* solidity_license() +extern char const* solidity_license() noexcept { /// todo: make this the default or an alias return license(); } -extern char const* solidity_version() +extern char const* solidity_version() noexcept { /// todo: make this the default or an alias return version(); } -extern char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback) +extern char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback) noexcept { /// todo: make this the default or an alias return compileStandard(_input, _readCallback); diff --git a/libsolc/libsolc.h b/libsolc/libsolc.h index 2cc004d4..e959b758 100644 --- a/libsolc/libsolc.h +++ b/libsolc/libsolc.h @@ -23,6 +23,12 @@ #include <stdbool.h> #ifdef __cplusplus +#define SOLC_NOEXCEPT noexcept +#else +#define SOLC_NOEXCEPT +#endif + +#ifdef __cplusplus extern "C" { #endif @@ -30,16 +36,16 @@ extern "C" { /// heap-allocated and are free'd by the caller. typedef void (*CStyleReadFileCallback)(char const* _path, char** o_contents, char** o_error); -char const* license(); -char const* version(); -char const* compileJSON(char const* _input, bool _optimize); -char const* compileJSONMulti(char const* _input, bool _optimize); -char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback); -char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback); +char const* license() SOLC_NOEXCEPT; +char const* version() SOLC_NOEXCEPT; +char const* compileJSON(char const* _input, bool _optimize) SOLC_NOEXCEPT; +char const* compileJSONMulti(char const* _input, bool _optimize) SOLC_NOEXCEPT; +char const* compileJSONCallback(char const* _input, bool _optimize, CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT; +char const* compileStandard(char const* _input, CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT; -char const* solidity_license(); -char const* solidity_version(); -char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback); +char const* solidity_license() SOLC_NOEXCEPT; +char const* solidity_version() SOLC_NOEXCEPT; +char const* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT; #ifdef __cplusplus } diff --git a/libsolidity/interface/StandardCompiler.cpp b/libsolidity/interface/StandardCompiler.cpp index 8339780f..58b84163 100644 --- a/libsolidity/interface/StandardCompiler.cpp +++ b/libsolidity/interface/StandardCompiler.cpp @@ -567,7 +567,7 @@ Json::Value StandardCompiler::compileInternal(Json::Value const& _input) return output; } -Json::Value StandardCompiler::compile(Json::Value const& _input) +Json::Value StandardCompiler::compile(Json::Value const& _input) noexcept { try { @@ -591,7 +591,7 @@ Json::Value StandardCompiler::compile(Json::Value const& _input) } } -string StandardCompiler::compile(string const& _input) +string StandardCompiler::compile(string const& _input) noexcept { Json::Value input; string errors; diff --git a/libsolidity/interface/StandardCompiler.h b/libsolidity/interface/StandardCompiler.h index 2772394a..fc9c3a59 100644 --- a/libsolidity/interface/StandardCompiler.h +++ b/libsolidity/interface/StandardCompiler.h @@ -47,10 +47,10 @@ public: /// Sets all input parameters according to @a _input which conforms to the standardized input /// format, performs compilation and returns a standardized output. - Json::Value compile(Json::Value const& _input); + Json::Value compile(Json::Value const& _input) noexcept; /// Parses input as JSON and peforms the above processing steps, returning a serialized JSON /// output. Parsing errors are returned as regular errors. - std::string compile(std::string const& _input); + std::string compile(std::string const& _input) noexcept; private: Json::Value compileInternal(Json::Value const& _input); |