mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
libsolc: guard LSP initialization in try/catch block.
This commit is contained in:
parent
e1947faa1a
commit
ec6f1758c1
@ -137,13 +137,22 @@ extern char* solidity_compile(char const* _input, CStyleReadFileCallback _readCa
|
|||||||
return solidityAllocations.emplace_back(compile(_input, _readCallback, _readContext)).data();
|
return solidityAllocations.emplace_back(compile(_input, _readCallback, _readContext)).data();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern int solidity_lsp_start(CStyleReadFileCallback /*TODO(pr) _readCallback*/, void* /*_readContext*/) noexcept
|
extern int solidity_lsp_start(CStyleReadFileCallback _readCallback) noexcept
|
||||||
{
|
{
|
||||||
if (languageServer || languageServerTransport)
|
if (languageServer || languageServerTransport)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
languageServerTransport = make_unique<lsp::MockTransport>();
|
languageServerTransport = make_unique<lsp::MockTransport>();
|
||||||
languageServer = make_unique<lsp::LanguageServer>(*languageServerTransport);
|
languageServer = make_unique<lsp::LanguageServer>(*languageServerTransport);
|
||||||
|
(void) _readCallback; // TODO(pr) pass to LanguageServer()
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
return -2;
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ char* solidity_compile(char const* _input, CStyleReadFileCallback _readCallback,
|
|||||||
///
|
///
|
||||||
/// @returns 0 on success and -1 on failure. A failure can only happen due to mis-use of the API,
|
/// @returns 0 on success and -1 on failure. A failure can only happen due to mis-use of the API,
|
||||||
/// such as, the LSP mode has been already initiated.
|
/// such as, the LSP mode has been already initiated.
|
||||||
int solidity_lsp_start(CStyleReadFileCallback _readCallback, void* _readContext) SOLC_NOEXCEPT;
|
int solidity_lsp_start(CStyleReadFileCallback _readCallback) SOLC_NOEXCEPT;
|
||||||
|
|
||||||
/// Sends a single JSON-RPC message to the LSP server.
|
/// Sends a single JSON-RPC message to the LSP server.
|
||||||
/// This message must not include any HTTP headers but only hold the payload.
|
/// This message must not include any HTTP headers but only hold the payload.
|
||||||
@ -120,8 +120,8 @@ char const* solidity_try_receive() SOLC_NOEXCEPT;
|
|||||||
/// @returns JSON-RPC message (inculding HTTP headers), can be empty (or nullptr).
|
/// @returns JSON-RPC message (inculding HTTP headers), can be empty (or nullptr).
|
||||||
/// If the result is not null, it has to be freed by the caller using solidity_free.
|
/// If the result is not null, it has to be freed by the caller using solidity_free.
|
||||||
///
|
///
|
||||||
/// This can cause the callback provided in solidity_lsp to be invoked.
|
/// This can cause the callback provided in solidity_lsp_start to be invoked.
|
||||||
/// Should only be called after having called solidity_lsp.
|
/// Should only be called after having called solidity_lsp_start.
|
||||||
char const *solidity_lsp_send_receive(char const* _input) SOLC_NOEXCEPT;
|
char const *solidity_lsp_send_receive(char const* _input) SOLC_NOEXCEPT;
|
||||||
|
|
||||||
/// Frees up any allocated memory.
|
/// Frees up any allocated memory.
|
||||||
|
Loading…
Reference in New Issue
Block a user