diff options
-rw-r--r-- | autoload/ale/lsp/response.vim | 14 | ||||
-rw-r--r-- | 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', + \ }, + \}) |