summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/lsp.vim3
-rw-r--r--test/lsp/test_other_initialize_message_handling.vader7
2 files changed, 9 insertions, 1 deletions
diff --git a/autoload/ale/lsp.vim b/autoload/ale/lsp.vim
index cfc89199..98160995 100644
--- a/autoload/ale/lsp.vim
+++ b/autoload/ale/lsp.vim
@@ -256,7 +256,8 @@ function! ale#lsp#HandleOtherInitializeResponses(conn, response) abort
endif
if get(a:response, 'method', '') is# ''
- if has_key(get(a:response, 'result', {}), 'capabilities')
+ if type(get(a:response, 'result')) is v:t_dict
+ \&& has_key(a:response.result, 'capabilities')
call s:UpdateCapabilities(a:conn, a:response.result.capabilities)
for [l:dir, l:project] in l:uninitialized_projects
diff --git a/test/lsp/test_other_initialize_message_handling.vader b/test/lsp/test_other_initialize_message_handling.vader
index 45457979..f5e0f1da 100644
--- a/test/lsp/test_other_initialize_message_handling.vader
+++ b/test/lsp/test_other_initialize_message_handling.vader
@@ -181,3 +181,10 @@ Execute(Disabled capabilities should be recognised correctly):
\ },
\ },
\ b:conn
+
+Execute(Results that are not dictionaries should be handled correctly):
+ call ale#lsp#HandleOtherInitializeResponses(b:conn, {
+ \ 'jsonrpc': '2.0',
+ \ 'id': 1,
+ \ 'result': v:null,
+ \})