internal/lsp/cmd: fix a nil pointer and some minor clean-up

This change fixes a nil error, in addition to cleaning up a spacing
error and a typo. It also fixes the golint errors in internal/lsp/cmd.

Updates golang/go#30091

Change-Id: I24867bb878fda4e341f87d31bbec701a3814a341
Reviewed-on: https://go-review.googlesource.com/c/161220
Reviewed-by: Ian Cottrell <iancottrell@google.com>
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/internal/lsp/cmd/cmd.go b/internal/lsp/cmd/cmd.go
index b054dcf..694f859 100644
--- a/internal/lsp/cmd/cmd.go
+++ b/internal/lsp/cmd/cmd.go
@@ -12,6 +12,7 @@
 	"flag"
 	"fmt"
 	"go/token"
+
 	"golang.org/x/tools/go/packages"
 	"golang.org/x/tools/internal/tool"
 )
diff --git a/internal/lsp/cmd/location.go b/internal/lsp/cmd/location.go
index 35e2580..29372b7 100644
--- a/internal/lsp/cmd/location.go
+++ b/internal/lsp/cmd/location.go
@@ -99,43 +99,43 @@
 	}
 	loc.Filename = m[posReFile]
 	if m[posReSLine] != "" {
-		if v, err := strconv.ParseInt(m[posReSLine], 10, 32); err != nil {
+		v, err := strconv.ParseInt(m[posReSLine], 10, 32)
+		if err != nil {
 			return loc, err
-		} else {
-			loc.Start.Line = int(v)
 		}
-		if v, err := strconv.ParseInt(m[posReSCol], 10, 32); err != nil {
+		loc.Start.Line = int(v)
+		v, err = strconv.ParseInt(m[posReSCol], 10, 32)
+		if err != nil {
 			return loc, err
-		} else {
-			loc.Start.Column = int(v)
 		}
+		loc.Start.Column = int(v)
 	} else {
-		if v, err := strconv.ParseInt(m[posReSOff], 10, 32); err != nil {
+		v, err := strconv.ParseInt(m[posReSOff], 10, 32)
+		if err != nil {
 			return loc, err
-		} else {
-			loc.Start.Offset = int(v)
 		}
+		loc.Start.Offset = int(v)
 	}
 	if m[posReEnd] == "" {
 		loc.End = loc.Start
 	} else {
 		if m[posReELine] != "" {
-			if v, err := strconv.ParseInt(m[posReELine], 10, 32); err != nil {
+			v, err := strconv.ParseInt(m[posReELine], 10, 32)
+			if err != nil {
 				return loc, err
-			} else {
-				loc.End.Line = int(v)
 			}
-			if v, err := strconv.ParseInt(m[posReECol], 10, 32); err != nil {
+			loc.End.Line = int(v)
+			v, err = strconv.ParseInt(m[posReECol], 10, 32)
+			if err != nil {
 				return loc, err
-			} else {
-				loc.End.Column = int(v)
 			}
+			loc.End.Column = int(v)
 		} else {
-			if v, err := strconv.ParseInt(m[posReEOff], 10, 32); err != nil {
+			v, err := strconv.ParseInt(m[posReEOff], 10, 32)
+			if err != nil {
 				return loc, err
-			} else {
-				loc.End.Offset = int(v)
 			}
+			loc.End.Offset = int(v)
 		}
 	}
 	return loc, nil
diff --git a/internal/lsp/cmd/query.go b/internal/lsp/cmd/query.go
index 3d0bf30..5ab520f 100644
--- a/internal/lsp/cmd/query.go
+++ b/internal/lsp/cmd/query.go
@@ -24,7 +24,7 @@
 // query implements the query command.
 type query struct {
 	JSON    bool   `flag:"json" help:"emit output in JSON format"`
-	Emulate string `flag:"emulate" help:"compatability mode, causes gopls to emulate another tool.\nvalues depend on the operation being performed"`
+	Emulate string `flag:"emulate" help:"compatibility mode, causes gopls to emulate another tool.\nvalues depend on the operation being performed"`
 
 	app *Application
 }
diff --git a/internal/lsp/cmd/server.go b/internal/lsp/cmd/server.go
index e205052..72993e6 100644
--- a/internal/lsp/cmd/server.go
+++ b/internal/lsp/cmd/server.go
@@ -101,7 +101,10 @@
 			msec := int(elapsed.Round(time.Millisecond) / time.Millisecond)
 			fmt.Fprintf(outx, " in %dms", msec)
 		}
-		params := string(*payload)
+		params := "null"
+		if payload != nil {
+			params = string(*payload)
+		}
 		if params == "null" {
 			params = "{}"
 		}