From 8de300cfc20a62d78c74c4b482fcfc0090f8d95c Mon Sep 17 00:00:00 2001 From: Peter Weinberger Date: Thu, 10 Oct 2019 10:59:39 -0400 Subject: [PATCH] internal/lsp/protocol: handle case of an otherwise empty notification Some notifications, like exit, have no other arguments, a case the code was not handling correctly. Change-Id: Ib5ff536352ba6ad0d09cd80c9d5f0a987abbe500 Reviewed-on: https://go-review.googlesource.com/c/tools/+/200298 Reviewed-by: Rebecca Stambler Run-TryBot: Peter Weinberger --- internal/lsp/protocol/log.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/internal/lsp/protocol/log.go b/internal/lsp/protocol/log.go index 3fdff0638c..431155fe46 100644 --- a/internal/lsp/protocol/log.go +++ b/internal/lsp/protocol/log.go @@ -218,9 +218,13 @@ func logIn(outfd io.Writer, data []byte) { } else { fmt.Fprintf(&buf, "Result: %s%s", string(*v.Result), eor) } - } else if v.ID == nil && v.Method != "" && v.Params != nil { + } else if v.ID == nil && v.Method != "" { + p := "null" + if v.Params != nil { + p = string(*v.Params) + } fmt.Fprintf(&buf, "Sending notification '%s'.\n", v.Method) - fmt.Fprintf(&buf, "Params: %s%s", *v.Params, eor) + fmt.Fprintf(&buf, "Params: %s%s", p, eor) } else { // for completeness, as it should never happen buf = strings.Builder{} // undo common Trace fmt.Fprintf(&buf, "[Error - %s] on read ID?%v method:%q Params:%v Result:%v Error:%v%s",