From 021f59b3f4570cc3f2f459a3d019743c5beb8ac9 Mon Sep 17 00:00:00 2001 From: MTDL9 <40929090+MTDL9@users.noreply.github.com> Date: Fri, 13 Jul 2018 06:42:28 +0200 Subject: [PATCH] Support strings in data field of error responses --- autoload/ale/lsp/response.vim | 14 ++++++++++---- test/lsp/test_lsp_error_parsing.vader | 9 +++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/autoload/ale/lsp/response.vim b/autoload/ale/lsp/response.vim index 94794e98..3ac65388 100644 --- a/autoload/ale/lsp/response.vim +++ b/autoload/ale/lsp/response.vim @@ -105,11 +105,17 @@ function! ale#lsp#response#GetErrorMessage(response) abort return '' endif - " Include the traceback as details, if it's there. - let l:traceback = get(get(a:response.error, 'data', {}), 'traceback', []) + " Include the traceback or error data as details, if present. + let l:error_data = get(a:response.error, 'data', {}) - if type(l:traceback) is type([]) && !empty(l:traceback) - let l:message .= "\n" . join(l:traceback, "\n") + if type(l:error_data) is type('') + let l:message .= "\n" . l:error_data + else + let l:traceback = get(l:error_data, 'traceback', []) + + if type(l:traceback) is type([]) && !empty(l:traceback) + let l:message .= "\n" . join(l:traceback, "\n") + endif endif return l:message diff --git a/test/lsp/test_lsp_error_parsing.vader b/test/lsp/test_lsp_error_parsing.vader index 7464b0e7..44169c80 100644 --- a/test/lsp/test_lsp_error_parsing.vader +++ b/test/lsp/test_lsp_error_parsing.vader @@ -63,3 +63,12 @@ Execute(Messages with tracebacks should be handled): \ }, \ }, \}) + +Execute(Messages with string data should be handled): + AssertEqual "xyz\nUncaught Exception", ale#lsp#response#GetErrorMessage({ + \ 'error': { + \ 'code': -32602, + \ 'message': 'xyz', + \ 'data': 'Uncaught Exception', + \ }, + \})