Closed natefinch closed 5 years ago
For right now, imports are working in some files but not others. Go to definition is working. .... I haven't restarted VSCode since last night when imports and go to definition were both definitely broken.
¯\(ツ)/¯
Also notably, restarting VSCode does not fix the problem for me.
Note: I've been reporting and trying to gather data on Go To Definition not working with a specific example in https://github.com/golang/go/issues/32209, though it's inconsistent in that a small project is fine, but a big project is not.
Awesome.... great debugging tip about showing gopls logs. Looks like it might be the same issue, I'm getting "no package found for x/y/z"
From my gopls log:
a ton of these:
[Error - 10:56:27 AM] unable to check package for file:///Users/finchnat/mcpp/data/household/gamesparks_test.go: parse: no package found for /Users/finchnat/mcpp/data/household/gamesparks_test.go
It's very weird... in two different files (both very small, like 30 lines) ... one imports correctly, one doesn't.... and yet in the one where it doesn't import, gopls isn't logging anything either.
@natefinch: Are you able to attach a gopls
log to this issue? Feel free to redact anything you need to. Are you using build tags in your files?
@mdhender: Do you mind filing a separate issue? I would expect that your issue is likely related to the symlinks.
Here's logs from me opening the project, adding a line that should trigger goimports and saving (i.e. added _ = pq.NullTime{}
- other parts of this project use pq, so it's not even a new import for the module).
Realized I was in a test file, so moved to a non-test file to try it out, did the same thing, added the line, saved. Nothing. Even waited several minutes in case something was slow, added a couple spaces and resaved. Still nothing.
[Info - 7:59:24 PM] #### Build info
golang.org/x/tools/cmd/gopls golang.org/x/tools@v0.0.0-20190528151238-d238219cc233 h1:Q8gfsz3A5sYwJeRvYP/nWvLYwU5af6MHYyS8QbI2x88= golang.org/x/sync@v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
go version go1.12.4 darwin/amd64
GOARCH="amd64" GOBIN="" GOCACHE="/Users/finchnat/Library/Caches/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/finchnat" GOPROXY="" GORACE="" GOROOT="/Users/finchnat/sdk/go1.12.4" GOTMPDIR="" GOTOOLDIR="/Users/finchnat/sdk/go1.12.4/pkg/tool/darwin_amd64" GCCGO="gccgo" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="/Users/finchnat/mcpp/go.mod" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ch/4d1vgsv17jq0b3yfmnkl9thdk0jm7d/T/go-build539569301=/tmp/go-build -gno-record-gcc-switches -fno-common"
[Error - 8:00:00 PM] method "SetTraceNotification" not yet implemented [Error - 8:00:00 PM] method "DidChangeConfiguration" not yet implemented [Error - 8:00:00 PM] failed to run analyses for file:///Users/finchnat/mcpp/api/identity/key_server_test.go: analysis skipped due to errors in package: [/Users/finchnat/sdk/go1.12.4/src/os/user/lookup.go:62:9: undeclared name: listGroups /Users/finchnat/sdk/go1.12.4/src/os/user/lookup.go:57:9: undeclared name: lookupGroupId /Users/finchnat/sdk/go1.12.4/src/os/user/lookup.go:51:9: undeclared name: lookupGroup /Users/finchnat/sdk/go1.12.4/src/os/user/lookup.go:45:9: undeclared name: lookupUserId /Users/finchnat/sdk/go1.12.4/src/os/user/lookup.go:36:9: undeclared name: lookupUser /Users/finchnat/sdk/go1.12.4/src/os/user/lookup.go:15:41: undeclared name: current] [Error - 8:08:09 PM] Request textDocument/hover failed. Message: no identifier found Code: 0 [Error - 8:08:14 PM] Request textDocument/hover failed. Message: no identifier found Code: 0 [Error - 8:08:36 PM] failed to run analyses for file:///Users/finchnat/mcpp/api/identity/key_server_test.go: failed prerequisites: printf@github.com/Mattel/mcpp/data/keys: failed prerequisites: printf@crypto/x509: failed prerequisites: printf@net: analysis skipped due to errors in package: [/Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:324:23: undeclared name: cgoLookupPTR /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:124:24: undeclared name: cgoLookupCNAME /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:108:23: undeclared name: cgoLookupPort /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:96:24: undeclared name: cgoLookupIP /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:81:24: undeclared name: cgoLookupHost] [Error - 8:08:37 PM] failed to run analyses for file:///Users/finchnat/mcpp/api/identity/key_server_test.go: failed prerequisites: printf@github.com/Mattel/mcpp/data/keys: failed prerequisites: printf@crypto/x509: failed prerequisites: printf@net: analysis skipped due to errors in package: [/Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:324:23: undeclared name: cgoLookupPTR /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:124:24: undeclared name: cgoLookupCNAME /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:108:23: undeclared name: cgoLookupPort /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:96:24: undeclared name: cgoLookupIP /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:81:24: undeclared name: cgoLookupHost] [Error - 8:08:55 PM] failed to run analyses for file:///Users/finchnat/mcpp/api/identity/key_server_test.go: failed prerequisites: printf@github.com/Mattel/mcpp/data/keys: failed prerequisites: printf@crypto/x509: failed prerequisites: printf@net: analysis skipped due to errors in package: [/Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:324:23: undeclared name: cgoLookupPTR /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:124:24: undeclared name: cgoLookupCNAME /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:108:23: undeclared name: cgoLookupPort /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:96:24: undeclared name: cgoLookupIP /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:81:24: undeclared name: cgoLookupHost] unable to parse defer or go from *ast.BadStmt: no defer or go statement found [Error - 8:08:56 PM] Request textDocument/codeAction failed. Message: /Users/finchnat/mcpp/api/identity/key_server_test.go:29:2: illegal character U+005C '\' Code: 0 [Error - 8:08:56 PM] failed to run analyses for file:///Users/finchnat/mcpp/api/identity/key_server_test.go: failed prerequisites: printf@github.com/Mattel/mcpp/data/keys: failed prerequisites: printf@crypto/x509: failed prerequisites: printf@net: analysis skipped due to errors in package: [/Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:324:23: undeclared name: cgoLookupPTR /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:124:24: undeclared name: cgoLookupCNAME /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:108:23: undeclared name: cgoLookupPort /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:96:24: undeclared name: cgoLookupIP /Users/finchnat/sdk/go1.12.4/src/net/lookup_unix.go:81:24: undeclared name: cgoLookupHost] [Info - 8:09:00 PM] no signature help for file:///Users/finchnat/mcpp/api/identity/key_server_test.go:28:9 : cannot find an enclosing function [Error - 8:09:00 PM] Request textDocument/codeAction failed. Message: /Users/finchnat/mcpp/api/identity/key_server_test.go:29:9: expected operand, found '.' (and 1 more errors) Code: 0 [Info - 8:09:01 PM] no completions found for file:///Users/finchnat/mcpp/api/identity/key_server_test.go:28:8: cannot resolve pq [Error - 8:09:01 PM] Request textDocument/codeAction failed. Message: /Users/finchnat/mcpp/api/identity/key_server_test.go:30:5: expected ';', found ':=' Code: 0 [Info - 8:09:04 PM] no completions found for file:///Users/finchnat/mcpp/api/identity/key_server_test.go:28:9: cannot resolve pq [Error - 8:09:32 PM] Request textDocument/hover failed. Message: no room in queue Code: -32000 [Error - 8:09:35 PM] Request textDocument/documentLink failed. Message: no room in queue Code: -32000 [Error - 8:09:35 PM] Request textDocument/codeAction failed. Message: no room in queue Code: -32000 [Error - 8:09:37 PM] Request textDocument/codeAction failed. Message: no room in queue Code: -32000 [Error - 8:09:43 PM] Request textDocument/documentLink failed. Message: no room in queue Code: -32000 [Error - 8:09:43 PM] Request textDocument/codeAction failed. Message: no room in queue Code: -32000 [Info - 8:09:44 PM] no completions found for file:///Users/finchnat/mcpp/api/identity/key_server_test.go:28:11: cannot resolve pq [Error - 8:09:55 PM] Request textDocument/hover failed. Message: no identifier found Code: 0 [Info - 8:09:55 PM] no completions found for file:///Users/finchnat/mcpp/api/identity/token_server.go:39:8: cannot resolve pq [Error - 8:09:55 PM] Request textDocument/codeAction failed. Message: /Users/finchnat/mcpp/api/identity/token_server.go:41:21: expected ';', found ':=' Code: 0
I had the same problem -- failure of go to definition -- with a program that I downloaded (okta-hosted-login) and set up as a module not on my GOPATH. It compiled and ran, but I neglected to run
go mod init [myrepository]
Once I did that, go to definition started working.
Maybe this will help someone else like me, new to go modules, figure this out more quickly than I did!
@natefinch: Can you try updating to the latest version of gopls
? The "no room in queue" error was a bug that we recently fixed. Also, the last line of your log indicates that there is a parse error in your code, in which case gopls
will not organize imports. Are you able to share the contents of the file or a small portion of the contents in which goimports
did not run?
@ThisEndUp: Thanks for the report. It's true that gopls
will not work outside of $GOPATH
unless you have initialized a module. We will work to make that more clear to the users.
@SteelPhase: Just to confirm - you replaced the actual name of the imported package with "package" everywhere in your example code and your logs?
yes i did. I removed the log, as it wasn't representing the actual issue.
I think my issue can be better represented by this https://gist.github.com/SteelPhase/89e1057214050d694c085c0c6fb9a970
@SteelPhase: Do you mind opening a new issue? Your case seems to be different from @natefinch's.
I originally thought they were the same, but I resolved my issue by updating editor.codeActionsOnSaveTimeout
to a higher value in vscode.
Added the info to the wiki, thanks @SteelPhase! (https://github.com/golang/go/wiki/gopls#vscode)
@natefinch: May be worth trying this out, since it fits with your experience of goimports
only working some percentage of the time. I don't see the cancellations in the logs you shared above, but even so, it's worth ruling it out.
That seems to have done it (though I have to set it higher than 3000 for it to be reliable). It takes about 4-6 seconds to add an import in our main project. In smaller projects it takes less time. Note that this project is a hair under 80,000 LOC, so it's not like it's huge.
I updated gopls and ironically now I'm getting the no room in queue
error. Maybe I was getting it before and it just wasn't being printed out, I don't know.
The parse error is weird. Like, the code compiles fine before I add one little line that doesn't change whether or not it compiles. (that's what I was just adding _ = pq.NullTime{}
to ensure it'll compile after I add the line).
I can corfirm having to set it higher than the 3000ms I was using previously as well. On windows, and a different project with module support enabled organize imports took significantly longer.
[Trace - 11:41:14 PM] Received response 'textDocument/codeAction - (9)' in 6463ms.
go list -json
appears to give a decent representation of the things my code is touching.
{
"Dir": "A:\\Projects\\gvs\\VanguardAI\\pkg\\commands",
"ImportPath": "github.com/SteelPhase/VanguardAI/pkg/commands",
"Name": "commands",
"Module": {
"Path": "github.com/SteelPhase/VanguardAI",
"Main": true,
"Dir": "A:\\Projects\\gvs\\VanguardAI",
"GoMod": "A:\\Projects\\gvs\\VanguardAI\\go.mod",
"GoVersion": "1.12"
},
"Match": [
"."
],
"Stale": true,
"StaleReason": "stale dependency: github.com/bwmarrin/discordgo",
"GoFiles": [
"commands.go"
],
"Imports": [
"github.com/bwmarrin/discordgo"
],
"Deps": [
"bufio",
"bytes",
"compress/flate",
"compress/gzip",
"compress/zlib",
"container/list",
"context",
"crypto",
"crypto/aes",
"crypto/cipher",
"crypto/des",
"crypto/dsa",
"crypto/ecdsa",
"crypto/elliptic",
"crypto/hmac",
"crypto/internal/randutil",
"crypto/internal/subtle",
"crypto/md5",
"crypto/rand",
"crypto/rc4",
"crypto/rsa",
"crypto/sha1",
"crypto/sha256",
"crypto/sha512",
"crypto/subtle",
"crypto/tls",
"crypto/x509",
"crypto/x509/pkix",
"encoding",
"encoding/asn1",
"encoding/base64",
"encoding/binary",
"encoding/hex",
"encoding/json",
"encoding/pem",
"errors",
"fmt",
"github.com/bwmarrin/discordgo",
"github.com/gorilla/websocket",
"golang.org/x/crypto/internal/subtle",
"golang.org/x/crypto/nacl/secretbox",
"golang.org/x/crypto/poly1305",
"golang.org/x/crypto/salsa20/salsa",
"hash",
"hash/adler32",
"hash/crc32",
"image",
"image/color",
"image/internal/imageutil",
"image/jpeg",
"image/png",
"internal/bytealg",
"internal/cpu",
"internal/fmtsort",
"internal/nettrace",
"internal/poll",
"internal/race",
"internal/singleflight",
"internal/syscall/windows",
"internal/syscall/windows/registry",
"internal/syscall/windows/sysdll",
"internal/testlog",
"internal/x/crypto/chacha20poly1305",
"internal/x/crypto/cryptobyte",
"internal/x/crypto/cryptobyte/asn1",
"internal/x/crypto/curve25519",
"internal/x/crypto/hkdf",
"internal/x/crypto/internal/chacha20",
"internal/x/crypto/poly1305",
"internal/x/net/dns/dnsmessage",
"internal/x/net/http/httpguts",
"internal/x/net/http/httpproxy",
"internal/x/net/http2/hpack",
"internal/x/net/idna",
"internal/x/text/secure/bidirule",
"internal/x/text/transform",
"internal/x/text/unicode/bidi",
"internal/x/text/unicode/norm",
"io",
"io/ioutil",
"log",
"math",
"math/big",
"math/bits",
"math/rand",
"mime",
"mime/multipart",
"mime/quotedprintable",
"net",
"net/http",
"net/http/httptrace",
"net/http/internal",
"net/textproto",
"net/url",
"os",
"path",
"path/filepath",
"reflect",
"regexp",
"regexp/syntax",
"runtime",
"runtime/internal/atomic",
"runtime/internal/math",
"runtime/internal/sys",
"sort",
"strconv",
"strings",
"sync",
"sync/atomic",
"syscall",
"time",
"unicode",
"unicode/utf16",
"unicode/utf8",
"unsafe"
]
}
@natefinch and @SteelPhase : Can you time goimports
on the command line and report if it is the same or faster than gopls
's import organization? If there are cases where gopls
is significantly slower than goimports
, that's definitely a gopls
bug.
Also, @natefinch, could you provide a repro case for code that compiles, but where gopls
reports a parse error? I have not seen that happen before.
I have the same issue with newest gopls. Go to definition doesn't work most of the time. Example https://github.com/gohugoio/hugo/blob/master/minifiers/minifiers.go#L66
I'm not getting go to definitions either and this is the log
[Info - 5:40:28 AM] Build info
----------
no module information, gopls not built in module mode
Go info
-------
go version go1.12.4 darwin/amd64
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/johndoe/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Volumes/Home/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.12.4/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.12.4/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/w9/7tlszcbs3msddknxvpp64gwc0000gn/T/go-build049672644=/tmp/go-build -gno-record-gcc-switches -fno-common"
[Error - 5:40:29 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:30 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:30 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:30 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:31 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:31 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:32 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:32 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:32 AM] Request textDocument/codeAction failed.
Message: no file information for file:///Volumes/Home/code/dexol/daemon/services/api/api.go
Code: 0
[Error - 5:40:33 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:33 AM] unable to check package for file:///Volumes/Home/code/dexol/daemon/services/api/api.go: /Volumes/Home/code/dexol/daemon/services/api/api.go: no packages found
[Error - 5:40:33 AM] Request textDocument/documentLink failed.
Message: no AST for file:///Volumes/Home/code/dexol/daemon/services/api/api.go
Code: 0
I can't figure out why it says no module information, gopls not built in module mode
, since my project does have go.mod, go.sum
, although they're not at the root of the git repo.
That message is specifically related to gopls. Gopls will print out no module information, gopls not built in module mode
when gopls version
is run. It should not affect anything negatively.
Change https://golang.org/cl/181317 mentions this issue: internal/lsp: improve error handling while parsing
Can people check if the errors still happen on master?
@muirrn Hi, I just tried master version and and at least for me go to definition is working fine 👍
Still not working for me on version
[Info - 5:14:33 AM] Build info
----------
version v0.0.1-20190607+alpha, built in $GOPATH mode
Just updated go tools via VSCode, so not sure if that's the master you were referring to.
@jbrodriguez your error looks a bit different. Are you using GOPATH or modules? If modules, does your module have a go.mod file?
I'm using modules.
This project https://github.com/jbrodriguez/unbalance, uses modules and this is the gopls output
[Info - 12:29:29 PM] Build info
----------
version v0.0.1-20190607+alpha, built in $GOPATH mode
Go info
-------
go version go1.12.5 darwin/amd64
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/johndoe/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Volumes/Home/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.12.5/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.12.5/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/w9/7tlszcbs3msddknxvpp64gwc0000gn/T/go-build499635055=/tmp/go-build -gno-record-gcc-switches -fno-common"
[Error - 12:29:31 PM] unable to check package for file:///Volumes/Home/code/unbalance/server/unbalance.go: no packages found for /Volumes/Home/code/unbalance/server/unbalance.go
[Error - 12:29:31 PM] unable to check package for file:///Volumes/Home/code/unbalance/server/unbalance.go: no packages found for /Volumes/Home/code/unbalance/server/unbalance.go
[Error - 12:29:31 PM] failed to deliver diagnostic for file:///Volumes/Home/code/unbalance/no%20packages%20found%20for%20/Volumes/Home/code/unbalance/server/unbalance.go: stat /Volumes/Home/code/unbalance/no packages found for /Volumes/Home/code/unbalance/server/unbalance.go: no such file or directory
[Error - 12:29:32 PM] unable to check package for file:///Volumes/Home/code/unbalance/server/unbalance.go: no packages found for /Volumes/Home/code/unbalance/server/unbalance.go
[Error - 12:29:33 PM] unable to check package for file:///Volumes/Home/code/unbalance/server/unbalance.go: no packages found for /Volumes/Home/code/unbalance/server/unbalance.go
[Error - 12:29:33 PM] unable to check package for file:///Volumes/Home/code/unbalance/server/unbalance.go: no packages found for /Volumes/Home/code/unbalance/server/unbalance.go
[Error - 12:29:34 PM] unable to check package for file:///Volumes/Home/code/unbalance/server/unbalance.go: no packages found for /Volumes/Home/code/unbalance/server/unbalance.go
[Error - 12:29:34 PM] Request textDocument/documentLink failed.
Message: no AST for file:///Volumes/Home/code/unbalance/server/unbalance.go
Code: 0
These are my VSCode go settings
"go.lintTool": "golangci-lint",
"go.lintFlags": [
"--enable-all",
"-D",
"maligned",
"-D",
"gochecknoglobals",
"-D",
"prealloc",
"-D",
"gosec",
"-D",
"lll",
"-D",
"gofmt"
],
"go.liveErrors": {
"enabled": true,
"delay": 250
},
"go.alternateTools": {
"go-langserver": "gopls"
},
"go.useLanguageServer": true,
"go.languageServerExperimentalFeatures": {
"format": true,
"autoComplete": true
},
"[go]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
},
"editor.codeActionsOnSaveTimeout": 30000
},
"go.buildOnSave": "package",
"go.lintOnSave": "package",
"go.docsTool": "gogetdoc",
@jbrodriguez: It does seem like your error is different - looks like gopls
is unable to read a file. Do you mind opening this as a separate issue?
I use gopls in vscode. when go.mod file include tools, that not working, remove works for me
Change https://golang.org/cl/183718 mentions this issue: internal/jsonrpc2: change the concurrency strategy
I'm not sure I understand why this was closed.
My intention is not to be rude, because things have certainly improved. Unfortunately, I still don't get any pre-import autocompletion in VSCode, auto-import doesn't happen unless there's no errors in the file (which is super difficult to do without autocomplete of the thing I am trying to import), VSCode intermittently reports weird type errors that aren't real (which go away if I restart VSCode), and things are generally very sluggish (often taking 30-60s to show output in VSCode).
I have been regularly updating to the current gopls, including this morning, and my experience feels like we're still short of imports and go-to-definition working correctly.
Edit: Here's a (slightly redacted) screenshot from right now (which I had to wait for gopls for 90s for before I could take it) where two packages that previously used to auto-import are stuck as undefined symbols:
(context
coming from stdlib, assert
coming from within my project, both previously auto-imported fine)
Sorry, I missed the request to recheck this, but the experience is still very poor.
This still regularly fails for me with the tip of gopls when adding a line that should add an import.
add _, _ = uuid.NewV4()
to many files, and gopls will often fail.... this is with codeActionsOnSaveTimeout
set to 30000 (30 seconds).
oddly, sometimes I go back to the same file and add a space at the end of the file and resave, and gopls adds the import almost instantly. I don't know what the difference is.
@bmhatfield: We don't yet support pre-import autocomplete (https://github.com/golang/go/issues/31906), but imports and go-to-definition should certainly be working. Are you seeing more problems with definitions past the issue you filed about the module cache? Do you mind filing a separate issue for the type errors that aren't real? Imports should be added no matter what state the file is in (formatting fails only if a file fails contains parse errors).
@natefinch: It seems like in your case, gopls
is getting stuck in some broken state. What kinds of errors do you see in the logs when this happens?
I will re-open this issue, but with the statement that, due to the high frequency of changes to gopls
, most of the information collected at the beginning of the discussion is not likely to apply to the issues seen right now. We also are in the process of rewriting the cache layer, so hopefully many of these problems will be resolved through that rewrite.
[Info - 11:28:34 AM] Build info
----------
golang.org/x/tools/cmd/gopls v0.1.0-cmd.gopls
golang.org/x/tools@v0.0.0-20190618233249-04b924abaa25 h1:waeaOEG3M5B3aL+j+hqXDXpBOqBEYHVNApmp5na1jwQ=
golang.org/x/sync@v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
Go info
-------
go version go1.12.4 darwin/amd64
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/finchnat/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/finchnat"
GOPROXY=""
GORACE=""
GOROOT="/Users/finchnat/sdk/go1.12.4"
GOTMPDIR=""
GOTOOLDIR="/Users/finchnat/sdk/go1.12.4/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/finchnat/mcpp/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ch/4d1vgsv17jq0b3yfmnkl9thdk0jm7d/T/go-build719393068=/tmp/go-build -gno-record-gcc-switches -fno-common"
[Error - 11:29:29 AM] AST for /Users/finchnat/mcpp/untitled:Untitled-1 has an invalid position
[Error - 11:29:30 AM] unable to check package for file:///Users/finchnat/mcpp/-: go/packages.Load: no packages found for /Users/finchnat/mcpp/-
[Error - 11:29:30 AM] Could not find tokens for diagnostic: file:///Users/finchnat/mcpp/-
[Error - 11:40:34 AM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Error - 11:40:38 AM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Error - 12:50:19 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
panic: interface conversion: types.Object is nil, not *types.Func
goroutine 5347 [running]:
golang.org/x/tools/go/analysis/passes/printf.maybePrintfWrapper(0xc008501cc0, 0x1762b20, 0xc004b0fc20, 0x0)
/Users/finchnat/pkg/mod/golang.org/x/tools@v0.0.0-20190618233249-04b924abaa25/go/analysis/passes/printf/printf.go:115 +0x30c
golang.org/x/tools/go/analysis/passes/printf.findPrintfLike(0xc0051c1ea0, 0x10, 0x15dd100, 0x1d6, 0x1d7)
/Users/finchnat/pkg/mod/golang.org/x/tools@v0.0.0-20190618233249-04b924abaa25/go/analysis/passes/printf/printf.go:154 +0xf2
golang.org/x/tools/go/analysis/passes/printf.run(0xc0051c1ea0, 0xc004b29d00, 0xc000028350, 0x4, 0x10)
/Users/finchnat/pkg/mod/golang.org/x/tools@v0.0.0-20190618233249-04b924abaa25/go/analysis/passes/printf/printf.go:83 +0x2b
golang.org/x/tools/internal/lsp/source.(*Action).execOnce(0xc009c56a80, 0x1764520, 0xc0096da080, 0xc000210b00, 0xc00ab4d6c8, 0x10)
/Users/finchnat/pkg/mod/golang.org/x/tools@v0.0.0-20190618233249-04b924abaa25/internal/lsp/source/analysis.go:166 +0x82a
golang.org/x/tools/internal/lsp/source.(*Action).exec.func1()
/Users/finchnat/pkg/mod/golang.org/x/tools@v0.0.0-20190618233249-04b924abaa25/internal/lsp/source/analysis.go:100 +0x4e
sync.(*Once).Do(0xc009c56a80, 0xc00ab4d708)
/Users/finchnat/sdk/go1.12.4/src/sync/once.go:44 +0xb3
golang.org/x/tools/internal/lsp/source.(*Action).exec(0xc009c56a80, 0x1764520, 0xc0096da080, 0xc000210b00, 0x0, 0xc00ab4d790)
/Users/finchnat/pkg/mod/golang.org/x/tools@v0.0.0-20190618233249-04b924abaa25/internal/lsp/source/analysis.go:99 +0x8b
golang.org/x/tools/internal/lsp/source.execAll.func1(0x8, 0x16afb88)
/Users/finchnat/pkg/mod/golang.org/x/tools@v0.0.0-20190618233249-04b924abaa25/internal/lsp/source/analysis.go:91 +0x48
golang.org/x/sync/errgroup.(*Group).Go.func1(0xc008a19ef0, 0xc003a47920)
/Users/finchnat/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:57 +0x57
created by golang.org/x/sync/errgroup.(*Group).Go
/Users/finchnat/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:54 +0x66
[Info - 12:50:30 PM] Connection to server got closed. Server will restart.
[Error - 12:50:30 PM] Request textDocument/codeAction failed.
Error: Connection got disposed.
at Object.dispose (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-jsonrpc/lib/main.js:876:25)
at Object.dispose (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-languageclient/lib/client.js:57:35)
at LanguageClient.handleConnectionClosed (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-languageclient/lib/client.js:2036:42)
at LanguageClient.handleConnectionClosed (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-languageclient/lib/main.js:127:15)
at closeHandler (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-languageclient/lib/client.js:2023:18)
at CallbackList.invoke (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-jsonrpc/lib/events.js:62:39)
at Emitter.fire (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-jsonrpc/lib/events.js:120:36)
at closeHandler (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-jsonrpc/lib/main.js:226:26)
at CallbackList.invoke (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-jsonrpc/lib/events.js:62:39)
at Emitter.fire (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-jsonrpc/lib/events.js:120:36)
at StreamMessageReader.fireClose (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-jsonrpc/lib/messageReader.js:111:27)
at Socket.listen.readable.on (/Users/finchnat/.vscode/extensions/ms-vscode.go-0.11.0/node_modules/vscode-jsonrpc/lib/messageReader.js:151:46)
at Socket.emit (events.js:187:15)
at Pipe.Socket._destroy._handle.close [as _onclose] (net.js:596:12)
[Info - 12:50:33 PM] Build info
----------
version v0.1.0-cmd.gopls, built in $GOPATH mode
Go info
-------
go version go1.12.4 darwin/amd64
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/finchnat/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/finchnat"
GOPROXY=""
GORACE=""
GOROOT="/Users/finchnat/sdk/go1.12.4"
GOTMPDIR=""
GOTOOLDIR="/Users/finchnat/sdk/go1.12.4/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/finchnat/mcpp/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ch/4d1vgsv17jq0b3yfmnkl9thdk0jm7d/T/go-build665288222=/tmp/go-build -gno-record-gcc-switches -fno-common"
[Error - 12:50:40 PM] unable to check package for file:///Users/finchnat/mcpp/untitled:Untitled-1: go/packages.Load: no packages found for /Users/finchnat/mcpp/untitled:Untitled-1
[Error - 12:50:42 PM] unable to check package for file:///Users/finchnat/mcpp/untitled:Untitled-1: go/packages.Load: no packages found for /Users/finchnat/mcpp/untitled:Untitled-1
[Error - 12:51:07 PM] Request textDocument/codeAction failed.
Message: /Users/finchnat/mcpp/data/policy_store.go:21:2: expected statement, found '='
Code: 0
[Info - 12:51:11 PM] no completions found for file:///Users/finchnat/mcpp/data/policy_store.go:20:10: cannot resolve uuid
[Error - 12:51:11 PM] Request textDocument/codeAction failed.
Message: /Users/finchnat/mcpp/data/policy_store.go:22:2: expected selector or type assertion, found 'return' (and 1 more errors)
Code: 0
[Info - 12:51:11 PM] no completions found for file:///Users/finchnat/mcpp/data/policy_store.go:20:11: cannot resolve uuid
[Info - 12:51:12 PM] no completions found for file:///Users/finchnat/mcpp/data/policy_store.go:20:12: cannot resolve uuid
[Info - 12:51:12 PM] no completions found for file:///Users/finchnat/mcpp/data/policy_store.go:20:13: cannot resolve uuid
[Info - 12:51:12 PM] no completions found for file:///Users/finchnat/mcpp/data/policy_store.go:20:14: cannot resolve uuid
[Info - 12:52:29 PM] no completions found for file:///Users/finchnat/mcpp/data/policy_store.go:20:14: cannot resolve uuid
[Info - 12:52:33 PM] no signature help for file:///Users/finchnat/mcpp/data/policy_store.go:20:17 : cannot find an enclosing function
[Info - 12:52:35 PM] no signature help for file:///Users/finchnat/mcpp/data/policy_store.go:20:9 : cannot find an enclosing function
[Info - 12:52:36 PM] no signature help for file:///Users/finchnat/mcpp/data/policy_store.go:20:5 : cannot find an enclosing function
[Info - 12:52:38 PM] no signature help for file:///Users/finchnat/mcpp/data/policy_store.go:20:3 : cannot find an enclosing function
[Error - 12:52:40 PM] no highlight for /Users/finchnat/mcpp/data/policy_store.go:21:3: /Users/finchnat/mcpp/data/policy_store.go:21:3 is not an identifier
[Info - 12:52:40 PM] no signature help for file:///Users/finchnat/mcpp/data/policy_store.go:20:2 : cannot find an enclosing function
[Info - 12:52:44 PM] no signature help for file:///Users/finchnat/mcpp/data/policy_store.go:20:4 : cannot find an enclosing function
[Info - 12:52:44 PM] no signature help for file:///Users/finchnat/mcpp/data/policy_store.go:20:5 : cannot find an enclosing function
[Error - 12:52:49 PM] Request textDocument/hover failed.
Message: no object for ident uuid
Code: 0
[Error - 12:54:05 PM] Request textDocument/hover failed.
Message: no object for ident uuid
Code: 0
[Error - 12:54:07 PM] Request textDocument/hover failed.
Message: no object for ident NewV4
Code: 0
[Error - 1:55:43 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
Thanks for the logs! Seems like a lot is going on, in particular, that gopls
is getting sent files without a .go
extension. In this example, are you creating a new file? Also, can you add -rpc.trace
to your "go.languageServerFlags"
VSCode setting? That will give more detailed logs. Here, it's only the errors that were logged.
Also, it looks like you're using a version of gopls
from 6/18/2019 - do you mind upgrading to the latest on master? We made a significant number of changes recently and we will probably tag a new version soon.
That's weird, I ran this after running go get -u golang.org/x/tools/cmd/gopls
I'll repro again and hope to get a better log with rpc.trace
To get from master you will have to do go get -u golang.org/x/tools/gopls@master
- we began versioning gopls
so that won't get the latest changes from tip.
I didn't notice the @master
thing - I will do that as well and check how things are working for me as well.
Tried it again on master, looks like maybe it's just timing out?
[Trace - 4:37:37 PM] Received response 'textDocument/documentLink - (46)' in 33564ms.
[Trace - 3:59:13 PM] Sending request 'initialize - (0)'.
Params: {"processId":44866,"rootPath":"/Users/finchnat/archimedes","rootUri":"file:///Users/finchnat/archimedes","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"executeCommand":{"dynamicRegistration":true},"configuration":true,"workspaceFolders":true},"textDocument":{"publishDiagnostics":{"relatedInformation":true},"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"contextSupport":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"]}},"definition":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"typeDefinition":{"dynamicRegistration":true},"implementation":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":5000,"lineFoldingOnly":true}}},"initializationOptions":{"funcSnippetEnabled":false,"gocodeCompletionEnabled":true},"trace":"off","workspaceFolders":[{"uri":"file:///Users/finchnat/archimedes","name":"archimedes"}]}
[Trace - 3:59:14 PM] Received response 'initialize - (0)' in 1092ms.
Params: {"capabilities":{"textDocumentSync":{"openClose":true,"change":2,"save":{}},"hoverProvider":true,"completionProvider":{"triggerCharacters":["."]},"signatureHelpProvider":{"triggerCharacters":["(",","]},"definitionProvider":true,"referencesProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"codeActionProvider":true,"documentFormattingProvider":true,"renameProvider":true,"documentLinkProvider":{},"typeDefinitionProvider":true,"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":"workspace/didChangeWorkspaceFolders"}}},"custom":null}
[Trace - 3:59:14 PM] Sending notification 'initialized'.
Params: {}
[Trace - 3:59:14 PM] Received request 'client/registerCapability - (1)'.
Params: {"registrations":[{"id":"workspace/didChangeConfiguration","method":"workspace/didChangeConfiguration"},{"id":"workspace/didChangeWorkspaceFolders","method":"workspace/didChangeWorkspaceFolders"}]}
[Trace - 3:59:14 PM] Sending response 'client/registerCapability - (1)' in 2ms.
Params: {}
[Trace - 3:59:14 PM] Received request 'workspace/configuration - (2)'.
Params: {"items":[{"scopeUri":"file:///Users/finchnat/archimedes","section":"gopls"}]}
[Trace - 3:59:14 PM] Sending response 'workspace/configuration - (2)' in 1ms.
Params: [null]
[Trace - 3:59:18 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"Build info\n----------\ngolang.org/x/tools/gopls v0.1.0\n golang.org/x/tools/gopls@v0.0.0-20190627182818-9947fec5c3ab h1:ZLA7T3BdcYvpyHqYHyEIVb2sEqIJCS7kF/3MO79M/hE=\n golang.org/x/sync@v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=\n golang.org/x/tools@v0.0.0-20190627182818-9947fec5c3ab h1:uOzhX2fm3C4BmBwW2a7lnJQD7qel2+4uhmTc8czKBCU=\n\nGo info\n-------\ngo version go1.12.4 darwin/amd64\n\nGOARCH=\"amd64\"\nGOBIN=\"\"\nGOCACHE=\"/Users/finchnat/Library/Caches/go-build\"\nGOEXE=\"\"\nGOFLAGS=\"\"\nGOHOSTARCH=\"amd64\"\nGOHOSTOS=\"darwin\"\nGOOS=\"darwin\"\nGOPATH=\"/Users/finchnat\"\nGOPROXY=\"\"\nGORACE=\"\"\nGOROOT=\"/Users/finchnat/sdk/go1.12.4\"\nGOTMPDIR=\"\"\nGOTOOLDIR=\"/Users/finchnat/sdk/go1.12.4/pkg/tool/darwin_amd64\"\nGCCGO=\"gccgo\"\nCC=\"clang\"\nCXX=\"clang++\"\nCGO_ENABLED=\"1\"\nGOMOD=\"/Users/finchnat/archimedes/go.mod\"\nCGO_CFLAGS=\"-g -O2\"\nCGO_CPPFLAGS=\"\"\nCGO_CXXFLAGS=\"-g -O2\"\nCGO_FFLAGS=\"-g -O2\"\nCGO_LDFLAGS=\"-g -O2\"\nPKG_CONFIG=\"pkg-config\"\nGOGCCFLAGS=\"-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ch/4d1vgsv17jq0b3yfmnkl9thdk0jm7d/T/go-build487934962=/tmp/go-build -gno-record-gcc-switches -fno-common\"\n"}
[Info - 3:59:18 PM] Build info
----------
golang.org/x/tools/gopls v0.1.0
golang.org/x/tools/gopls@v0.0.0-20190627182818-9947fec5c3ab h1:ZLA7T3BdcYvpyHqYHyEIVb2sEqIJCS7kF/3MO79M/hE=
golang.org/x/sync@v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
golang.org/x/tools@v0.0.0-20190627182818-9947fec5c3ab h1:uOzhX2fm3C4BmBwW2a7lnJQD7qel2+4uhmTc8czKBCU=
Go info
-------
go version go1.12.4 darwin/amd64
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/finchnat/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/finchnat"
GOPROXY=""
GORACE=""
GOROOT="/Users/finchnat/sdk/go1.12.4"
GOTMPDIR=""
GOTOOLDIR="/Users/finchnat/sdk/go1.12.4/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/finchnat/archimedes/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/ch/4d1vgsv17jq0b3yfmnkl9thdk0jm7d/T/go-build487934962=/tmp/go-build -gno-record-gcc-switches -fno-common"
[Trace - 3:59:18 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","languageId":"go","version":1,"text":"package auth\n\n/*\nThis file copied from github.com/volatiletech/authboss/auth/\n*/\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"net/http\"\n\t\"net/url\"\n\n\t\"golang.org/x/crypto/bcrypt\"\n\n\t\"github.com/Mattel/archimedes\"\n\t\"github.com/Mattel/archimedes/db/gnorm/loginredirects\"\n\t\"github.com/volatiletech/authboss\"\n)\n\nconst (\n\t// PageLogin is for identifying the login page for parsing & validation\n\tPageLogin = \"login\"\n\n\t// RedirectURIParam is the url parameter\n\tRedirectURIParam = \"redir\"\n\n\t// AttemptsRemain represents the number of failed authentications that are\n\t// still allowed before a user's account becomes locked for the configured\n\t// duration.\n\tAttemptsRemain = \"attempts_remain\"\n)\n\n// Auth module\ntype Auth struct {\n\t*authboss.Authboss\n\tDB *sql.DB\n}\n\n// Init module\nfunc (a *Auth) Init(ab *authboss.Authboss) (err error) {\n\ta.Authboss = ab\n\n\tif err = a.Authboss.Config.Core.ViewRenderer.Load(PageLogin); err != nil {\n\t\treturn err\n\t}\n\n\ta.Authboss.Config.Core.Router.Get(\"/login\", a.Authboss.Core.ErrorHandler.Wrap(a.LoginGet))\n\ta.Authboss.Config.Core.Router.Post(\"/login\", a.Authboss.Core.ErrorHandler.Wrap(a.LoginPost))\n\n\treturn nil\n}\n\n// LoginGet simply displays the login form\nfunc (a *Auth) LoginGet(w http.ResponseWriter, r *http.Request) error {\n\t// This is the Archimedes addition to the Authboss login handler.\n\t// We need to pass on the redirect handler so we can redirect the user later.\n\tdata := authboss.HTMLData{}\n\tif red, ok := r.URL.Query()[RedirectURIParam]; ok && len(red) > 0 {\n\t\tdata[RedirectURIParam] = red[0]\n\t}\n\treturn a.Core.Responder.Respond(w, r, http.StatusOK, PageLogin, data)\n}\n\n// LoginPost attempts to validate the credentials passed in\n// to log in a user.\nfunc (a *Auth) LoginPost(w http.ResponseWriter, r *http.Request) error {\n\tlogger := a.RequestLogger(r)\n\n\tvalidatable, err := a.Authboss.Core.BodyReader.Read(PageLogin, r)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tpostRedirs := r.URL.Query()[RedirectURIParam]\n\tvar postRedirect string\n\tif len(postRedirs) > 0 {\n\t\tpostRedirect = postRedirs[0]\n\t}\n\n\tif postRedirect != \"\" {\n\t\tlogger.Infof(\"postRedirect: %s\", postRedirect)\n\t\tu, err := url.Parse(postRedirect)\n\t\tif err != nil {\n\t\t\tlogger.Infof(\"failed to parse post login redirect: %v\", err)\n\t\t\tdata := authboss.HTMLData{\n\t\t\t\tauthboss.DataErr: archimedes.InvalidRedirectErr.Error(),\n\t\t\t\tarchimedes.ErrorCode: archimedes.InvalidRedirectErr.Code,\n\t\t\t}\n\t\t\treturn a.Authboss.Core.Responder.Respond(w, r, http.StatusBadRequest, PageLogin, data)\n\t\t}\n\t\t_, err = loginredirects.One(r.Context(), a.DB, loginredirects.RedirectCol.Equals(u.Path))\n\t\tif err != nil {\n\t\t\tlogger.Infof(\"unrecognized redirect: %v\", u)\n\t\t\tdata := authboss.HTMLData{\n\t\t\t\tauthboss.DataErr: archimedes.InvalidRedirectErr.Error(),\n\t\t\t\tarchimedes.ErrorCode: archimedes.InvalidRedirectErr.Code,\n\t\t\t}\n\t\t\treturn a.Authboss.Core.Responder.Respond(w, r, http.StatusBadRequest, PageLogin, data)\n\t\t}\n\t}\n\n\t// Skip validation since all the validation happens during the database lookup and\n\t// password check.\n\tcreds := authboss.MustHaveUserValues(validatable)\n\tpid := creds.GetPID()\n\tpidUser, err := a.Authboss.Storage.Server.Load(r.Context(), pid)\n\tif err == authboss.ErrUserNotFound {\n\t\tlogger.Infof(\"failed to load user requested by pid: %s\", pid)\n\t\tdata := authboss.HTMLData{\n\t\t\tauthboss.DataErr: archimedes.BadUserOrPasswordErr.Error(),\n\t\t\tRedirectURIParam: postRedirect,\n\t\t\tarchimedes.ErrorCode: archimedes.BadUserOrPasswordErr.Code,\n\t\t}\n\t\treturn a.Authboss.Core.Responder.Respond(w, r, http.StatusOK, PageLogin, data)\n\t} else if err != nil {\n\t\treturn err\n\t}\n\n\tauthUser := authboss.MustBeAuthable(pidUser)\n\tpassword := authUser.GetPassword()\n\n\tr = r.WithContext(context.WithValue(r.Context(), authboss.CTXKeyUser, pidUser))\n\n\tvar handled bool\n\terr = bcrypt.CompareHashAndPassword([]byte(password), []byte(creds.GetPassword()))\n\tif err != nil {\n\t\thandled, err = a.Authboss.Events.FireAfter(authboss.EventAuthFail, w, r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t} else if handled {\n\t\t\treturn nil\n\t\t}\n\n\t\tlockableUser := authboss.MustBeLockable(pidUser)\n\t\tattempts := lockableUser.GetAttemptCount()\n\t\tattemptsRemain := a.Authboss.Config.Modules.LockAfter - attempts\n\n\t\tlogger.Infof(\"user %s failed to log in\", pid)\n\t\tdata := authboss.HTMLData{\n\t\t\tauthboss.DataErr: archimedes.BadUserOrPasswordErr.Error(),\n\t\t\tAttemptsRemain: attemptsRemain,\n\t\t\tarchimedes.ErrorCode: archimedes.BadUserOrPasswordErr.Code,\n\t\t}\n\t\treturn a.Authboss.Core.Responder.Respond(w, r, http.StatusOK, PageLogin, data)\n\t}\n\n\tr = r.WithContext(context.WithValue(r.Context(), authboss.CTXKeyValues, validatable))\n\n\thandled, err = a.Events.FireBefore(authboss.EventAuth, w, r)\n\tif err != nil {\n\t\treturn err\n\t} else if handled {\n\t\treturn nil\n\t}\n\n\tlogger.Infof(\"user %s logged in\", pid)\n\tauthboss.PutSession(w, authboss.SessionKey, pid)\n\tauthboss.DelSession(w, authboss.SessionHalfAuthKey)\n\n\thandled, err = a.Authboss.Events.FireAfter(authboss.EventAuth, w, r)\n\tif err != nil {\n\t\treturn err\n\t} else if handled {\n\t\treturn nil\n\t}\n\n\tro := authboss.RedirectOptions{\n\t\tCode: http.StatusTemporaryRedirect,\n\t}\n\tif postRedirect != \"\" {\n\t\tro.RedirectPath = postRedirect\n\t} else {\n\t\tro.RedirectPath = a.Authboss.Paths.AuthLoginOK\n\t}\n\treturn a.Authboss.Core.Redirector.Redirect(w, r, ro)\n}\n"}}
[Trace - 3:59:18 PM] Sending request 'textDocument/documentSymbol - (1)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 3:59:49 PM] Sending request 'textDocument/codeAction - (2)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":43,"character":12},"end":{"line":43,"character":12}},"context":{"diagnostics":[]}}
[Trace - 3:59:49 PM] Received response 'textDocument/documentSymbol - (1)' in 34897ms.
Params: [{"name":"PageLogin","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":21,"character":1},"end":{"line":21,"character":10}}},{"name":"RedirectURIParam","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":17}}},{"name":"AttemptsRemain","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":15}}},{"name":"Auth","detail":"struct{...}","kind":23,"range":{"start":{"line":33,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":33,"character":5},"end":{"line":33,"character":9}},"children":[{"name":"Authboss","detail":"*authboss.Authboss","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}}},{"name":"DB","detail":"*sql.DB","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":11}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":3}}},{"name":"Init","detail":"(ab *authboss.Authboss)","kind":6,"range":{"start":{"line":39,"character":0},"end":{"line":50,"character":1}},"selectionRange":{"start":{"line":39,"character":15},"end":{"line":39,"character":19}}},{"name":"LoginGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":53,"character":0},"end":{"line":61,"character":1}},"selectionRange":{"start":{"line":53,"character":15},"end":{"line":53,"character":23}}},{"name":"LoginPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":65,"character":0},"end":{"line":175,"character":1}},"selectionRange":{"start":{"line":65,"character":15},"end":{"line":65,"character":24}}}]}]
[Trace - 3:59:49 PM] Received response 'textDocument/codeAction - (2)' in 34901ms.
Params: {}
[Trace - 3:59:49 PM] Sending request 'textDocument/documentLink - (3)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 3:59:49 PM] Received response 'textDocument/documentLink - (3)' in 34909ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 3:59:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[]}
[Trace - 3:59:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 3:59:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 3:59:50 PM] Sending request 'textDocument/documentLink - (4)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 3:59:50 PM] Received response 'textDocument/documentLink - (4)' in 0ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 4:15:37 PM] Sending request 'textDocument/hover - (5)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":26,"character":39}}
[Error - 4:15:37 PM] send textDocument/hover#5 no identifier found
[Error - 4:15:37 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Trace - 4:15:38 PM] Sending request 'textDocument/hover - (6)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":26,"character":48}}
[Error - 4:15:38 PM] send textDocument/hover#6 no identifier found
[Error - 4:15:38 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Trace - 4:15:41 PM] Sending request 'textDocument/codeAction - (7)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":28,"character":13},"end":{"line":28,"character":13}},"context":{"diagnostics":[]}}
[Trace - 4:15:41 PM] Received response 'textDocument/codeAction - (7)' in 2ms.
Params: {}
[Trace - 4:15:42 PM] Sending request 'textDocument/hover - (8)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":27,"character":66}}
[Error - 4:15:42 PM] send textDocument/hover#8 no identifier found
[Error - 4:15:42 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Trace - 4:36:46 PM] Sending request 'textDocument/documentLink - (9)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:36:46 PM] Received response 'textDocument/documentLink - (9)' in 0ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 4:36:46 PM] Sending request 'textDocument/codeAction - (10)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 4:36:46 PM] Received response 'textDocument/codeAction - (10)' in 3ms.
Params: {}
[Trace - 4:36:46 PM] Sending request 'textDocument/codeAction - (11)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":28,"character":13},"end":{"line":28,"character":13}},"context":{"diagnostics":[]}}
[Trace - 4:36:46 PM] Received response 'textDocument/codeAction - (11)' in 3ms.
Params: {}
[Trace - 4:36:49 PM] Sending request 'textDocument/hover - (12)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":20,"character":61}}
[Error - 4:36:49 PM] send textDocument/hover#12 no identifier found
[Error - 4:36:49 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Trace - 4:36:51 PM] Sending request 'textDocument/codeAction - (13)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":39,"character":56},"end":{"line":39,"character":56}},"context":{"diagnostics":[]}}
[Trace - 4:36:51 PM] Received response 'textDocument/codeAction - (13)' in 3ms.
Params: {}
[Trace - 4:36:51 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":2},"contentChanges":[{"range":{"start":{"line":39,"character":56},"end":{"line":39,"character":56}},"rangeLength":0,"text":"\n\t"}]}
[Trace - 4:36:51 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":3},"contentChanges":[{"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":1}},"rangeLength":0,"text":"\\"}]}
[Trace - 4:36:51 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"failed to run analyses for file:///Users/finchnat/archimedes/auth/auth.go: context canceled"}
[Trace - 4:36:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":1}},"severity":1,"source":"LSP","message":"expected statement, found 'ILLEGAL'"}]}
[Trace - 4:36:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[]}
[Trace - 4:36:51 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:52 PM] Sending request 'textDocument/codeAction - (14)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":40,"character":2},"end":{"line":40,"character":2}},"context":{"diagnostics":[]}}
[Error - 4:36:52 PM] send textDocument/codeAction#14 /Users/finchnat/archimedes/auth/auth.go:41:2: illegal character U+005C '\'
[Error - 4:36:52 PM] Request textDocument/codeAction failed.
Message: /Users/finchnat/archimedes/auth/auth.go:41:2: illegal character U+005C '\'
Code: 0
[Trace - 4:36:52 PM] Sending request 'textDocument/documentSymbol - (15)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:36:52 PM] Received response 'textDocument/documentSymbol - (15)' in 0ms.
Params: [{"name":"PageLogin","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":21,"character":1},"end":{"line":21,"character":10}}},{"name":"RedirectURIParam","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":17}}},{"name":"AttemptsRemain","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":15}}},{"name":"Auth","detail":"struct{...}","kind":23,"range":{"start":{"line":33,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":33,"character":5},"end":{"line":33,"character":9}},"children":[{"name":"Authboss","detail":"*authboss.Authboss","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}}},{"name":"DB","detail":"*sql.DB","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":11}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":3}}},{"name":"Init","detail":"(ab *authboss.Authboss)","kind":6,"range":{"start":{"line":39,"character":0},"end":{"line":51,"character":1}},"selectionRange":{"start":{"line":39,"character":15},"end":{"line":39,"character":19}}},{"name":"LoginGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":54,"character":0},"end":{"line":62,"character":1}},"selectionRange":{"start":{"line":54,"character":15},"end":{"line":54,"character":23}}},{"name":"LoginPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":66,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":66,"character":15},"end":{"line":66,"character":24}}}]}]
[Trace - 4:36:52 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":4},"contentChanges":[{"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":2}},"rangeLength":1,"text":""}]}
[Trace - 4:36:52 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[]}
[Trace - 4:36:52 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:52 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:52 PM] Sending request 'textDocument/documentSymbol - (16)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:36:52 PM] Received response 'textDocument/documentSymbol - (16)' in 0ms.
Params: [{"name":"PageLogin","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":21,"character":1},"end":{"line":21,"character":10}}},{"name":"RedirectURIParam","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":17}}},{"name":"AttemptsRemain","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":15}}},{"name":"Auth","detail":"struct{...}","kind":23,"range":{"start":{"line":33,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":33,"character":5},"end":{"line":33,"character":9}},"children":[{"name":"Authboss","detail":"*authboss.Authboss","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}}},{"name":"DB","detail":"*sql.DB","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":11}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":3}}},{"name":"Init","detail":"(ab *authboss.Authboss)","kind":6,"range":{"start":{"line":39,"character":0},"end":{"line":51,"character":1}},"selectionRange":{"start":{"line":39,"character":15},"end":{"line":39,"character":19}}},{"name":"LoginGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":54,"character":0},"end":{"line":62,"character":1}},"selectionRange":{"start":{"line":54,"character":15},"end":{"line":54,"character":23}}},{"name":"LoginPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":66,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":66,"character":15},"end":{"line":66,"character":24}}}]}]
[Trace - 4:36:52 PM] Sending request 'textDocument/documentLink - (17)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:36:52 PM] Received response 'textDocument/documentLink - (17)' in 0ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 4:36:53 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":5},"contentChanges":[{"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":1}},"rangeLength":0,"text":"_"}]}
[Trace - 4:36:53 PM] Sending request 'textDocument/completion - (18)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":2},"context":{"triggerKind":1}}
[Trace - 4:36:53 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":2}},"severity":1,"source":"LSP","message":"cannot use _ as value or type"}]}
[Trace - 4:36:53 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:53 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:53 PM] Received response 'textDocument/completion - (18)' in 2ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 4:36:53 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":6},"contentChanges":[{"range":{"start":{"line":40,"character":2},"end":{"line":40,"character":2}},"rangeLength":0,"text":","}]}
[Trace - 4:36:53 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:53 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:53 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":41,"character":14},"end":{"line":41,"character":16}},"severity":1,"source":"LSP","message":"cannot assign 1 values to 2 variables"}]}
[Trace - 4:36:54 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":7},"contentChanges":[{"range":{"start":{"line":40,"character":3},"end":{"line":40,"character":3}},"rangeLength":0,"text":" "}]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":41,"character":14},"end":{"line":41,"character":16}},"severity":1,"source":"LSP","message":"cannot assign 1 values to 2 variables"}]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:54 PM] Sending request 'textDocument/signatureHelp - (19)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":4}}
[Trace - 4:36:54 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no signature help for file:///Users/finchnat/archimedes/auth/auth.go:40:4 : cannot find an enclosing function"}
[Info - 4:36:54 PM] no signature help for file:///Users/finchnat/archimedes/auth/auth.go:40:4 : cannot find an enclosing function
[Trace - 4:36:54 PM] Received response 'textDocument/signatureHelp - (19)' in 0ms.
Params: {}
[Trace - 4:36:54 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":8},"contentChanges":[{"range":{"start":{"line":40,"character":4},"end":{"line":40,"character":4}},"rangeLength":0,"text":"-"}]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":41,"character":14},"end":{"line":41,"character":16}},"severity":1,"source":"LSP","message":"cannot assign 1 values to 2 variables"}]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:54 PM] Sending request 'textDocument/codeAction - (20)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"context":{"diagnostics":[]}}
[Trace - 4:36:54 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":9},"contentChanges":[{"range":{"start":{"line":40,"character":4},"end":{"line":40,"character":5}},"rangeLength":1,"text":""}]}
[Trace - 4:36:54 PM] Received response 'textDocument/codeAction - (20)' in 3ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/finchnat/archimedes/auth/auth.go":[{"range":{"start":{"line":40,"character":0},"end":{"line":41,"character":0}},"newText":""},{"range":{"start":{"line":41,"character":0},"end":{"line":42,"character":0}},"newText":""},{"range":{"start":{"line":42,"character":0},"end":{"line":42,"character":0}},"newText":"\t_, -a.Authboss = ab\n"}]}}}]
[Trace - 4:36:54 PM] Sending notification '$/cancelRequest'.
Params: {"id":20}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":41,"character":14},"end":{"line":41,"character":16}},"severity":1,"source":"LSP","message":"cannot assign 1 values to 2 variables"}]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:54 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":10},"contentChanges":[{"range":{"start":{"line":40,"character":4},"end":{"line":40,"character":4}},"rangeLength":0,"text":"_"}]}
[Trace - 4:36:54 PM] Sending request 'textDocument/completion - (21)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":5},"context":{"triggerKind":1}}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":1}},"severity":1,"source":"LSP","message":"expected 1 expression"}]}
[Trace - 4:36:54 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:54 PM] Received response 'textDocument/completion - (21)' in 4ms.
Params: {"isIncomplete":false,"items":[{"label":"a","kind":6,"detail":"*Auth","preselect":true,"sortText":"00000","filterText":"a","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"a"}},{"label":"ab","kind":6,"detail":"*authboss.Authboss","sortText":"00001","filterText":"ab","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"ab"}},{"label":"err","kind":6,"detail":"error","sortText":"00002","filterText":"err","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"err"}},{"label":"archimedes","kind":9,"detail":"\"github.com/Mattel/archimedes\"","sortText":"00003","filterText":"archimedes","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"archimedes"}},{"label":"authboss","kind":9,"detail":"\"github.com/volatiletech/authboss\"","sortText":"00004","filterText":"authboss","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"authboss"}},{"label":"bcrypt","kind":9,"detail":"\"golang.org/x/crypto/bcrypt\"","sortText":"00005","filterText":"bcrypt","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"bcrypt"}},{"label":"context","kind":9,"detail":"\"context\"","sortText":"00006","filterText":"context","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"context"}},{"label":"http","kind":9,"detail":"\"net/http\"","sortText":"00007","filterText":"http","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"http"}},{"label":"loginredirects","kind":9,"detail":"\"github.com/Mattel/archimedes/db/gnorm/loginredirects\"","sortText":"00008","filterText":"loginredirects","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"loginredirects"}},{"label":"sql","kind":9,"detail":"\"database/sql\"","sortText":"00009","filterText":"sql","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"sql"}},{"label":"url","kind":9,"detail":"\"net/url\"","sortText":"00010","filterText":"url","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"url"}},{"label":"AttemptsRemain","kind":21,"detail":"string","sortText":"00011","filterText":"AttemptsRemain","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"AttemptsRemain"}},{"label":"Auth","kind":22,"detail":"struct{...}","sortText":"00012","filterText":"Auth","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"Auth"}},{"label":"AuthbossWrapper","kind":22,"detail":"struct{...}","sortText":"00013","filterText":"AuthbossWrapper","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"AuthbossWrapper"}},{"label":"Config","kind":22,"detail":"struct{...}","sortText":"00014","filterText":"Config","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"Config"}},{"label":"ExtraConfig","kind":22,"detail":"struct{...}","sortText":"00015","filterText":"ExtraConfig","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"ExtraConfig"}},{"label":"MailConfig","kind":22,"detail":"struct{...}","sortText":"00016","filterText":"MailConfig","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"MailConfig"}},{"label":"New(c Config)","kind":3,"detail":"(*AuthbossWrapper, error)","sortText":"00017","filterText":"New","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"New(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"NewRouter(pathPrefix string)","kind":3,"detail":"*Router","sortText":"00018","filterText":"NewRouter","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"NewRouter(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"PageLogin","kind":21,"detail":"string","sortText":"00019","filterText":"PageLogin","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"PageLogin"}},{"label":"RedirectURIParam","kind":21,"detail":"string","sortText":"00020","filterText":"RedirectURIParam","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"RedirectURIParam"}},{"label":"Router","kind":22,"detail":"struct{...}","sortText":"00021","filterText":"Router","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"Router"}},{"label":"errorHandler","kind":22,"detail":"struct{...}","sortText":"00022","filterText":"errorHandler","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"errorHandler"}},{"label":"logger","kind":22,"detail":"struct{...}","sortText":"00023","filterText":"logger","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"logger"}},{"label":"append(slice []Type, elems ...Type)","kind":3,"detail":"[]Type","sortText":"00024","filterText":"append","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"append(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"bool","kind":25,"sortText":"00025","filterText":"bool","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"bool"}},{"label":"byte","kind":25,"sortText":"00026","filterText":"byte","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"byte"}},{"label":"cap(v Type)","kind":3,"detail":"int","sortText":"00027","filterText":"cap","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"cap(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"close(c chan\u003c- Type)","kind":3,"sortText":"00028","filterText":"close","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"close(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"complex(r float64, i float64)","kind":3,"detail":"complex128","sortText":"00029","filterText":"complex","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"complex(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"complex128","kind":25,"sortText":"00030","filterText":"complex128","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"complex128"}},{"label":"complex64","kind":25,"sortText":"00031","filterText":"complex64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"complex64"}},{"label":"copy(dst []Type, src []Type)","kind":3,"detail":"int","sortText":"00032","filterText":"copy","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"copy(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"delete(m map[Type]Type1, key Type)","kind":3,"sortText":"00033","filterText":"delete","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"delete(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"error","kind":8,"sortText":"00034","filterText":"error","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"error"}},{"label":"false","kind":21,"sortText":"00035","filterText":"false","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"false"}},{"label":"float32","kind":25,"sortText":"00036","filterText":"float32","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"float32"}},{"label":"float64","kind":25,"sortText":"00037","filterText":"float64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"float64"}},{"label":"imag(c complex128)","kind":3,"detail":"float64","sortText":"00038","filterText":"imag","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"imag(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"int","kind":25,"sortText":"00039","filterText":"int","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"int"}},{"label":"int16","kind":25,"sortText":"00040","filterText":"int16","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"int16"}},{"label":"int32","kind":25,"sortText":"00041","filterText":"int32","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"int32"}},{"label":"int64","kind":25,"sortText":"00042","filterText":"int64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"int64"}},{"label":"int8","kind":25,"sortText":"00043","filterText":"int8","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"int8"}},{"label":"iota","kind":21,"sortText":"00044","filterText":"iota","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"iota"}},{"label":"len(v Type)","kind":3,"detail":"int","sortText":"00045","filterText":"len","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"len(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"make(t Type, size ...int)","kind":3,"detail":"Type","sortText":"00046","filterText":"make","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"make(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"new(Type)","kind":3,"detail":"*Type","sortText":"00047","filterText":"new","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"new(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"nil","kind":6,"sortText":"00048","filterText":"nil","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"nil"}},{"label":"panic(v interface{})","kind":3,"sortText":"00049","filterText":"panic","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"panic(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"print(args ...Type)","kind":3,"sortText":"00050","filterText":"print","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"print(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"println(args ...Type)","kind":3,"sortText":"00051","filterText":"println","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"println(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"real(c complex128)","kind":3,"detail":"float64","sortText":"00052","filterText":"real","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"real(${1})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"recover()","kind":3,"detail":"interface{}","sortText":"00053","filterText":"recover","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"recover()"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"rune","kind":25,"sortText":"00054","filterText":"rune","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"rune"}},{"label":"string","kind":25,"sortText":"00055","filterText":"string","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"string"}},{"label":"true","kind":21,"sortText":"00056","filterText":"true","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"true"}},{"label":"uint","kind":25,"sortText":"00057","filterText":"uint","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"uint"}},{"label":"uint16","kind":25,"sortText":"00058","filterText":"uint16","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"uint16"}},{"label":"uint32","kind":25,"sortText":"00059","filterText":"uint32","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"uint32"}},{"label":"uint64","kind":25,"sortText":"00060","filterText":"uint64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"uint64"}},{"label":"uint8","kind":25,"sortText":"00061","filterText":"uint8","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"uint8"}},{"label":"uintptr","kind":25,"sortText":"00062","filterText":"uintptr","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"newText":"uintptr"}}]}
[Trace - 4:36:54 PM] Sending request 'textDocument/documentLink - (22)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:36:54 PM] Received response 'textDocument/documentLink - (22)' in 0ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 4:36:54 PM] Sending request 'textDocument/codeAction - (23)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"context":{"diagnostics":[]}}
[Error - 4:36:54 PM] send textDocument/codeAction#23 /Users/finchnat/archimedes/auth/auth.go:41:2: expected 1 expression
[Error - 4:36:54 PM] Request textDocument/codeAction failed.
Message: /Users/finchnat/archimedes/auth/auth.go:41:2: expected 1 expression
Code: 0
[Trace - 4:36:54 PM] Sending request 'textDocument/documentSymbol - (24)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:36:54 PM] Received response 'textDocument/documentSymbol - (24)' in 0ms.
Params: [{"name":"PageLogin","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":21,"character":1},"end":{"line":21,"character":10}}},{"name":"RedirectURIParam","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":17}}},{"name":"AttemptsRemain","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":15}}},{"name":"Auth","detail":"struct{...}","kind":23,"range":{"start":{"line":33,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":33,"character":5},"end":{"line":33,"character":9}},"children":[{"name":"Authboss","detail":"*authboss.Authboss","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}}},{"name":"DB","detail":"*sql.DB","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":11}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":3}}},{"name":"Init","detail":"(ab *authboss.Authboss)","kind":6,"range":{"start":{"line":39,"character":0},"end":{"line":51,"character":1}},"selectionRange":{"start":{"line":39,"character":15},"end":{"line":39,"character":19}}},{"name":"LoginGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":54,"character":0},"end":{"line":62,"character":1}},"selectionRange":{"start":{"line":54,"character":15},"end":{"line":54,"character":23}}},{"name":"LoginPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":66,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":66,"character":15},"end":{"line":66,"character":24}}}]}]
[Trace - 4:36:55 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":11},"contentChanges":[{"range":{"start":{"line":40,"character":5},"end":{"line":40,"character":5}},"rangeLength":0,"text":" "}]}
[Trace - 4:36:55 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:55 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:55 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":1},"end":{"line":40,"character":1}},"severity":1,"source":"LSP","message":"expected 1 expression"}]}
[Trace - 4:36:56 PM] Sending request 'textDocument/documentSymbol - (25)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:36:56 PM] Received response 'textDocument/documentSymbol - (25)' in 0ms.
Params: [{"name":"PageLogin","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":21,"character":1},"end":{"line":21,"character":10}}},{"name":"RedirectURIParam","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":17}}},{"name":"AttemptsRemain","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":15}}},{"name":"Auth","detail":"struct{...}","kind":23,"range":{"start":{"line":33,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":33,"character":5},"end":{"line":33,"character":9}},"children":[{"name":"Authboss","detail":"*authboss.Authboss","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}}},{"name":"DB","detail":"*sql.DB","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":11}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":3}}},{"name":"Init","detail":"(ab *authboss.Authboss)","kind":6,"range":{"start":{"line":39,"character":0},"end":{"line":51,"character":1}},"selectionRange":{"start":{"line":39,"character":15},"end":{"line":39,"character":19}}},{"name":"LoginGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":54,"character":0},"end":{"line":62,"character":1}},"selectionRange":{"start":{"line":54,"character":15},"end":{"line":54,"character":23}}},{"name":"LoginPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":66,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":66,"character":15},"end":{"line":66,"character":24}}}]}]
[Trace - 4:36:56 PM] Sending request 'textDocument/documentLink - (26)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:36:56 PM] Received response 'textDocument/documentLink - (26)' in 0ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 4:36:57 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":12},"contentChanges":[{"range":{"start":{"line":40,"character":6},"end":{"line":40,"character":6}},"rangeLength":0,"text":"="}]}
[Trace - 4:36:57 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":41,"character":12},"end":{"line":41,"character":12}},"severity":1,"source":"LSP","message":"expected '==', found '='"}]}
[Trace - 4:36:57 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:57 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:57 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":13},"contentChanges":[{"range":{"start":{"line":40,"character":7},"end":{"line":40,"character":7}},"rangeLength":0,"text":" "}]}
[Trace - 4:36:57 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":41,"character":12},"end":{"line":41,"character":12}},"severity":1,"source":"LSP","message":"expected '==', found '='"}]}
[Trace - 4:36:57 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:57 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":14},"contentChanges":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":8}},"rangeLength":0,"text":"u"}]}
[Trace - 4:36:58 PM] Sending request 'textDocument/completion - (27)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":9},"context":{"triggerKind":1}}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: u"}]}
[Trace - 4:36:58 PM] Received response 'textDocument/completion - (27)' in 5ms.
Params: {"isIncomplete":false,"items":[{"label":"url","kind":9,"detail":"\"net/url\"","sortText":"00010","filterText":"url","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":9}},"newText":"url"}},{"label":"uint","kind":25,"sortText":"00057","filterText":"uint","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":9}},"newText":"uint"}},{"label":"uint16","kind":25,"sortText":"00058","filterText":"uint16","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":9}},"newText":"uint16"}},{"label":"uint32","kind":25,"sortText":"00059","filterText":"uint32","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":9}},"newText":"uint32"}},{"label":"uint64","kind":25,"sortText":"00060","filterText":"uint64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":9}},"newText":"uint64"}},{"label":"uint8","kind":25,"sortText":"00061","filterText":"uint8","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":9}},"newText":"uint8"}},{"label":"uintptr","kind":25,"sortText":"00062","filterText":"uintptr","insertTextFormat":2,"textEdit":{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":9}},"newText":"uintptr"}}]}
[Trace - 4:36:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":15},"contentChanges":[{"range":{"start":{"line":40,"character":9},"end":{"line":40,"character":9}},"rangeLength":0,"text":"u"}]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":10}},"severity":1,"source":"LSP","message":"undeclared name: uu"}]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":16},"contentChanges":[{"range":{"start":{"line":40,"character":10},"end":{"line":40,"character":10}},"rangeLength":0,"text":"i"}]}
[Trace - 4:36:58 PM] Sending request 'textDocument/completion - (28)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":11},"context":{"triggerKind":1}}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":11}},"severity":1,"source":"LSP","message":"undeclared name: uui"}]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received response 'textDocument/completion - (28)' in 5ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 4:36:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":17},"contentChanges":[{"range":{"start":{"line":40,"character":11},"end":{"line":40,"character":11}},"rangeLength":0,"text":"d"}]}
[Trace - 4:36:58 PM] Sending request 'textDocument/completion - (29)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":12},"context":{"triggerKind":1}}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":12}},"severity":1,"source":"LSP","message":"undeclared name: uuid"}]}
[Trace - 4:36:58 PM] Received response 'textDocument/completion - (29)' in 5ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 4:36:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":18},"contentChanges":[{"range":{"start":{"line":40,"character":12},"end":{"line":40,"character":12}},"rangeLength":0,"text":"."}]}
[Trace - 4:36:58 PM] Sending request 'textDocument/completion - (30)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":13},"context":{"triggerKind":2,"triggerCharacter":"."}}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/finchnat/archimedes/auth/auth.go:40:13: cannot resolve uuid"}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":41,"character":12},"end":{"line":41,"character":12}},"severity":1,"source":"LSP","message":"expected '==', found '='"}]}
[Trace - 4:36:58 PM] Received response 'textDocument/completion - (30)' in 5ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 4:36:58 PM] no completions found for file:///Users/finchnat/archimedes/auth/auth.go:40:13: cannot resolve uuid
[Trace - 4:36:58 PM] Sending request 'textDocument/documentLink - (31)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:36:58 PM] Received response 'textDocument/documentLink - (31)' in 0ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 4:36:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":19},"contentChanges":[{"range":{"start":{"line":40,"character":13},"end":{"line":40,"character":13}},"rangeLength":0,"text":"N"}]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":14}},"severity":1,"source":"LSP","message":"undeclared name: uuid"}]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:58 PM] Sending request 'textDocument/completion - (32)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":14},"context":{"triggerKind":1}}
[Trace - 4:36:58 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/finchnat/archimedes/auth/auth.go:40:14: cannot resolve uuid"}
[Trace - 4:36:58 PM] Received response 'textDocument/completion - (32)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 4:36:58 PM] no completions found for file:///Users/finchnat/archimedes/auth/auth.go:40:14: cannot resolve uuid
[Trace - 4:36:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":20},"contentChanges":[{"range":{"start":{"line":40,"character":14},"end":{"line":40,"character":14}},"rangeLength":0,"text":"e"}]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":15}},"severity":1,"source":"LSP","message":"undeclared name: uuid"}]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:58 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":21},"contentChanges":[{"range":{"start":{"line":40,"character":15},"end":{"line":40,"character":15}},"rangeLength":0,"text":"w"}]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":16}},"severity":1,"source":"LSP","message":"undeclared name: uuid"}]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:36:58 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:36:59 PM] Sending request 'textDocument/codeAction - (33)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":40,"character":16},"end":{"line":40,"character":16}},"context":{"diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":16}},"message":"undeclared name: uuid","severity":1,"source":"LSP"}]}}
[Trace - 4:37:32 PM] Received response 'textDocument/codeAction - (33)' in 33421ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/finchnat/archimedes/auth/auth.go":[{"range":{"start":{"line":16,"character":0},"end":{"line":16,"character":0}},"newText":"\t\"github.com/google/uuid\"\n"}]}}},{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/finchnat/archimedes/auth/auth.go":[{"range":{"start":{"line":16,"character":0},"end":{"line":16,"character":0}},"newText":"\t\"github.com/google/uuid\"\n"}]}}}]
[Trace - 4:37:32 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":22},"contentChanges":[{"range":{"start":{"line":40,"character":16},"end":{"line":40,"character":16}},"rangeLength":0,"text":"V"}]}
[Trace - 4:37:32 PM] Sending notification '$/cancelRequest'.
Params: {"id":33}
[Trace - 4:37:32 PM] Sending request 'textDocument/completion - (34)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":17},"context":{"triggerKind":1}}
[Trace - 4:37:32 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":17}},"severity":1,"source":"LSP","message":"undeclared name: uuid"}]}
[Trace - 4:37:32 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:37:32 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:37:32 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/finchnat/archimedes/auth/auth.go:40:17: cannot resolve uuid"}
[Trace - 4:37:32 PM] Received response 'textDocument/completion - (34)' in 33371ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 4:37:32 PM] Sending request 'textDocument/codeAction - (35)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":40,"character":17},"end":{"line":40,"character":17}},"context":{"diagnostics":[]}}
[Info - 4:37:32 PM] no completions found for file:///Users/finchnat/archimedes/auth/auth.go:40:17: cannot resolve uuid
[Trace - 4:37:33 PM] Received response 'textDocument/codeAction - (35)' in 34264ms.
Params: {}
[Trace - 4:37:33 PM] Sending request 'textDocument/documentSymbol - (36)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:37:33 PM] Received response 'textDocument/documentSymbol - (36)' in 34166ms.
Params: [{"name":"PageLogin","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":21,"character":1},"end":{"line":21,"character":10}}},{"name":"RedirectURIParam","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":17}}},{"name":"AttemptsRemain","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":15}}},{"name":"Auth","detail":"struct{...}","kind":23,"range":{"start":{"line":33,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":33,"character":5},"end":{"line":33,"character":9}},"children":[{"name":"Authboss","detail":"*authboss.Authboss","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}}},{"name":"DB","detail":"*sql.DB","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":11}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":3}}},{"name":"Init","detail":"(ab *authboss.Authboss)","kind":6,"range":{"start":{"line":39,"character":0},"end":{"line":51,"character":1}},"selectionRange":{"start":{"line":39,"character":15},"end":{"line":39,"character":19}}},{"name":"LoginGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":54,"character":0},"end":{"line":62,"character":1}},"selectionRange":{"start":{"line":54,"character":15},"end":{"line":54,"character":23}}},{"name":"LoginPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":66,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":66,"character":15},"end":{"line":66,"character":24}}}]}]
[Trace - 4:37:33 PM] Sending request 'textDocument/documentLink - (37)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:37:33 PM] Received response 'textDocument/documentLink - (37)' in 33961ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 4:37:33 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":23},"contentChanges":[{"range":{"start":{"line":40,"character":17},"end":{"line":40,"character":17}},"rangeLength":0,"text":"4"}]}
[Trace - 4:37:33 PM] Sending notification '$/cancelRequest'.
Params: {"id":35}
[Trace - 4:37:33 PM] Sending request 'textDocument/codeAction - (38)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":40,"character":18},"end":{"line":40,"character":18}},"context":{"diagnostics":[]}}
[Trace - 4:37:33 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":18}},"severity":1,"source":"LSP","message":"undeclared name: uuid"}]}
[Trace - 4:37:33 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:37:33 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:37:34 PM] Received response 'textDocument/codeAction - (38)' in 34471ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/finchnat/archimedes/auth/auth.go":[{"range":{"start":{"line":16,"character":0},"end":{"line":16,"character":0}},"newText":"\t\"github.com/gofrs/uuid\"\n"}]}}}]
[Trace - 4:37:34 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":24},"contentChanges":[{"range":{"start":{"line":40,"character":18},"end":{"line":40,"character":18}},"rangeLength":0,"text":"()"}]}
[Trace - 4:37:34 PM] Sending notification '$/cancelRequest'.
Params: {"id":38}
[Trace - 4:37:34 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":25},"contentChanges":[{"range":{"start":{"line":40,"character":19},"end":{"line":40,"character":20}},"rangeLength":1,"text":")"}]}
[Trace - 4:37:34 PM] Sending request 'textDocument/signatureHelp - (39)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":20}}
[Trace - 4:37:34 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":18}},"severity":1,"source":"LSP","message":"undeclared name: uuid"}]}
[Trace - 4:37:34 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:37:34 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:37:34 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":18}},"severity":1,"source":"LSP","message":"undeclared name: uuid"}]}
[Trace - 4:37:34 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no signature help for file:///Users/finchnat/archimedes/auth/auth.go:40:20 : cannot find an enclosing function"}
[Trace - 4:37:34 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:37:34 PM] Received response 'textDocument/signatureHelp - (39)' in 34255ms.
Params: {}
[Trace - 4:37:34 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:37:34 PM] Sending request 'textDocument/codeAction - (40)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":40,"character":20},"end":{"line":40,"character":20}},"context":{"diagnostics":[]}}
[Info - 4:37:34 PM] no signature help for file:///Users/finchnat/archimedes/auth/auth.go:40:20 : cannot find an enclosing function
[Trace - 4:37:35 PM] Received response 'textDocument/codeAction - (40)' in 35219ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/finchnat/archimedes/auth/auth.go":[{"range":{"start":{"line":16,"character":0},"end":{"line":16,"character":0}},"newText":"\t\"github.com/gofrs/uuid\"\n"}]}}}]
[Trace - 4:37:35 PM] Sending notification '$/cancelRequest'.
Params: {"id":36}
[Trace - 4:37:35 PM] Sending request 'textDocument/documentSymbol - (41)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:37:35 PM] Received response 'textDocument/documentSymbol - (41)' in 35117ms.
Params: [{"name":"PageLogin","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":21,"character":1},"end":{"line":21,"character":10}}},{"name":"RedirectURIParam","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":17}}},{"name":"AttemptsRemain","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":15}}},{"name":"Auth","detail":"struct{...}","kind":23,"range":{"start":{"line":33,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":33,"character":5},"end":{"line":33,"character":9}},"children":[{"name":"Authboss","detail":"*authboss.Authboss","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}}},{"name":"DB","detail":"*sql.DB","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":11}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":3}}},{"name":"LoginGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":54,"character":0},"end":{"line":62,"character":1}},"selectionRange":{"start":{"line":54,"character":15},"end":{"line":54,"character":23}}},{"name":"LoginPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":66,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":66,"character":15},"end":{"line":66,"character":24}}},{"name":"Init","detail":"(ab *authboss.Authboss)","kind":6,"range":{"start":{"line":39,"character":0},"end":{"line":51,"character":1}},"selectionRange":{"start":{"line":39,"character":15},"end":{"line":39,"character":19}}}]}]
[Trace - 4:37:35 PM] Sending request 'textDocument/documentLink - (42)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:37:35 PM] Received response 'textDocument/documentLink - (42)' in 34829ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 4:37:35 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":26},"contentChanges":[{"range":{"start":{"line":40,"character":20},"end":{"line":40,"character":20}},"rangeLength":0,"text":" "}]}
[Trace - 4:37:35 PM] Sending notification '$/cancelRequest'.
Params: {"id":40}
[Trace - 4:37:35 PM] Sending notification '$/cancelRequest'.
Params: {"id":39}
[Trace - 4:37:35 PM] Sending request 'textDocument/signatureHelp - (43)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"position":{"line":40,"character":21}}
[Trace - 4:37:35 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/auth.go","diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":18}},"severity":1,"source":"LSP","message":"undeclared name: uuid"}]}
[Trace - 4:37:35 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/authboss.go","diagnostics":[]}
[Trace - 4:37:35 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no signature help for file:///Users/finchnat/archimedes/auth/auth.go:40:21 : cannot find an enclosing function"}
[Trace - 4:37:35 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/finchnat/archimedes/auth/router.go","diagnostics":[]}
[Trace - 4:37:35 PM] Received response 'textDocument/signatureHelp - (43)' in 33370ms.
Params: {}
[Trace - 4:37:35 PM] Sending notification '$/cancelRequest'.
Params: {"id":41}
[Trace - 4:37:35 PM] Sending request 'textDocument/documentSymbol - (44)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:37:35 PM] Received response 'textDocument/documentSymbol - (44)' in 33137ms.
Params: [{"name":"PageLogin","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":21,"character":1},"end":{"line":21,"character":10}}},{"name":"RedirectURIParam","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":17}}},{"name":"AttemptsRemain","detail":"untyped string","kind":14,"range":{"start":{"line":19,"character":0},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":15}}},{"name":"Auth","detail":"struct{...}","kind":23,"range":{"start":{"line":33,"character":5},"end":{"line":36,"character":1}},"selectionRange":{"start":{"line":33,"character":5},"end":{"line":33,"character":9}},"children":[{"name":"Authboss","detail":"*authboss.Authboss","kind":8,"range":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}},"selectionRange":{"start":{"line":34,"character":1},"end":{"line":34,"character":19}}},{"name":"DB","detail":"*sql.DB","kind":8,"range":{"start":{"line":35,"character":1},"end":{"line":35,"character":11}},"selectionRange":{"start":{"line":35,"character":1},"end":{"line":35,"character":3}}},{"name":"Init","detail":"(ab *authboss.Authboss)","kind":6,"range":{"start":{"line":39,"character":0},"end":{"line":51,"character":1}},"selectionRange":{"start":{"line":39,"character":15},"end":{"line":39,"character":19}}},{"name":"LoginGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":54,"character":0},"end":{"line":62,"character":1}},"selectionRange":{"start":{"line":54,"character":15},"end":{"line":54,"character":23}}},{"name":"LoginPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":66,"character":0},"end":{"line":176,"character":1}},"selectionRange":{"start":{"line":66,"character":15},"end":{"line":66,"character":24}}}]}]
[Trace - 4:37:35 PM] Sending request 'textDocument/codeAction - (45)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"},"range":{"start":{"line":0,"character":0},"end":{"line":177,"character":0}},"context":{"diagnostics":[{"range":{"start":{"line":40,"character":8},"end":{"line":40,"character":16}},"message":"undeclared name: uuid","severity":1,"source":"LSP"}]}}
[Info - 4:37:35 PM] no signature help for file:///Users/finchnat/archimedes/auth/auth.go:40:21 : cannot find an enclosing function
[Trace - 4:37:37 PM] Received response 'textDocument/codeAction - (45)' in 33729ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/finchnat/archimedes/auth/auth.go":[{"range":{"start":{"line":16,"character":0},"end":{"line":16,"character":0}},"newText":"\t\"github.com/gofrs/uuid\"\n"},{"range":{"start":{"line":40,"character":0},"end":{"line":41,"character":0}},"newText":""},{"range":{"start":{"line":41,"character":0},"end":{"line":41,"character":0}},"newText":"\t_, _ = uuid.NewV4()\n"}]}}},{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/finchnat/archimedes/auth/auth.go":[{"range":{"start":{"line":16,"character":0},"end":{"line":16,"character":0}},"newText":"\t\"github.com/gofrs/uuid\"\n"},{"range":{"start":{"line":40,"character":0},"end":{"line":41,"character":0}},"newText":""},{"range":{"start":{"line":41,"character":0},"end":{"line":41,"character":0}},"newText":"\t_, _ = uuid.NewV4()\n"}]}}}]
[Trace - 4:37:37 PM] Sending request 'textDocument/documentLink - (46)'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go"}}
[Trace - 4:37:37 PM] Received response 'textDocument/documentLink - (46)' in 33564ms.
Params: [{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":15}},"target":"https://godoc.org/database/sql"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":29}},"target":"https://godoc.org/golang.org/x/crypto/bcrypt"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":31}},"target":"https://godoc.org/github.com/Mattel/archimedes"},{"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":55}},"target":"https://godoc.org/github.com/Mattel/archimedes/db/gnorm/loginredirects"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":35}},"target":"https://godoc.org/github.com/volatiletech/authboss"}]
[Trace - 4:37:37 PM] Sending notification '$/cancelRequest'.
Params: {"id":45}
[Trace - 4:37:37 PM] Sending notification 'textDocument/didSave'.
Params: {"textDocument":{"uri":"file:///Users/finchnat/archimedes/auth/auth.go","version":26}}
My best guess from these logs is that this 33-35 second latency number is about the cost of go/packages
and type-checking your project. You can see this latency at start up, and then it comes back when an import is added (which is when gopls
will re-run go/packages.Load
again). That probably does cause timeouts and messes everything up. I'm quite shocked that it would take this long, but I'm not sure of another explanation. What is the latency of running go list -e -json -compiled -test /absolute/path/to/project
? You can also try out the gopackages
command in golang.org/x/tools/go/packages/gopackages
.
Also, are you using cgo
? go list
may be very slow with projects using cgo
.
FWIW: I see a bunch of things on my 2015 work Mac Book Pro easily take 18 seconds on a relatively small project (just a few dozen files spread across ~3 or 4 packages).
@freeformz: Do you mind attaching those logs? And same questions - are you using build tags or cgo? Does go list
take a long time?
Also, this could be related: https://github.com/golang/go/issues/32750.
@stamblerre I am experiencing long delays on save (specifically when an import needs to be added) in VSCode (30-45s, I have a 60s timeout and sometimes it only completes half the needed imports), but based upon the commands you shared, it may be the result of a different problem:
go list -e -json -compiled -test $(pwd)/... 1.21s user 0.91s system 126% cpu 1.680 total
With HEAD
, which looks like it has a lot of refactoring of import code, it's worse than ever — just moving the cursor around triggers source.organizeImports
, which takes 2-4 seconds each time.
Worse, this seems to accumulate — normal, light editing of code quickly saturates all cores for a while:
$ ps uxp 55743
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
alex 55743 531.3 1.9 4678876 325944 ?? R 1:45PM 5:36.08 /Users/alex/.go/bin/gopls -mode=stdio -rpc.trace
^^^^^ !
I also see this if I just do a few bogus changes like hitting the enter key repeatedly,
(Not sure if this is the right issue to report this on.)
Chiming in here to say I've been staying reasonably current on gopls
and things seem to be working much better for me now. I can't pinpoint the exact time things got better, but I haven't had a case of getting stuck importing and needing to resolve by hand for at least a week.
@bmhatfield for future reference, what exact version are you on right now?
Please answer these questions before submitting your issue. Thanks!
What did you do?
add a line that uses a new import. Save. or click go to definition on basically anything
What did you expect to see?
import added or go to definition
What did you see instead?
no import added. Sometimes it'll format but not import. Most of the time it does neither. or doesn't go to definition, saying no definition found
Does this issue reproduce with the latest release (go1.12.5)?
yes
System details
$ gopls version golang.org/x/tools/cmd/gopls golang.org/x/tools@v0.0.0-20190528151238-d238219cc233 h1:Q8gfsz3A5sYwJeRvYP/nWvLYwU5af6MHYyS8QbI2x88=