Skip to content

Instantly share code, notes, and snippets.

@peterbourgon
Created August 12, 2019 21:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save peterbourgon/5a8eac80e44690b4d46460b3ed71923a to your computer and use it in GitHub Desktop.
Save peterbourgon/5a8eac80e44690b4d46460b3ed71923a to your computer and use it in GitHub Desktop.
2019/08/12 11:59:51 Debug serving on port: 6060
[Trace - 11:59:51 AM] Sending request 'initialize - (0)'.
Params: {"processId":15139,"rootPath":"/Users/peter/mod/REDACTED","rootUri":"file:///Users/peter/mod/REDACTED","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/peter/mod/REDACTED","name":"REDACTED"}]}
[Trace - 11:59:51 AM] Received response 'initialize - (0)' in 57ms.
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 - 11:59:51 AM] Sending notification 'initialized'.
Params: {}
[Trace - 11:59:51 AM] Received request 'client/registerCapability - (1)'.
Params: {"registrations":[{"id":"workspace/didChangeConfiguration","method":"workspace/didChangeConfiguration"},{"id":"workspace/didChangeWorkspaceFolders","method":"workspace/didChangeWorkspaceFolders"}]}
[Trace - 11:59:51 AM] Sending response 'client/registerCapability - (1)' in 2ms.
Params: {}
[Trace - 11:59:51 AM] Received request 'workspace/configuration - (2)'.
Params: {"items":[{"scopeUri":"file:///Users/peter/mod/REDACTED","section":"gopls"}]}
[Trace - 11:59:51 AM] Sending response 'workspace/configuration - (2)' in 4ms.
Params: [{"usePlaceholders":true}]
[Trace - 11:59:52 AM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"Build info\n----------\ngolang.org/x/tools/gopls v0.1.2\n golang.org/x/tools/gopls@v0.1.3 h1:CB5ECiPysqZrwxcyRjN+exyZpY0gODTZvNiqQi3lpeo=\n golang.org/x/sync@v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=\n golang.org/x/tools@v0.0.0-20190710153321-831012c29e42 h1:4IOeC7p+OItq3+O5BWkcmVu2uBe3jekXau5S4QZX9DU=\n\nGo info\n-------\ngo version go1.12.6 darwin/amd64\n\nGOARCH=\"amd64\"\nGOBIN=\"\"\nGOCACHE=\"/Users/peter/Library/Caches/go-build\"\nGOEXE=\"\"\nGOFLAGS=\"\"\nGOHOSTARCH=\"amd64\"\nGOHOSTOS=\"darwin\"\nGOOS=\"darwin\"\nGOPATH=\"/Users/peter\"\nGOPROXY=\"\"\nGORACE=\"\"\nGOROOT=\"/usr/local/Cellar/go/1.12.6/libexec\"\nGOTMPDIR=\"\"\nGOTOOLDIR=\"/usr/local/Cellar/go/1.12.6/libexec/pkg/REDACTED/darwin_amd64\"\nGCCGO=\"gccgo\"\nCC=\"clang\"\nCXX=\"clang++\"\nCGO_ENABLED=\"1\"\nGOMOD=\"/Users/peter/mod/REDACTED/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/8s/kvkb2dzx37n057vk54y9b_ym0000gn/T/go-build615150215=/tmp/go-build -gno-record-gcc-switches -fno-common\"\n"}
[Trace - 11:59:52 AM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/ipsock.go","languageId":"go","version":1,"text":"// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage net\n\nimport (\n\t\"context\"\n\t\"internal/bytealg\"\n\t\"sync\"\n)\n\n// BUG(rsc,mikio): On DragonFly BSD and OpenBSD, listening on the\n// \"tcp\" and \"udp\" networks does not listen for both IPv4 and IPv6\n// connections. This is due to the fact that IPv4 traffic will not be\n// routed to an IPv6 socket - two separate sockets are required if\n// both address families are to be supported.\n// See inet6(4) for details.\n\ntype ipStackCapabilities struct {\n\tsync.Once // guards following\n\tipv4Enabled bool\n\tipv6Enabled bool\n\tipv4MappedIPv6Enabled bool\n}\n\nvar ipStackCaps ipStackCapabilities\n\n// supportsIPv4 reports whether the platform supports IPv4 networking\n// functionality.\nfunc supportsIPv4() bool {\n\tipStackCaps.Once.Do(ipStackCaps.probe)\n\treturn ipStackCaps.ipv4Enabled\n}\n\n// supportsIPv6 reports whether the platform supports IPv6 networking\n// functionality.\nfunc supportsIPv6() bool {\n\tipStackCaps.Once.Do(ipStackCaps.probe)\n\treturn ipStackCaps.ipv6Enabled\n}\n\n// supportsIPv4map reports whether the platform supports mapping an\n// IPv4 address inside an IPv6 address at transport layer\n// protocols. See RFC 4291, RFC 4038 and RFC 3493.\nfunc supportsIPv4map() bool {\n\tipStackCaps.Once.Do(ipStackCaps.probe)\n\treturn ipStackCaps.ipv4MappedIPv6Enabled\n}\n\n// An addrList represents a list of network endpoint addresses.\ntype addrList []Addr\n\n// isIPv4 reports whether addr contains an IPv4 address.\nfunc isIPv4(addr Addr) bool {\n\tswitch addr := addr.(type) {\n\tcase *TCPAddr:\n\t\treturn addr.IP.To4() != nil\n\tcase *UDPAddr:\n\t\treturn addr.IP.To4() != nil\n\tcase *IPAddr:\n\t\treturn addr.IP.To4() != nil\n\t}\n\treturn false\n}\n\n// isNotIPv4 reports whether addr does not contain an IPv4 address.\nfunc isNotIPv4(addr Addr) bool { return !isIPv4(addr) }\n\n// forResolve returns the most appropriate address in address for\n// a call to ResolveTCPAddr, ResolveUDPAddr, or ResolveIPAddr.\n// IPv4 is preferred, unless addr contains an IPv6 literal.\nfunc (addrs addrList) forResolve(network, addr string) Addr {\n\tvar want6 bool\n\tswitch network {\n\tcase \"ip\":\n\t\t// IPv6 literal (addr does NOT contain a port)\n\t\twant6 = count(addr, ':') > 0\n\tcase \"tcp\", \"udp\":\n\t\t// IPv6 literal. (addr contains a port, so look for '[')\n\t\twant6 = count(addr, '[') > 0\n\t}\n\tif want6 {\n\t\treturn addrs.first(isNotIPv4)\n\t}\n\treturn addrs.first(isIPv4)\n}\n\n// first returns the first address which satisfies strategy, or if\n// none do, then the first address of any kind.\nfunc (addrs addrList) first(strategy func(Addr) bool) Addr {\n\tfor _, addr := range addrs {\n\t\tif strategy(addr) {\n\t\t\treturn addr\n\t\t}\n\t}\n\treturn addrs[0]\n}\n\n// partition divides an address list into two categories, using a\n// strategy function to assign a boolean label to each address.\n// The first address, and any with a matching label, are returned as\n// primaries, while addresses with the opposite label are returned\n// as fallbacks. For non-empty inputs, primaries is guaranteed to be\n// non-empty.\nfunc (addrs addrList) partition(strategy func(Addr) bool) (primaries, fallbacks addrList) {\n\tvar primaryLabel bool\n\tfor i, addr := range addrs {\n\t\tlabel := strategy(addr)\n\t\tif i == 0 || label == primaryLabel {\n\t\t\tprimaryLabel = label\n\t\t\tprimaries = append(primaries, addr)\n\t\t} else {\n\t\t\tfallbacks = append(fallbacks, addr)\n\t\t}\n\t}\n\treturn\n}\n\n// filterAddrList applies a filter to a list of IP addresses,\n// yielding a list of Addr objects. Known filters are nil, ipv4only,\n// and ipv6only. It returns every address when the filter is nil.\n// The result contains at least one address when error is nil.\nfunc filterAddrList(filter func(IPAddr) bool, ips []IPAddr, inetaddr func(IPAddr) Addr, originalAddr string) (addrList, error) {\n\tvar addrs addrList\n\tfor _, ip := range ips {\n\t\tif filter == nil || filter(ip) {\n\t\t\taddrs = append(addrs, inetaddr(ip))\n\t\t}\n\t}\n\tif len(addrs) == 0 {\n\t\treturn nil, &AddrError{Err: errNoSuitableAddress.Error(), Addr: originalAddr}\n\t}\n\treturn addrs, nil\n}\n\n// ipv4only reports whether addr is an IPv4 address.\nfunc ipv4only(addr IPAddr) bool {\n\treturn addr.IP.To4() != nil\n}\n\n// ipv6only reports whether addr is an IPv6 address except IPv4-mapped IPv6 address.\nfunc ipv6only(addr IPAddr) bool {\n\treturn len(addr.IP) == IPv6len && addr.IP.To4() == nil\n}\n\n// SplitHostPort splits a network address of the form \"host:port\",\n// \"host%zone:port\", \"[host]:port\" or \"[host%zone]:port\" into host or\n// host%zone and port.\n//\n// A literal IPv6 address in hostport must be enclosed in square\n// brackets, as in \"[::1]:80\", \"[::1%lo0]:80\".\n//\n// See func Dial for a description of the hostport parameter, and host\n// and port results.\nfunc SplitHostPort(hostport string) (host, port string, err error) {\n\tconst (\n\t\tmissingPort = \"missing port in address\"\n\t\ttooManyColons = \"too many colons in address\"\n\t)\n\taddrErr := func(addr, why string) (host, port string, err error) {\n\t\treturn \"\", \"\", &AddrError{Err: why, Addr: addr}\n\t}\n\tj, k := 0, 0\n\n\t// The port starts after the last colon.\n\ti := last(hostport, ':')\n\tif i < 0 {\n\t\treturn addrErr(hostport, missingPort)\n\t}\n\n\tif hostport[0] == '[' {\n\t\t// Expect the first ']' just before the last ':'.\n\t\tend := bytealg.IndexByteString(hostport, ']')\n\t\tif end < 0 {\n\t\t\treturn addrErr(hostport, \"missing ']' in address\")\n\t\t}\n\t\tswitch end + 1 {\n\t\tcase len(hostport):\n\t\t\t// There can't be a ':' behind the ']' now.\n\t\t\treturn addrErr(hostport, missingPort)\n\t\tcase i:\n\t\t\t// The expected result.\n\t\tdefault:\n\t\t\t// Either ']' isn't followed by a colon, or it is\n\t\t\t// followed by a colon that is not the last one.\n\t\t\tif hostport[end+1] == ':' {\n\t\t\t\treturn addrErr(hostport, tooManyColons)\n\t\t\t}\n\t\t\treturn addrErr(hostport, missingPort)\n\t\t}\n\t\thost = hostport[1:end]\n\t\tj, k = 1, end+1 // there can't be a '[' resp. ']' before these positions\n\t} else {\n\t\thost = hostport[:i]\n\t\tif bytealg.IndexByteString(host, ':') >= 0 {\n\t\t\treturn addrErr(hostport, tooManyColons)\n\t\t}\n\t}\n\tif bytealg.IndexByteString(hostport[j:], '[') >= 0 {\n\t\treturn addrErr(hostport, \"unexpected '[' in address\")\n\t}\n\tif bytealg.IndexByteString(hostport[k:], ']') >= 0 {\n\t\treturn addrErr(hostport, \"unexpected ']' in address\")\n\t}\n\n\tport = hostport[i+1:]\n\treturn host, port, nil\n}\n\nfunc splitHostZone(s string) (host, zone string) {\n\t// The IPv6 scoped addressing zone identifier starts after the\n\t// last percent sign.\n\tif i := last(s, '%'); i > 0 {\n\t\thost, zone = s[:i], s[i+1:]\n\t} else {\n\t\thost = s\n\t}\n\treturn\n}\n\n// JoinHostPort combines host and port into a network address of the\n// form \"host:port\". If host contains a colon, as found in literal\n// IPv6 addresses, then JoinHostPort returns \"[host]:port\".\n//\n// See func Dial for a description of the host and port parameters.\nfunc JoinHostPort(host, port string) string {\n\t// We assume that host is a literal IPv6 address if host has\n\t// colons.\n\tif bytealg.IndexByteString(host, ':') >= 0 {\n\t\treturn \"[\" + host + \"]:\" + port\n\t}\n\treturn host + \":\" + port\n}\n\n// internetAddrList resolves addr, which may be a literal IP\n// address or a DNS name, and returns a list of internet protocol\n// family addresses. The result contains at least one address when\n// error is nil.\nfunc (r *Resolver) internetAddrList(ctx context.Context, net, addr string) (addrList, error) {\n\tvar (\n\t\terr error\n\t\thost, port string\n\t\tportnum int\n\t)\n\tswitch net {\n\tcase \"tcp\", \"tcp4\", \"tcp6\", \"udp\", \"udp4\", \"[Info - 11:59:52 AM] Build info
----------
golang.org/x/tools/gopls v0.1.2
golang.org/x/tools/gopls@v0.1.3 h1:CB5ECiPysqZrwxcyRjN+exyZpY0gODTZvNiqQi3lpeo=
golang.org/x/sync@v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
golang.org/x/tools@v0.0.0-20190710153321-831012c29e42 h1:4IOeC7p+OItq3+O5BWkcmVu2uBe3jekXau5S4QZX9DU=
Go info
-------
go version go1.12.6 darwin/amd64
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/peter/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/peter"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/Cellar/go/1.12.6/libexec"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.12.6/libexec/pkg/REDACTED/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/peter/mod/REDACTED/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/8s/kvkb2dzx37n057vk54y9b_ym0000gn/T/go-build615150215=/tmp/go-build -gno-record-gcc-switches -fno-common"
udp6\":\n\t\tif addr != \"\" {\n\t\t\tif host, port, err = SplitHostPort(addr); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tif portnum, err = r.LookupPort(ctx, net, port); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\tcase \"ip\", \"ip4\", \"ip6\":\n\t\tif addr != \"\" {\n\t\t\thost = addr\n\t\t}\n\tdefault:\n\t\treturn nil, UnknownNetworkError(net)\n\t}\n\tinetaddr := func(ip IPAddr) Addr {\n\t\tswitch net {\n\t\tcase \"tcp\", \"tcp4\", \"tcp6\":\n\t\t\treturn &TCPAddr{IP: ip.IP, Port: portnum, Zone: ip.Zone}\n\t\tcase \"udp\", \"udp4\", \"udp6\":\n\t\t\treturn &UDPAddr{IP: ip.IP, Port: portnum, Zone: ip.Zone}\n\t\tcase \"ip\", \"ip4\", \"ip6\":\n\t\t\treturn &IPAddr{IP: ip.IP, Zone: ip.Zone}\n\t\tdefault:\n\t\t\tpanic(\"unexpected network: \" + net)\n\t\t}\n\t}\n\tif host == \"\" {\n\t\treturn addrList{inetaddr(IPAddr{})}, nil\n\t}\n\n\t// Try as a literal IP address, then as a DNS name.\n\tips, err := r.lookupIPAddr(ctx, net, host)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// Issue 18806: if the machine has halfway configured\n\t// IPv6 such that it can bind on \"::\" (IPv6unspecified)\n\t// but not connect back to that same address, fall\n\t// back to dialing 0.0.0.0.\n\tif len(ips) == 1 && ips[0].IP.Equal(IPv6unspecified) {\n\t\tips = append(ips, IPAddr{IP: IPv4zero})\n\t}\n\n\tvar filter func(IPAddr) bool\n\tif net != \"\" && net[len(net)-1] == '4' {\n\t\tfilter = ipv4only\n\t}\n\tif net != \"\" && net[len(net)-1] == '6' {\n\t\tfilter = ipv6only\n\t}\n\treturn filterAddrList(filter, ips, inetaddr, host)\n}\n\nfunc loopbackIP(net string) IP {\n\tif net != \"\" && net[len(net)-1] == '6' {\n\t\treturn IPv6loopback\n\t}\n\treturn IP{127, 0, 0, 1}\n}\n"}}
[Unrelated lines removed]
[Trace - 2:17:24 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/error.go","languageId":"go","version":1,"text":"package errors\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"github.com/pkg/errors\"\n)\n\n// Error is a general type for all errors that are produced and consumed by the\n// REDACTED server. Packages should define var ErrMyThing = errors.Error{...}.\ntype Error struct {\n\tStatusCode int `json:\"status_code\"`\n\tErr string `json:\"err\"`\n}\n\n// Error implements the error interface.\nfunc (e Error) Error() string {\n\treturn e.Err\n}\n\nfunc (e Error) encode(w http.ResponseWriter) {\n\tw.Header().Set(\"Content-Type\", \"application/json; charset=utf-8\")\n\tw.WriteHeader(e.StatusCode)\n\tbuf, err := json.MarshalIndent(e, \"\", \" \")\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"problem encoding an Error: %v\", err))\n\t}\n\tw.Write(buf)\n}\n\nfunc (e *Error) decode(r *http.Response) {\n\tif err := json.NewDecoder(r.Body).Decode(e); err != nil {\n\t\t(*e) = Error{\n\t\t\tStatusCode: http.StatusInternalServerError,\n\t\t\tErr: errors.Wrap(err, \"error decoding error from response\").Error(),\n\t\t}\n\t}\n}\n\n// Encode an error (hopefully but not necessarily an errors.Error) to an\n// http.ResponseWriter as JSON, in a way that can be later Decoded.\nfunc Encode(w http.ResponseWriter, err error) {\n\tperr, ok := err.(Error)\n\tif !ok {\n\t\tperr = Error{\n\t\t\tStatusCode: http.StatusInternalServerError,\n\t\t\tErr: err.Error(),\n\t\t}\n\t}\n\tperr.encode(w)\n}\n\n// Decode an error (hopefully but not necessarily an errors.Error) from an\n// http.Response.\nfunc Decode(r *http.Response) Error {\n\tvar err Error\n\terr.decode(r)\n\treturn err\n}\n\n//\n//\n//\n\n// New is a helper function that constructs a new Error with the given error\n// message and a default status code of 500 Internal Server Error. It roughly\n// emulates pkg/errors.New, so other REDACTED packages only need to import this\n// 'errors' package.\nfunc New(context string) Error {\n\treturn NewCode(http.StatusInternalServerError, context)\n}\n\n// NewCode is a helper function that constructs a new Error with the given\n// status code and error message. It roughly emulates pkg/errors.New, so other\n// REDACTED packages only need to import this 'errors' package.\nfunc NewCode(code int, context string) Error {\n\treturn ErrorfCode(code, context)\n}\n\n// Errorf is a helper function that constructs a new Error with the given\n// interpolated error message and a default status code of 500 Internal Server\n// Error. It roughly emulates pkg/errors.Errorf, so other REDACTED packages only\n// need to import this 'errors' package.\nfunc Errorf(context string, args ...interface{}) Error {\n\treturn ErrorfCode(http.StatusInternalServerError, context, args...)\n}\n\n// ErrorfCode is a helper function that constructs a new Error with the given\n// status code and interpolated error message. It roughly emulates\n// pkg/errors.Errorf, so other REDACTED packages only need to import this 'errors'\n// package.\nfunc ErrorfCode(code int, context string, args ...interface{}) Error {\n\treturn Error{\n\t\tStatusCode: code,\n\t\tErr: fmt.Sprintf(context, args...),\n\t}\n}\n\n// Wrap is a helper function that constructs a new Error by wrapping the given\n// error with the context as a prefix. If the provided error is of type Error,\n// Wrap will use that Error's status code, otherwise it will assign a default\n// status code of 500 Internal Server Error. This function roughly emulates\n// pkg/errors.Wrap, so other REDACTED packages only need to import this 'errors'\n// package.\nfunc Wrap(err error, context string) Error {\n\treturn Wrapf(err, context)\n}\n\n// Wrapf is a helper function that constructs a new Error by wrapping the given\n// error with the interpolated context message as a prefix. If the provided\n// error is of type Error, Wrap will use that Error's status code, otherwise it\n// will assign a default status code of 500 Internal Server Error. This function\n// roughly emulates pkg/errors.Wrapf, so other REDACTED packages only need to\n// import this 'errors' package.\nfunc Wrapf(err error, context string, args ...interface{}) Error {\n\tif perr, ok := err.(Error); ok {\n\t\treturn WrapfCode(perr.StatusCode, err, context, args...)\n\t}\n\treturn WrapfCode(http.StatusInternalServerError, err, context, args...)\n}\n\n// WrapCode is a helper function that constructs a new Error by wrapping the\n// given error with the context as a prefix, and assigns the given status code.\n// Note that if the provided error is of type Error, its status code is ignored.\n// This function roughly emulates pkg/errors.Wrap, so other REDACTED packages only\n// need to import this 'errors' package.\nfunc WrapCode(code int, err error, context string) Error {\n\treturn WrapfCode(code, err, context)\n}\n\n// WrapfCode is a helper function that constructs a new Error by wrapping the\n// given error with the interpolated context string as a prefix, and assigns the\n// given status code. Note that if the provided error is of type Error, its\n// status code is ignored. This function roughly emulates pkg/errors.Wrap, so\n// other REDACTED packages only need to import this 'errors' package.\nfunc WrapfCode(code int, err error, context string, args ...interface{}) Error {\n\treturn Error{\n\t\tStatusCode: code,\n\t\tErr: errors.Wrapf(err, context, args...).Error(),\n\t}\n}\n\n//\n//\n//\n\n// SomewhatEqual returns true if err is an Error and has the same status code as\n// the compare Error, and the compare's error text appears in err somewhere.\n// Useful to catch specific conditions in the public API.\nfunc SomewhatEqual(err error, compare Error) bool {\n\tif orig, ok := err.(Error); ok && orig.StatusCode == compare.StatusCode && strings.Contains(orig.Err, compare.Err) {\n\t\treturn true\n\t}\n\treturn false\n}\n"}}
[Trace - 2:17:24 PM] Sending request 'textDocument/documentLink - (162)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/error.go"}}
[Trace - 2:17:25 PM] Received response 'textDocument/documentLink - (162)' in 460ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":16}},"target":"https://godoc.org/encoding/json"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":10}},"target":"https://godoc.org/strings"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":24}},"target":"https://godoc.org/github.com/pkg/errors"}]
[Trace - 2:17:25 PM] Sending request 'textDocument/codeAction - (163)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/error.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:17:25 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/error.go","diagnostics":[]}
[Trace - 2:17:25 PM] Received response 'textDocument/codeAction - (163)' in 454ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/error.go":[]}}}]
[Trace - 2:17:25 PM] Sending request 'textDocument/documentSymbol - (164)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/error.go"}}
[Trace - 2:17:25 PM] Received response 'textDocument/documentSymbol - (164)' in 260ms.
Params: [{"name":"Error","detail":"struct{...}","kind":23,"range":{"start":{"line":13,"character":5},"end":{"line":16,"character":1}},"selectionRange":{"start":{"line":13,"character":5},"end":{"line":13,"character":10}},"children":[{"name":"StatusCode","detail":"int","kind":8,"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":39}},"selectionRange":{"start":{"line":14,"character":1},"end":{"line":14,"character":11}}},{"name":"Err","detail":"string","kind":8,"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":31}},"selectionRange":{"start":{"line":15,"character":1},"end":{"line":15,"character":4}}},{"name":"Error","detail":"()","kind":6,"range":{"start":{"line":19,"character":0},"end":{"line":21,"character":1}},"selectionRange":{"start":{"line":19,"character":15},"end":{"line":19,"character":20}}},{"name":"encode","detail":"(w http.ResponseWriter)","kind":6,"range":{"start":{"line":23,"character":0},"end":{"line":31,"character":1}},"selectionRange":{"start":{"line":23,"character":15},"end":{"line":23,"character":21}}},{"name":"decode","detail":"(r *http.Response)","kind":6,"range":{"start":{"line":33,"character":0},"end":{"line":40,"character":1}},"selectionRange":{"start":{"line":33,"character":16},"end":{"line":33,"character":22}}}]},{"name":"Encode","detail":"(w http.ResponseWriter, err error)","kind":12,"range":{"start":{"line":44,"character":0},"end":{"line":53,"character":1}},"selectionRange":{"start":{"line":44,"character":5},"end":{"line":44,"character":11}}},{"name":"Decode","detail":"(r *http.Response)","kind":12,"range":{"start":{"line":57,"character":0},"end":{"line":61,"character":1}},"selectionRange":{"start":{"line":57,"character":5},"end":{"line":57,"character":11}}},{"name":"New","detail":"(context string)","kind":12,"range":{"start":{"line":71,"character":0},"end":{"line":73,"character":1}},"selectionRange":{"start":{"line":71,"character":5},"end":{"line":71,"character":8}}},{"name":"NewCode","detail":"(code int, context string)","kind":12,"range":{"start":{"line":78,"character":0},"end":{"line":80,"character":1}},"selectionRange":{"start":{"line":78,"character":5},"end":{"line":78,"character":12}}},{"name":"Errorf","detail":"(context string, args []interface{})","kind":12,"range":{"start":{"line":86,"character":0},"end":{"line":88,"character":1}},"selectionRange":{"start":{"line":86,"character":5},"end":{"line":86,"character":11}}},{"name":"ErrorfCode","detail":"(code int, context string, args []interface{})","kind":12,"range":{"start":{"line":94,"character":0},"end":{"line":99,"character":1}},"selectionRange":{"start":{"line":94,"character":5},"end":{"line":94,"character":15}}},{"name":"Wrap","detail":"(err error, context string)","kind":12,"range":{"start":{"line":107,"character":0},"end":{"line":109,"character":1}},"selectionRange":{"start":{"line":107,"character":5},"end":{"line":107,"character":9}}},{"name":"Wrapf","detail":"(err error, context string, args []interface{})","kind":12,"range":{"start":{"line":117,"character":0},"end":{"line":122,"character":1}},"selectionRange":{"start":{"line":117,"character":5},"end":{"line":117,"character":10}}},{"name":"WrapCode","detail":"(code int, err error, context string)","kind":12,"range":{"start":{"line":129,"character":0},"end":{"line":131,"character":1}},"selectionRange":{"start":{"line":129,"character":5},"end":{"line":129,"character":13}}},{"name":"WrapfCode","detail":"(code int, err error, context string, args []interface{})","kind":12,"range":{"start":{"line":138,"character":0},"end":{"line":143,"character":1}},"selectionRange":{"start":{"line":138,"character":5},"end":{"line":138,"character":14}}},{"name":"SomewhatEqual","detail":"(err error, compare Error)","kind":12,"range":{"start":{"line":152,"character":0},"end":{"line":157,"character":1}},"selectionRange":{"start":{"line":152,"character":5},"end":{"line":152,"character":18}}}]
[Trace - 2:20:07 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","languageId":"go","version":1,"text":""}}
[Trace - 2:20:07 PM] Sending request 'textDocument/documentLink - (165)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:08 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:08 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:08 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:08 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:08 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:08 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:08 PM] Sending request 'textDocument/documentSymbol - (166)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Error - 2:20:08 PM] send textDocument/documentLink#165 no AST for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Error - 2:20:08 PM] Request textDocument/documentLink failed.
Message: no AST for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
Code: 0
[Trace - 2:20:08 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:08 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:09 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:09 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:09 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:09 PM] send textDocument/documentSymbol#166 no AST for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Error - 2:20:09 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:09 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":2},"contentChanges":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"rangeLength":0,"text":"p"}]}
[Trace - 2:20:09 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":3},"contentChanges":[{"range":{"start":{"line":0,"character":1},"end":{"line":0,"character":1}},"rangeLength":0,"text":"a"}]}
[Error - 2:20:09 PM] Request textDocument/documentSymbol failed.
Message: no AST for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
Code: 0
[Trace - 2:20:09 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:09 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:09 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Trace - 2:20:09 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":4},"contentChanges":[{"range":{"start":{"line":0,"character":2},"end":{"line":0,"character":2}},"rangeLength":0,"text":"c"}]}
[Trace - 2:20:09 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":5},"contentChanges":[{"range":{"start":{"line":0,"character":3},"end":{"line":0,"character":3}},"rangeLength":0,"text":"k"}]}
[Trace - 2:20:09 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":6},"contentChanges":[{"range":{"start":{"line":0,"character":4},"end":{"line":0,"character":4}},"rangeLength":0,"text":"a"}]}
[Error - 2:20:09 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Trace - 2:20:10 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":7},"contentChanges":[{"range":{"start":{"line":0,"character":5},"end":{"line":0,"character":5}},"rangeLength":0,"text":"g"}]}
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Error - 2:20:10 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:10 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:10 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":8},"contentChanges":[{"range":{"start":{"line":0,"character":6},"end":{"line":0,"character":6}},"rangeLength":0,"text":"e"}]}
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"severity":1,"source":"LSP","message":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go is not part of a package"}]}
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:10 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Error - 2:20:10 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:10 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":9},"contentChanges":[{"range":{"start":{"line":0,"character":7},"end":{"line":0,"character":7}},"rangeLength":0,"text":" "}]}
[Trace - 2:20:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"severity":1,"source":"LSP","message":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go is not part of a package"}]}
[Trace - 2:20:10 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":10},"contentChanges":[{"range":{"start":{"line":0,"character":8},"end":{"line":0,"character":8}},"rangeLength":0,"text":"a"}]}
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Error - 2:20:11 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}
[Trace - 2:20:11 PM] Sending request 'textDocument/completion - (167)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":0,"character":9},"context":{"triggerKind":1}}
[Error - 2:20:11 PM] unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: go/packages.Load: no packages found for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"severity":1,"source":"LSP","message":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go is not part of a package"}]}
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:0:9: this is a definition"}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":11},"contentChanges":[{"range":{"start":{"line":0,"character":9},"end":{"line":0,"character":9}},"rangeLength":0,"text":"p"}]}
[Info - 2:20:11 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:0:9: this is a definition
[Trace - 2:20:11 PM] Received response 'textDocument/completion - (167)' in 2569ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":12},"contentChanges":[{"range":{"start":{"line":0,"character":10},"end":{"line":0,"character":10}},"rangeLength":0,"text":"i"}]}
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"failed to run analyses for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:11 PM] Sending request 'textDocument/codeAction - (168)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":0,"character":11},"end":{"line":0,"character":11}},"context":{"diagnostics":[]}}
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:20:11 PM] Received response 'textDocument/codeAction - (168)' in 2638ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[{"range":{"start":{"line":0,"character":0},"end":{"line":1,"character":0}},"newText":""},{"range":{"start":{"line":1,"character":0},"end":{"line":1,"character":0}},"newText":"package api\n"}]}}}]
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":13},"contentChanges":[{"range":{"start":{"line":0,"character":11},"end":{"line":0,"character":11}},"rangeLength":0,"text":"\n"}]}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:20:11 PM] Sending notification '$/cancelRequest'.
Params: {"id":168}
[Trace - 2:20:11 PM] Sending notification '$/cancelRequest'.
Params: {"id":167}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":14},"contentChanges":[{"range":{"start":{"line":1,"character":0},"end":{"line":1,"character":0}},"rangeLength":0,"text":"\n"}]}
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"failed to run analyses for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:11 PM] Sending request 'textDocument/documentLink - (169)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:20:11 PM] Received response 'textDocument/documentLink - (169)' in 2451ms.
Params: {}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":15},"contentChanges":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"rangeLength":0,"text":"f"}]}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:20:11 PM] Sending request 'textDocument/completion - (170)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":1},"context":{"triggerKind":1}}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"severity":1,"source":"LSP","message":"expected declaration, found f"}]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":16},"contentChanges":[{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"rangeLength":0,"text":"u"}]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":17},"contentChanges":[{"range":{"start":{"line":2,"character":2},"end":{"line":2,"character":2}},"rangeLength":0,"text":"n"}]}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"severity":1,"source":"LSP","message":"expected declaration, found fu"}]}
[Trace - 2:20:11 PM] Received response 'textDocument/completion - (170)' in 2226ms.
Params: {"isIncomplete":false,"items":[{"label":"append","kind":3,"detail":"func(slice []Type, elems ...Type) []Type","preselect":true,"sortText":"00000","filterText":"append","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"append(${1:slice []Type}, ${2:elems ...Type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"bool","kind":25,"sortText":"00001","filterText":"bool","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"bool"}},{"label":"byte","kind":25,"sortText":"00002","filterText":"byte","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"byte"}},{"label":"cap","kind":3,"detail":"func(v Type) int","sortText":"00003","filterText":"cap","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"cap(${1:v Type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"close","kind":3,"detail":"func(c chan\u003c- Type)","sortText":"00004","filterText":"close","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"close(${1:c chan\u003c- Type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"complex","kind":3,"detail":"func(r float64, i float64) complex128","sortText":"00005","filterText":"complex","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"complex(${1:r float64}, ${2:i float64})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"complex128","kind":25,"sortText":"00006","filterText":"complex128","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"complex128"}},{"label":"complex64","kind":25,"sortText":"00007","filterText":"complex64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"complex64"}},{"label":"copy","kind":3,"detail":"func(dst []Type, src []Type) int","sortText":"00008","filterText":"copy","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"copy(${1:dst []Type}, ${2:src []Type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"delete","kind":3,"detail":"func(m map[Type]Type1, key Type)","sortText":"00009","filterText":"delete","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"delete(${1:m map[Type]Type1}, ${2:key Type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"error","kind":8,"sortText":"00010","filterText":"error","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"error"}},{"label":"false","kind":21,"sortText":"00011","filterText":"false","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"false"}},{"label":"float32","kind":25,"sortText":"00012","filterText":"float32","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"float32"}},{"label":"float64","kind":25,"sortText":"00013","filterText":"float64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"float64"}},{"label":"imag","kind":3,"detail":"func(c complex128) float64","sortText":"00014","filterText":"imag","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"imag(${1:c complex128})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"int","kind":25,"sortText":"00015","filterText":"int","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"int"}},{"label":"int16","kind":25,"sortText":"00016","filterText":"int16","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"int16"}},{"label":"int32","kind":25,"sortText":"00017","filterText":"int32","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"int32"}},{"label":"int64","kind":25,"sortText":"00018","filterText":"int64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"int64"}},{"label":"int8","kind":25,"sortText":"00019","filterText":"int8","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"int8"}},{"label":"iota","kind":21,"sortText":"00020","filterText":"iota","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"iota"}},{"label":"len","kind":3,"detail":"func(v Type) int","sortText":"00021","filterText":"len","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"len(${1:v Type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"make","kind":3,"detail":"func(t Type, size ...int) Type","sortText":"00022","filterText":"make","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"make(${1:t Type}, ${2:size ...int})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"new","kind":3,"detail":"func(Type) *Type","sortText":"00023","filterText":"new","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"new(${1:Type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"nil","kind":6,"sortText":"00024","filterText":"nil","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"nil"}},{"label":"panic","kind":3,"detail":"func(v interface{})","sortText":"00025","filterText":"panic","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"panic(${1:v interface{\\}})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"print","kind":3,"detail":"func(args ...Type)","sortText":"00026","filterText":"print","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"print(${1:args ...Type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"println","kind":3,"detail":"func(args ...Type)","sortText":"00027","filterText":"println","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"println(${1:args ...Type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"real","kind":3,"detail":"func(c complex128) float64","sortText":"00028","filterText":"real","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"real(${1:c complex128})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"recover","kind":3,"detail":"func() interface{}","sortText":"00029","filterText":"recover","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"recover()"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"rune","kind":25,"sortText":"00030","filterText":"rune","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"rune"}},{"label":"string","kind":25,"sortText":"00031","filterText":"string","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"string"}},{"label":"true","kind":21,"sortText":"00032","filterText":"true","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"true"}},{"label":"uint","kind":25,"sortText":"00033","filterText":"uint","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"uint"}},{"label":"uint16","kind":25,"sortText":"00034","filterText":"uint16","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"uint16"}},{"label":"uint32","kind":25,"sortText":"00035","filterText":"uint32","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"uint32"}},{"label":"uint64","kind":25,"sortText":"00036","filterText":"uint64","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"uint64"}},{"label":"uint8","kind":25,"sortText":"00037","filterText":"uint8","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"uint8"}},{"label":"uintptr","kind":25,"sortText":"00038","filterText":"uintptr","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":1},"end":{"line":2,"character":1}},"newText":"uintptr"}}]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":18},"contentChanges":[{"range":{"start":{"line":2,"character":3},"end":{"line":2,"character":3}},"rangeLength":0,"text":"c"}]}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"severity":1,"source":"LSP","message":"expected declaration, found fun"}]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":19},"contentChanges":[{"range":{"start":{"line":2,"character":4},"end":{"line":2,"character":4}},"rangeLength":0,"text":" "}]}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":4},"end":{"line":2,"character":4}},"severity":1,"source":"LSP","message":"expected '(', found 'EOF'"}]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":20},"contentChanges":[{"range":{"start":{"line":2,"character":5},"end":{"line":2,"character":5}},"rangeLength":0,"text":"T"}]}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":5},"end":{"line":2,"character":5}},"severity":1,"source":"LSP","message":"expected '(', found 'EOF'"}]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":21},"contentChanges":[{"range":{"start":{"line":2,"character":6},"end":{"line":2,"character":6}},"rangeLength":0,"text":"e"}]}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":6},"end":{"line":2,"character":6}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":22},"contentChanges":[{"range":{"start":{"line":2,"character":7},"end":{"line":2,"character":7}},"rangeLength":0,"text":"s"}]}
[Trace - 2:20:11 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":23},"contentChanges":[{"range":{"start":{"line":2,"character":8},"end":{"line":2,"character":8}},"rangeLength":0,"text":"t"}]}
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":7},"end":{"line":2,"character":7}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:11 PM] Sending request 'textDocument/documentLink - (171)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go: context canceled"}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":8},"end":{"line":2,"character":8}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:11 PM] Received response 'textDocument/documentLink - (171)' in 1245ms.
Params: {}
[Trace - 2:20:11 PM] Sending request 'textDocument/codeAction - (172)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"context":{"diagnostics":[]}}
[Trace - 2:20:11 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Error - 2:20:11 PM] send textDocument/codeAction#172 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
[Trace - 2:20:11 PM] Sending request 'textDocument/documentSymbol - (173)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:11 PM] Received response 'textDocument/documentSymbol - (173)' in 1111ms.
Params: [{"name":"Test","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":9}}}]
[Error - 2:20:11 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:11 PM] Sending request 'textDocument/completion - (174)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":9},"context":{"triggerKind":1}}
[Trace - 2:20:11 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:9: this is a definition, of func Test(invalid type)"}
[Trace - 2:20:11 PM] Received response 'textDocument/completion - (174)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:11 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:9: this is a definition, of func Test(invalid type)
[Trace - 2:20:12 PM] Sending request 'textDocument/codeAction - (175)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:12 PM] send textDocument/codeAction#175 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
[Error - 2:20:12 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:13 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":24},"contentChanges":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"rangeLength":0,"text":"P"}]}
[Trace - 2:20:13 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:13 PM] Sending request 'textDocument/completion - (176)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":10},"context":{"triggerKind":1}}
[Trace - 2:20:13 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:10: this is a definition, of func TestP(invalid type)"}
[Trace - 2:20:13 PM] Received response 'textDocument/completion - (176)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:13 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:10: this is a definition, of func TestP(invalid type)
[Trace - 2:20:14 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":25},"contentChanges":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"rangeLength":0,"text":"U"}]}
[Trace - 2:20:14 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:14 PM] Sending request 'textDocument/completion - (177)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":11},"context":{"triggerKind":1}}
[Trace - 2:20:14 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:11: this is a definition, of func TestPU(invalid type)"}
[Trace - 2:20:14 PM] Received response 'textDocument/completion - (177)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:14 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:11: this is a definition, of func TestPU(invalid type)
[Trace - 2:20:14 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":26},"contentChanges":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"rangeLength":0,"text":"b"}]}
[Trace - 2:20:14 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:14 PM] Sending request 'textDocument/completion - (178)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":12},"context":{"triggerKind":1}}
[Trace - 2:20:14 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:12: this is a definition, of func TestPUb(invalid type)"}
[Trace - 2:20:14 PM] Received response 'textDocument/completion - (178)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:14 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:12: this is a definition, of func TestPUb(invalid type)
[Trace - 2:20:14 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":27},"contentChanges":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"rangeLength":0,"text":"l"}]}
[Trace - 2:20:14 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:14 PM] Sending request 'textDocument/completion - (179)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":13},"context":{"triggerKind":1}}
[Trace - 2:20:14 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestPUbl(invalid type)"}
[Trace - 2:20:14 PM] Received response 'textDocument/completion - (179)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:14 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestPUbl(invalid type)
[Trace - 2:20:14 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":28},"contentChanges":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"rangeLength":0,"text":"i"}]}
[Trace - 2:20:14 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:14 PM] Sending request 'textDocument/completion - (180)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":14},"context":{"triggerKind":1}}
[Trace - 2:20:14 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestPUbli(invalid type)"}
[Info - 2:20:14 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestPUbli(invalid type)
[Trace - 2:20:14 PM] Received response 'textDocument/completion - (180)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:14 PM] Sending request 'textDocument/codeAction - (181)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:14 PM] send textDocument/codeAction#181 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:15: expected '(', found newline (and 3 more errors)
[Error - 2:20:14 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:15: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:14 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":29},"contentChanges":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":14}},"rangeLength":1,"text":""}]}
[Trace - 2:20:14 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:14 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":30},"contentChanges":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":13}},"rangeLength":1,"text":""}]}
[Trace - 2:20:14 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:14 PM] Sending request 'textDocument/documentLink - (182)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:14 PM] Received response 'textDocument/documentLink - (182)' in 0ms.
Params: {}
[Trace - 2:20:15 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":31},"contentChanges":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":12}},"rangeLength":1,"text":""}]}
[Trace - 2:20:15 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:15 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":32},"contentChanges":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":11}},"rangeLength":1,"text":""}]}
[Trace - 2:20:15 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:15 PM] Sending request 'textDocument/codeAction - (183)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:15 PM] send textDocument/codeAction#183 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:11: expected '(', found newline (and 3 more errors)
[Error - 2:20:15 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:11: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:15 PM] Sending request 'textDocument/documentSymbol - (184)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:15 PM] Received response 'textDocument/documentSymbol - (184)' in 0ms.
Params: [{"name":"TestP","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":10}}}]
[Trace - 2:20:15 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":33},"contentChanges":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":10}},"rangeLength":1,"text":""}]}
[Trace - 2:20:15 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:16 PM] Sending request 'textDocument/documentLink - (185)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:16 PM] Received response 'textDocument/documentLink - (185)' in 0ms.
Params: {}
[Trace - 2:20:16 PM] Sending request 'textDocument/codeAction - (186)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:16 PM] send textDocument/codeAction#186 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
[Error - 2:20:16 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:16 PM] Sending request 'textDocument/documentSymbol - (187)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:16 PM] Received response 'textDocument/documentSymbol - (187)' in 0ms.
Params: [{"name":"Test","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":9}}}]
[Trace - 2:20:16 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":34},"contentChanges":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"rangeLength":0,"text":"P"}]}
[Trace - 2:20:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:16 PM] Sending request 'textDocument/completion - (188)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":10},"context":{"triggerKind":1}}
[Trace - 2:20:16 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:10: this is a definition, of func TestP(invalid type)"}
[Trace - 2:20:16 PM] Received response 'textDocument/completion - (188)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:16 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:10: this is a definition, of func TestP(invalid type)
[Trace - 2:20:16 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":35},"contentChanges":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"rangeLength":0,"text":"u"}]}
[Trace - 2:20:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:16 PM] Sending request 'textDocument/completion - (189)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":11},"context":{"triggerKind":1}}
[Trace - 2:20:16 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:11: this is a definition, of func TestPu(invalid type)"}
[Info - 2:20:16 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:11: this is a definition, of func TestPu(invalid type)
[Trace - 2:20:16 PM] Received response 'textDocument/completion - (189)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:16 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":36},"contentChanges":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"rangeLength":0,"text":"b"}]}
[Trace - 2:20:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:16 PM] Sending request 'textDocument/completion - (190)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":12},"context":{"triggerKind":1}}
[Trace - 2:20:16 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:12: this is a definition, of func TestPub(invalid type)"}
[Trace - 2:20:16 PM] Received response 'textDocument/completion - (190)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:16 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:12: this is a definition, of func TestPub(invalid type)
[Trace - 2:20:16 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":37},"contentChanges":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"rangeLength":0,"text":"l"}]}
[Trace - 2:20:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:16 PM] Sending request 'textDocument/completion - (191)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":13},"context":{"triggerKind":1}}
[Trace - 2:20:16 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestPubl(invalid type)"}
[Info - 2:20:16 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestPubl(invalid type)
[Trace - 2:20:16 PM] Received response 'textDocument/completion - (191)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:16 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":38},"contentChanges":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"rangeLength":0,"text":"i"}]}
[Trace - 2:20:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:16 PM] Sending request 'textDocument/completion - (192)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":14},"context":{"triggerKind":1}}
[Trace - 2:20:16 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestPubli(invalid type)"}
[Info - 2:20:16 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestPubli(invalid type)
[Trace - 2:20:16 PM] Received response 'textDocument/completion - (192)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:16 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":39},"contentChanges":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"rangeLength":0,"text":"c"}]}
[Trace - 2:20:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:16 PM] Sending request 'textDocument/completion - (193)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":15},"context":{"triggerKind":1}}
[Trace - 2:20:16 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:15: this is a definition, of func TestPublic(invalid type)"}
[Trace - 2:20:16 PM] Received response 'textDocument/completion - (193)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:16 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:15: this is a definition, of func TestPublic(invalid type)
[Trace - 2:20:16 PM] Sending request 'textDocument/codeAction - (194)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:16 PM] send textDocument/codeAction#194 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:16: expected '(', found newline (and 3 more errors)
[Error - 2:20:16 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:16: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:17 PM] Sending request 'textDocument/documentSymbol - (195)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:17 PM] Received response 'textDocument/documentSymbol - (195)' in 0ms.
Params: [{"name":"TestPublic","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":15}}}]
[Trace - 2:20:17 PM] Sending request 'textDocument/documentLink - (196)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:17 PM] Received response 'textDocument/documentLink - (196)' in 0ms.
Params: {}
[Trace - 2:20:18 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":40},"contentChanges":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":15}},"rangeLength":1,"text":""}]}
[Trace - 2:20:18 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:18 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":41},"contentChanges":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":14}},"rangeLength":1,"text":""}]}
[Trace - 2:20:18 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:18 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":42},"contentChanges":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":13}},"rangeLength":1,"text":""}]}
[Trace - 2:20:18 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:18 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":43},"contentChanges":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":12}},"rangeLength":1,"text":""}]}
[Trace - 2:20:18 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:18 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":44},"contentChanges":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":11}},"rangeLength":1,"text":""}]}
[Trace - 2:20:18 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:18 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":45},"contentChanges":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":10}},"rangeLength":1,"text":""}]}
[Trace - 2:20:18 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:19 PM] Sending request 'textDocument/codeAction - (197)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:19 PM] send textDocument/codeAction#197 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
[Error - 2:20:19 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:19 PM] Sending request 'textDocument/documentSymbol - (198)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:19 PM] Received response 'textDocument/documentSymbol - (198)' in 0ms.
Params: [{"name":"Test","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":9}}}]
[Trace - 2:20:19 PM] Sending request 'textDocument/documentLink - (199)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:19 PM] Received response 'textDocument/documentLink - (199)' in 0ms.
Params: {}
[Trace - 2:20:20 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":46},"contentChanges":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"rangeLength":0,"text":"A"}]}
[Trace - 2:20:20 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:20 PM] Sending request 'textDocument/completion - (200)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":10},"context":{"triggerKind":1}}
[Trace - 2:20:20 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:10: this is a definition, of func TestA(invalid type)"}
[Info - 2:20:20 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:10: this is a definition, of func TestA(invalid type)
[Trace - 2:20:20 PM] Received response 'textDocument/completion - (200)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:20 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":47},"contentChanges":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"rangeLength":0,"text":"p"}]}
[Trace - 2:20:20 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:20 PM] Sending request 'textDocument/completion - (201)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":11},"context":{"triggerKind":1}}
[Trace - 2:20:20 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:11: this is a definition, of func TestAp(invalid type)"}
[Trace - 2:20:20 PM] Received response 'textDocument/completion - (201)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:20 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:11: this is a definition, of func TestAp(invalid type)
[Trace - 2:20:20 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":48},"contentChanges":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"rangeLength":0,"text":"p"}]}
[Trace - 2:20:20 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:20 PM] Sending request 'textDocument/completion - (202)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":12},"context":{"triggerKind":1}}
[Trace - 2:20:20 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:12: this is a definition, of func TestApp(invalid type)"}
[Info - 2:20:20 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:12: this is a definition, of func TestApp(invalid type)
[Trace - 2:20:20 PM] Received response 'textDocument/completion - (202)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:20 PM] Sending request 'textDocument/codeAction - (203)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:20 PM] send textDocument/codeAction#203 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:13: expected '(', found newline (and 3 more errors)
[Error - 2:20:20 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:13: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:20 PM] Sending request 'textDocument/documentSymbol - (204)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:20 PM] Received response 'textDocument/documentSymbol - (204)' in 0ms.
Params: [{"name":"TestApp","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":12}}}]
[Trace - 2:20:21 PM] Sending request 'textDocument/documentLink - (205)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:21 PM] Received response 'textDocument/documentLink - (205)' in 0ms.
Params: {}
[Trace - 2:20:23 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":49},"contentChanges":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"rangeLength":0,"text":"A"}]}
[Trace - 2:20:23 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:23 PM] Sending request 'textDocument/completion - (206)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":13},"context":{"triggerKind":1}}
[Trace - 2:20:23 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestAppA(invalid type)"}
[Trace - 2:20:23 PM] Received response 'textDocument/completion - (206)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:23 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestAppA(invalid type)
[Trace - 2:20:24 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":50},"contentChanges":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"rangeLength":0,"text":"P"}]}
[Trace - 2:20:24 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:24 PM] Sending request 'textDocument/completion - (207)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":14},"context":{"triggerKind":1}}
[Trace - 2:20:24 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestAppAP(invalid type)"}
[Trace - 2:20:24 PM] Received response 'textDocument/completion - (207)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:24 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestAppAP(invalid type)
[Trace - 2:20:24 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":51},"contentChanges":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"rangeLength":0,"text":"I"}]}
[Trace - 2:20:24 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:24 PM] Sending request 'textDocument/completion - (208)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":15},"context":{"triggerKind":1}}
[Trace - 2:20:24 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:15: this is a definition, of func TestAppAPI(invalid type)"}
[Trace - 2:20:24 PM] Received response 'textDocument/completion - (208)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:24 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:15: this is a definition, of func TestAppAPI(invalid type)
[Trace - 2:20:24 PM] Sending request 'textDocument/codeAction - (209)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:24 PM] send textDocument/codeAction#209 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:16: expected '(', found newline (and 3 more errors)
[Error - 2:20:24 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:16: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:24 PM] Sending request 'textDocument/documentSymbol - (210)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:24 PM] Received response 'textDocument/documentSymbol - (210)' in 0ms.
Params: [{"name":"TestAppAPI","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":15}}}]
[Trace - 2:20:24 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":52},"contentChanges":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":15}},"rangeLength":1,"text":""}]}
[Trace - 2:20:24 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:24 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":53},"contentChanges":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":14}},"rangeLength":1,"text":""}]}
[Trace - 2:20:24 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:24 PM] Sending request 'textDocument/documentLink - (211)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:24 PM] Received response 'textDocument/documentLink - (211)' in 0ms.
Params: {}
[Trace - 2:20:25 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":54},"contentChanges":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":13}},"rangeLength":1,"text":""}]}
[Trace - 2:20:25 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:25 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":55},"contentChanges":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"rangeLength":0,"text":"R"}]}
[Trace - 2:20:25 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:25 PM] Sending request 'textDocument/completion - (212)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":13},"context":{"triggerKind":1}}
[Trace - 2:20:25 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestAppR(invalid type)"}
[Trace - 2:20:25 PM] Received response 'textDocument/completion - (212)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:25 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestAppR(invalid type)
[Trace - 2:20:25 PM] Sending request 'textDocument/codeAction - (213)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:25 PM] send textDocument/codeAction#213 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:14: expected '(', found newline (and 3 more errors)
[Error - 2:20:25 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:14: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:25 PM] Sending request 'textDocument/documentSymbol - (214)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:25 PM] Received response 'textDocument/documentSymbol - (214)' in 0ms.
Params: [{"name":"TestAppR","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":13}}}]
[Trace - 2:20:25 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":56},"contentChanges":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"rangeLength":0,"text":"a"}]}
[Trace - 2:20:25 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:25 PM] Sending request 'textDocument/completion - (215)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":14},"context":{"triggerKind":1}}
[Trace - 2:20:25 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestAppRa(invalid type)"}
[Trace - 2:20:25 PM] Received response 'textDocument/completion - (215)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:25 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestAppRa(invalid type)
[Trace - 2:20:26 PM] Sending request 'textDocument/documentLink - (216)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:26 PM] Received response 'textDocument/documentLink - (216)' in 0ms.
Params: {}
[Trace - 2:20:26 PM] Sending request 'textDocument/codeAction - (217)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:26 PM] send textDocument/codeAction#217 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:15: expected '(', found newline (and 3 more errors)
[Error - 2:20:26 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:15: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:26 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":57},"contentChanges":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"rangeLength":0,"text":"t"}]}
[Trace - 2:20:26 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:26 PM] Sending request 'textDocument/completion - (218)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":15},"context":{"triggerKind":1}}
[Trace - 2:20:26 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:15: this is a definition, of func TestAppRat(invalid type)"}
[Info - 2:20:26 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:15: this is a definition, of func TestAppRat(invalid type)
[Trace - 2:20:26 PM] Received response 'textDocument/completion - (218)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:26 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":58},"contentChanges":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"rangeLength":0,"text":"e"}]}
[Trace - 2:20:26 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":16},"end":{"line":2,"character":16}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:26 PM] Sending request 'textDocument/completion - (219)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":16},"context":{"triggerKind":1}}
[Trace - 2:20:26 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:16: this is a definition, of func TestAppRate(invalid type)"}
[Trace - 2:20:26 PM] Received response 'textDocument/completion - (219)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:26 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:16: this is a definition, of func TestAppRate(invalid type)
[Trace - 2:20:26 PM] Sending request 'textDocument/codeAction - (220)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":16},"end":{"line":2,"character":16}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":16},"end":{"line":2,"character":16}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:26 PM] send textDocument/codeAction#220 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:17: expected '(', found newline (and 3 more errors)
[Error - 2:20:26 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:17: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:26 PM] Sending request 'textDocument/documentSymbol - (221)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:26 PM] Received response 'textDocument/documentSymbol - (221)' in 0ms.
Params: [{"name":"TestAppRate","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":16}}}]
[Trace - 2:20:26 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":59},"contentChanges":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":16}},"rangeLength":1,"text":""}]}
[Trace - 2:20:26 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:26 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":60},"contentChanges":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":15}},"rangeLength":1,"text":""}]}
[Trace - 2:20:26 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:26 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":61},"contentChanges":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":14}},"rangeLength":1,"text":""}]}
[Trace - 2:20:26 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":62},"contentChanges":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":13}},"rangeLength":1,"text":""}]}
[Trace - 2:20:27 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":63},"contentChanges":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":12}},"rangeLength":1,"text":""}]}
[Trace - 2:20:27 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":64},"contentChanges":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":11}},"rangeLength":1,"text":""}]}
[Trace - 2:20:27 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending request 'textDocument/documentLink - (222)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:27 PM] Received response 'textDocument/documentLink - (222)' in 0ms.
Params: {}
[Trace - 2:20:27 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":65},"contentChanges":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":10}},"rangeLength":1,"text":""}]}
[Trace - 2:20:27 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending request 'textDocument/codeAction - (223)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:27 PM] send textDocument/codeAction#223 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
[Error - 2:20:27 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:10: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:27 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":66},"contentChanges":[{"range":{"start":{"line":2,"character":9},"end":{"line":2,"character":9}},"rangeLength":0,"text":"C"}]}
[Trace - 2:20:27 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending request 'textDocument/completion - (224)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":10},"context":{"triggerKind":1}}
[Trace - 2:20:27 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:10: this is a definition, of func TestC(invalid type)"}
[Trace - 2:20:27 PM] Received response 'textDocument/completion - (224)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:27 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:10: this is a definition, of func TestC(invalid type)
[Trace - 2:20:27 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":67},"contentChanges":[{"range":{"start":{"line":2,"character":10},"end":{"line":2,"character":10}},"rangeLength":0,"text":"o"}]}
[Trace - 2:20:27 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending request 'textDocument/completion - (225)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":11},"context":{"triggerKind":1}}
[Trace - 2:20:27 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:11: this is a definition, of func TestCo(invalid type)"}
[Trace - 2:20:27 PM] Received response 'textDocument/completion - (225)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:27 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:11: this is a definition, of func TestCo(invalid type)
[Trace - 2:20:27 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":68},"contentChanges":[{"range":{"start":{"line":2,"character":11},"end":{"line":2,"character":11}},"rangeLength":0,"text":"n"}]}
[Trace - 2:20:27 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending request 'textDocument/completion - (226)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":12},"context":{"triggerKind":1}}
[Trace - 2:20:27 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:12: this is a definition, of func TestCon(invalid type)"}
[Trace - 2:20:27 PM] Received response 'textDocument/completion - (226)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:27 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:12: this is a definition, of func TestCon(invalid type)
[Trace - 2:20:27 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":69},"contentChanges":[{"range":{"start":{"line":2,"character":12},"end":{"line":2,"character":12}},"rangeLength":0,"text":"t"}]}
[Trace - 2:20:27 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending request 'textDocument/completion - (227)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":13},"context":{"triggerKind":1}}
[Trace - 2:20:27 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestCont(invalid type)"}
[Trace - 2:20:27 PM] Received response 'textDocument/completion - (227)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:27 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:13: this is a definition, of func TestCont(invalid type)
[Trace - 2:20:27 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":70},"contentChanges":[{"range":{"start":{"line":2,"character":13},"end":{"line":2,"character":13}},"rangeLength":0,"text":"r"}]}
[Trace - 2:20:27 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:27 PM] Sending request 'textDocument/completion - (228)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":14},"context":{"triggerKind":1}}
[Trace - 2:20:27 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestContr(invalid type)"}
[Info - 2:20:27 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:14: this is a definition, of func TestContr(invalid type)
[Trace - 2:20:27 PM] Received response 'textDocument/completion - (228)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:28 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":71},"contentChanges":[{"range":{"start":{"line":2,"character":14},"end":{"line":2,"character":14}},"rangeLength":0,"text":"a"}]}
[Trace - 2:20:28 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:28 PM] Sending request 'textDocument/completion - (229)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":15},"context":{"triggerKind":1}}
[Trace - 2:20:28 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:15: this is a definition, of func TestContra(invalid type)"}
[Info - 2:20:28 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:15: this is a definition, of func TestContra(invalid type)
[Trace - 2:20:28 PM] Received response 'textDocument/completion - (229)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:28 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":72},"contentChanges":[{"range":{"start":{"line":2,"character":15},"end":{"line":2,"character":15}},"rangeLength":0,"text":"c"}]}
[Trace - 2:20:28 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":16},"end":{"line":2,"character":16}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:28 PM] Sending request 'textDocument/completion - (230)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":16},"context":{"triggerKind":1}}
[Trace - 2:20:28 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:16: this is a definition, of func TestContrac(invalid type)"}
[Trace - 2:20:28 PM] Received response 'textDocument/completion - (230)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:28 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:16: this is a definition, of func TestContrac(invalid type)
[Trace - 2:20:28 PM] Sending request 'textDocument/documentLink - (231)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:28 PM] Received response 'textDocument/documentLink - (231)' in 0ms.
Params: {}
[Trace - 2:20:28 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":73},"contentChanges":[{"range":{"start":{"line":2,"character":16},"end":{"line":2,"character":16}},"rangeLength":0,"text":"t"}]}
[Trace - 2:20:28 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":17},"end":{"line":2,"character":17}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:28 PM] Sending request 'textDocument/completion - (232)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":17},"context":{"triggerKind":1}}
[Trace - 2:20:28 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:17: this is a definition, of func TestContract(invalid type)"}
[Trace - 2:20:28 PM] Received response 'textDocument/completion - (232)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:28 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:17: this is a definition, of func TestContract(invalid type)
[Trace - 2:20:28 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":74},"contentChanges":[{"range":{"start":{"line":2,"character":17},"end":{"line":2,"character":17}},"rangeLength":0,"text":"_"}]}
[Trace - 2:20:28 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":18},"end":{"line":2,"character":18}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:28 PM] Sending request 'textDocument/completion - (233)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":18},"context":{"triggerKind":1}}
[Trace - 2:20:28 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:18: this is a definition, of func TestContract_(invalid type)"}
[Trace - 2:20:28 PM] Received response 'textDocument/completion - (233)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:28 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:18: this is a definition, of func TestContract_(invalid type)
[Trace - 2:20:28 PM] Sending request 'textDocument/codeAction - (234)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":18},"end":{"line":2,"character":18}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":18},"end":{"line":2,"character":18}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:28 PM] send textDocument/codeAction#234 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:19: expected '(', found newline (and 3 more errors)
[Error - 2:20:28 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:19: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:29 PM] Sending request 'textDocument/documentSymbol - (235)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:29 PM] Received response 'textDocument/documentSymbol - (235)' in 0ms.
Params: [{"name":"TestContract_","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":18}}}]
[Trace - 2:20:29 PM] Sending request 'textDocument/documentLink - (236)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:29 PM] Received response 'textDocument/documentLink - (236)' in 0ms.
Params: {}
[Trace - 2:20:30 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":75},"contentChanges":[{"range":{"start":{"line":2,"character":18},"end":{"line":2,"character":18}},"rangeLength":0,"text":"a"}]}
[Trace - 2:20:30 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":19},"end":{"line":2,"character":19}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:30 PM] Sending request 'textDocument/completion - (237)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":19},"context":{"triggerKind":1}}
[Trace - 2:20:30 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:19: this is a definition, of func TestContract_a(invalid type)"}
[Trace - 2:20:30 PM] Received response 'textDocument/completion - (237)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:30 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:19: this is a definition, of func TestContract_a(invalid type)
[Trace - 2:20:30 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":76},"contentChanges":[{"range":{"start":{"line":2,"character":19},"end":{"line":2,"character":19}},"rangeLength":0,"text":"p"}]}
[Trace - 2:20:30 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":20},"end":{"line":2,"character":20}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:30 PM] Sending request 'textDocument/completion - (238)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":20},"context":{"triggerKind":1}}
[Trace - 2:20:30 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:20: this is a definition, of func TestContract_ap(invalid type)"}
[Trace - 2:20:30 PM] Received response 'textDocument/completion - (238)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:30 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:20: this is a definition, of func TestContract_ap(invalid type)
[Trace - 2:20:30 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":77},"contentChanges":[{"range":{"start":{"line":2,"character":20},"end":{"line":2,"character":20}},"rangeLength":0,"text":"i"}]}
[Trace - 2:20:30 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":21},"end":{"line":2,"character":21}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:30 PM] Sending request 'textDocument/completion - (239)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":21},"context":{"triggerKind":1}}
[Trace - 2:20:30 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:21: this is a definition, of func TestContract_api(invalid type)"}
[Trace - 2:20:30 PM] Received response 'textDocument/completion - (239)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:30 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:21: this is a definition, of func TestContract_api(invalid type)
[Trace - 2:20:30 PM] Sending request 'textDocument/codeAction - (240)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":21},"end":{"line":2,"character":21}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":21},"end":{"line":2,"character":21}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:30 PM] send textDocument/codeAction#240 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:22: expected '(', found newline (and 3 more errors)
[Error - 2:20:30 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:22: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:30 PM] Sending request 'textDocument/documentSymbol - (241)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:30 PM] Received response 'textDocument/documentSymbol - (241)' in 0ms.
Params: [{"name":"TestContract_api","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":21}}}]
[Trace - 2:20:30 PM] Sending request 'textDocument/documentLink - (242)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:30 PM] Received response 'textDocument/documentLink - (242)' in 0ms.
Params: {}
[Trace - 2:20:31 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":78},"contentChanges":[{"range":{"start":{"line":2,"character":21},"end":{"line":2,"character":21}},"rangeLength":0,"text":"_"}]}
[Trace - 2:20:31 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":22},"end":{"line":2,"character":22}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:31 PM] Sending request 'textDocument/completion - (243)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":22},"context":{"triggerKind":1}}
[Trace - 2:20:31 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:22: this is a definition, of func TestContract_api_(invalid type)"}
[Trace - 2:20:31 PM] Received response 'textDocument/completion - (243)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:31 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:22: this is a definition, of func TestContract_api_(invalid type)
[Trace - 2:20:32 PM] Sending request 'textDocument/codeAction - (244)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":22},"end":{"line":2,"character":22}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":22},"end":{"line":2,"character":22}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:32 PM] send textDocument/codeAction#244 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:23: expected '(', found newline (and 3 more errors)
[Error - 2:20:32 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:23: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:32 PM] Sending request 'textDocument/documentSymbol - (245)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:32 PM] Received response 'textDocument/documentSymbol - (245)' in 0ms.
Params: [{"name":"TestContract_api_","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":22}}}]
[Trace - 2:20:32 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":79},"contentChanges":[{"range":{"start":{"line":2,"character":22},"end":{"line":2,"character":22}},"rangeLength":0,"text":"r"}]}
[Trace - 2:20:32 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":23},"end":{"line":2,"character":23}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:32 PM] Sending request 'textDocument/completion - (246)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":23},"context":{"triggerKind":1}}
[Trace - 2:20:32 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:23: this is a definition, of func TestContract_api_r(invalid type)"}
[Trace - 2:20:32 PM] Received response 'textDocument/completion - (246)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:32 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:23: this is a definition, of func TestContract_api_r(invalid type)
[Trace - 2:20:32 PM] Sending request 'textDocument/codeAction - (247)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":23},"end":{"line":2,"character":23}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":23},"end":{"line":2,"character":23}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:32 PM] send textDocument/codeAction#247 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:24: expected '(', found newline (and 3 more errors)
[Error - 2:20:32 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:24: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:32 PM] Sending request 'textDocument/documentSymbol - (248)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:32 PM] Received response 'textDocument/documentSymbol - (248)' in 0ms.
Params: [{"name":"TestContract_api_r","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":23}}}]
[Trace - 2:20:32 PM] Sending request 'textDocument/documentLink - (249)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:32 PM] Received response 'textDocument/documentLink - (249)' in 0ms.
Params: {}
[Trace - 2:20:32 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":80},"contentChanges":[{"range":{"start":{"line":2,"character":23},"end":{"line":2,"character":23}},"rangeLength":0,"text":"a"}]}
[Trace - 2:20:32 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":24},"end":{"line":2,"character":24}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:32 PM] Sending request 'textDocument/completion - (250)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":24},"context":{"triggerKind":1}}
[Trace - 2:20:32 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:24: this is a definition, of func TestContract_api_ra(invalid type)"}
[Trace - 2:20:32 PM] Received response 'textDocument/completion - (250)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:32 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:24: this is a definition, of func TestContract_api_ra(invalid type)
[Trace - 2:20:33 PM] Sending request 'textDocument/codeAction - (251)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":24},"end":{"line":2,"character":24}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":24},"end":{"line":2,"character":24}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:33 PM] send textDocument/codeAction#251 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:25: expected '(', found newline (and 3 more errors)
[Error - 2:20:33 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:25: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:33 PM] Sending request 'textDocument/documentSymbol - (252)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:33 PM] Received response 'textDocument/documentSymbol - (252)' in 0ms.
Params: [{"name":"TestContract_api_ra","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":24}}}]
[Trace - 2:20:33 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":81},"contentChanges":[{"range":{"start":{"line":2,"character":23},"end":{"line":2,"character":24}},"rangeLength":1,"text":""}]}
[Trace - 2:20:33 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":23},"end":{"line":2,"character":23}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:33 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":82},"contentChanges":[{"range":{"start":{"line":2,"character":22},"end":{"line":2,"character":23}},"rangeLength":1,"text":""}]}
[Trace - 2:20:33 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":22},"end":{"line":2,"character":22}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:33 PM] Sending request 'textDocument/codeAction - (253)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":22},"end":{"line":2,"character":22}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":22},"end":{"line":2,"character":22}},"message":"expected '(', found newline","severity":1,"source":"LSP"}]}}
[Error - 2:20:33 PM] send textDocument/codeAction#253 /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:23: expected '(', found newline (and 3 more errors)
[Error - 2:20:33 PM] Request textDocument/codeAction failed.
Message: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:3:23: expected '(', found newline (and 3 more errors)
Code: 0
[Trace - 2:20:33 PM] Sending request 'textDocument/documentLink - (254)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:33 PM] Received response 'textDocument/documentLink - (254)' in 0ms.
Params: {}
[Trace - 2:20:33 PM] Sending request 'textDocument/documentSymbol - (255)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:33 PM] Received response 'textDocument/documentSymbol - (255)' in 0ms.
Params: [{"name":"TestContract_api_","detail":"(invalid type)","kind":12,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":22}}}]
[Trace - 2:20:38 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":83},"contentChanges":[{"range":{"start":{"line":2,"character":22},"end":{"line":2,"character":22}},"rangeLength":0,"text":"R"}]}
[Trace - 2:20:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":23},"end":{"line":2,"character":23}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:38 PM] Sending request 'textDocument/completion - (256)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":23},"context":{"triggerKind":1}}
[Trace - 2:20:38 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:23: this is a definition, of func TestContract_api_R(invalid type)"}
[Trace - 2:20:38 PM] Received response 'textDocument/completion - (256)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:38 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:23: this is a definition, of func TestContract_api_R(invalid type)
[Trace - 2:20:38 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":84},"contentChanges":[{"range":{"start":{"line":2,"character":23},"end":{"line":2,"character":23}},"rangeLength":0,"text":"a"}]}
[Trace - 2:20:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":24},"end":{"line":2,"character":24}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:38 PM] Sending request 'textDocument/completion - (257)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":24},"context":{"triggerKind":1}}
[Trace - 2:20:38 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:24: this is a definition, of func TestContract_api_Ra(invalid type)"}
[Trace - 2:20:38 PM] Received response 'textDocument/completion - (257)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:38 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:24: this is a definition, of func TestContract_api_Ra(invalid type)
[Trace - 2:20:38 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":85},"contentChanges":[{"range":{"start":{"line":2,"character":24},"end":{"line":2,"character":24}},"rangeLength":0,"text":"t"}]}
[Trace - 2:20:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":25},"end":{"line":2,"character":25}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:38 PM] Sending request 'textDocument/completion - (258)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":25},"context":{"triggerKind":1}}
[Trace - 2:20:38 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:25: this is a definition, of func TestContract_api_Rat(invalid type)"}
[Info - 2:20:38 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:25: this is a definition, of func TestContract_api_Rat(invalid type)
[Trace - 2:20:38 PM] Received response 'textDocument/completion - (258)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:38 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":86},"contentChanges":[{"range":{"start":{"line":2,"character":25},"end":{"line":2,"character":25}},"rangeLength":0,"text":"e"}]}
[Trace - 2:20:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":26},"end":{"line":2,"character":26}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:38 PM] Sending request 'textDocument/completion - (259)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":26},"context":{"triggerKind":1}}
[Trace - 2:20:38 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:26: this is a definition, of func TestContract_api_Rate(invalid type)"}
[Trace - 2:20:38 PM] Received response 'textDocument/completion - (259)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:38 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:26: this is a definition, of func TestContract_api_Rate(invalid type)
[Trace - 2:20:38 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":87},"contentChanges":[{"range":{"start":{"line":2,"character":26},"end":{"line":2,"character":26}},"rangeLength":0,"text":"L"}]}
[Trace - 2:20:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":27},"end":{"line":2,"character":27}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:38 PM] Sending request 'textDocument/completion - (260)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":27},"context":{"triggerKind":1}}
[Trace - 2:20:38 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:27: this is a definition, of func TestContract_api_RateL(invalid type)"}
[Trace - 2:20:38 PM] Received response 'textDocument/completion - (260)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:38 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:27: this is a definition, of func TestContract_api_RateL(invalid type)
[Trace - 2:20:38 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":88},"contentChanges":[{"range":{"start":{"line":2,"character":27},"end":{"line":2,"character":27}},"rangeLength":0,"text":"i"}]}
[Trace - 2:20:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":28},"end":{"line":2,"character":28}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:38 PM] Sending request 'textDocument/completion - (261)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":28},"context":{"triggerKind":1}}
[Trace - 2:20:38 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:28: this is a definition, of func TestContract_api_RateLi(invalid type)"}
[Info - 2:20:38 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:28: this is a definition, of func TestContract_api_RateLi(invalid type)
[Trace - 2:20:38 PM] Received response 'textDocument/completion - (261)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:38 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":89},"contentChanges":[{"range":{"start":{"line":2,"character":28},"end":{"line":2,"character":28}},"rangeLength":0,"text":"m"}]}
[Trace - 2:20:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":29},"end":{"line":2,"character":29}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:38 PM] Sending request 'textDocument/completion - (262)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":29},"context":{"triggerKind":1}}
[Trace - 2:20:38 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:29: this is a definition, of func TestContract_api_RateLim(invalid type)"}
[Trace - 2:20:38 PM] Received response 'textDocument/completion - (262)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:38 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:29: this is a definition, of func TestContract_api_RateLim(invalid type)
[Trace - 2:20:38 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":90},"contentChanges":[{"range":{"start":{"line":2,"character":29},"end":{"line":2,"character":29}},"rangeLength":0,"text":"i"}]}
[Trace - 2:20:38 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":30},"end":{"line":2,"character":30}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:38 PM] Sending request 'textDocument/completion - (263)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":30},"context":{"triggerKind":1}}
[Trace - 2:20:38 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:30: this is a definition, of func TestContract_api_RateLimi(invalid type)"}
[Trace - 2:20:38 PM] Received response 'textDocument/completion - (263)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:38 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:30: this is a definition, of func TestContract_api_RateLimi(invalid type)
[Trace - 2:20:39 PM] Sending request 'textDocument/documentLink - (264)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:39 PM] Received response 'textDocument/documentLink - (264)' in 0ms.
Params: {}
[Trace - 2:20:39 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":91},"contentChanges":[{"range":{"start":{"line":2,"character":30},"end":{"line":2,"character":30}},"rangeLength":0,"text":"t"}]}
[Trace - 2:20:39 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":31},"end":{"line":2,"character":31}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:39 PM] Sending request 'textDocument/completion - (265)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":31},"context":{"triggerKind":1}}
[Trace - 2:20:39 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:31: this is a definition, of func TestContract_api_RateLimit(invalid type)"}
[Trace - 2:20:39 PM] Received response 'textDocument/completion - (265)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:39 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:31: this is a definition, of func TestContract_api_RateLimit(invalid type)
[Trace - 2:20:39 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":92},"contentChanges":[{"range":{"start":{"line":2,"character":31},"end":{"line":2,"character":31}},"rangeLength":0,"text":"e"}]}
[Trace - 2:20:39 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":32},"end":{"line":2,"character":32}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:39 PM] Sending request 'textDocument/completion - (266)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":32},"context":{"triggerKind":1}}
[Trace - 2:20:39 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:32: this is a definition, of func TestContract_api_RateLimite(invalid type)"}
[Trace - 2:20:39 PM] Received response 'textDocument/completion - (266)' in 1ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:39 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:32: this is a definition, of func TestContract_api_RateLimite(invalid type)
[Trace - 2:20:39 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":93},"contentChanges":[{"range":{"start":{"line":2,"character":32},"end":{"line":2,"character":32}},"rangeLength":0,"text":"r"}]}
[Trace - 2:20:39 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":33},"end":{"line":2,"character":33}},"severity":1,"source":"LSP","message":"expected '(', found newline"}]}
[Trace - 2:20:39 PM] Sending request 'textDocument/completion - (267)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":33},"context":{"triggerKind":1}}
[Trace - 2:20:39 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:33: this is a definition, of func TestContract_api_RateLimiter(invalid type)"}
[Trace - 2:20:39 PM] Received response 'textDocument/completion - (267)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:39 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:33: this is a definition, of func TestContract_api_RateLimiter(invalid type)
[Trace - 2:20:39 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":94},"contentChanges":[{"range":{"start":{"line":2,"character":33},"end":{"line":2,"character":33}},"rangeLength":0,"text":"()"}]}
[Trace - 2:20:39 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:20:39 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":95},"contentChanges":[{"range":{"start":{"line":2,"character":34},"end":{"line":2,"character":34}},"rangeLength":0,"text":"t"}]}
[Trace - 2:20:39 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":34},"end":{"line":2,"character":35}},"severity":1,"source":"LSP","message":"undeclared name: t"}]}
[Trace - 2:20:39 PM] Sending request 'textDocument/completion - (268)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":35},"context":{"triggerKind":1}}
[Trace - 2:20:39 PM] Received response 'textDocument/completion - (268)' in 0ms.
Params: {"isIncomplete":false,"items":[{"label":"TestContract_api_RateLimiter","kind":3,"detail":"func(invalid type)","preselect":true,"sortText":"00000","filterText":"TestContract_api_RateLimiter","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":34},"end":{"line":2,"character":35}},"newText":"TestContract_api_RateLimiter(${1:invalid type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"true","kind":21,"sortText":"00039","filterText":"true","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":34},"end":{"line":2,"character":35}},"newText":"true"}}]}
[Trace - 2:20:39 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":96},"contentChanges":[{"range":{"start":{"line":2,"character":35},"end":{"line":2,"character":35}},"rangeLength":0,"text":" "}]}
[Trace - 2:20:39 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":34},"end":{"line":2,"character":35}},"severity":1,"source":"LSP","message":"undeclared name: t"}]}
[Trace - 2:20:39 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":97},"contentChanges":[{"range":{"start":{"line":2,"character":36},"end":{"line":2,"character":36}},"rangeLength":0,"text":"*"}]}
[Trace - 2:20:39 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":37}},"severity":1,"source":"LSP","message":"expected type, found ')'"}]}
[Trace - 2:20:39 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":98},"contentChanges":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":37}},"rangeLength":0,"text":"t"}]}
[Trace - 2:20:39 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":38}},"severity":1,"source":"LSP","message":"undeclared name: t"}]}
[Trace - 2:20:39 PM] Sending request 'textDocument/completion - (269)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":38},"context":{"triggerKind":1}}
[Trace - 2:20:39 PM] Received response 'textDocument/completion - (269)' in 1ms.
Params: {"isIncomplete":false,"items":[{"label":"t","kind":6,"detail":"*invalid type","preselect":true,"sortText":"00000","filterText":"t","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":38}},"newText":"t"}},{"label":"TestContract_api_RateLimiter","kind":3,"detail":"func(t *invalid type)","sortText":"00001","filterText":"TestContract_api_RateLimiter","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":38}},"newText":"TestContract_api_RateLimiter(${1:t *invalid type})"},"command":{"title":"","command":"editor.action.triggerParameterHints"}},{"label":"true","kind":21,"sortText":"00040","filterText":"true","insertTextFormat":2,"textEdit":{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":38}},"newText":"true"}}]}
[Trace - 2:20:39 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":99},"contentChanges":[{"range":{"start":{"line":2,"character":38},"end":{"line":2,"character":38}},"rangeLength":0,"text":"e"}]}
[Trace - 2:20:39 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":39}},"severity":1,"source":"LSP","message":"undeclared name: te"}]}
[Trace - 2:20:40 PM] Sending request 'textDocument/signatureHelp - (270)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":39}}
[Trace - 2:20:40 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no signature help for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:39 : cannot find an enclosing function"}
[Info - 2:20:40 PM] no signature help for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:39 : cannot find an enclosing function
[Trace - 2:20:40 PM] Received response 'textDocument/signatureHelp - (270)' in 1ms.
Params: {}
[Trace - 2:20:40 PM] Sending request 'textDocument/documentLink - (271)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:40 PM] Received response 'textDocument/documentLink - (271)' in 0ms.
Params: {}
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":100},"contentChanges":[{"range":{"start":{"line":2,"character":39},"end":{"line":2,"character":39}},"rangeLength":0,"text":"s"}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":40}},"severity":1,"source":"LSP","message":"undeclared name: tes"}]}
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":101},"contentChanges":[{"range":{"start":{"line":2,"character":40},"end":{"line":2,"character":40}},"rangeLength":0,"text":"t"}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":41}},"severity":1,"source":"LSP","message":"undeclared name: test"}]}
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":102},"contentChanges":[{"range":{"start":{"line":2,"character":41},"end":{"line":2,"character":41}},"rangeLength":0,"text":"i"}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":42}},"severity":1,"source":"LSP","message":"undeclared name: testi"}]}
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":103},"contentChanges":[{"range":{"start":{"line":2,"character":42},"end":{"line":2,"character":42}},"rangeLength":0,"text":"n"}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":43}},"severity":1,"source":"LSP","message":"undeclared name: testin"}]}
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":104},"contentChanges":[{"range":{"start":{"line":2,"character":43},"end":{"line":2,"character":43}},"rangeLength":0,"text":"g"}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":44}},"severity":1,"source":"LSP","message":"undeclared name: testing"}]}
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":105},"contentChanges":[{"range":{"start":{"line":2,"character":44},"end":{"line":2,"character":44}},"rangeLength":0,"text":"."}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":45},"end":{"line":2,"character":45}},"severity":1,"source":"LSP","message":"expected 'IDENT', found ')'"}]}
[Trace - 2:20:40 PM] Sending request 'textDocument/completion - (272)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":45},"context":{"triggerKind":2,"triggerCharacter":"."}}
[Trace - 2:20:40 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:45: cannot resolve testing"}
[Trace - 2:20:40 PM] Received response 'textDocument/completion - (272)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Info - 2:20:40 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:45: cannot resolve testing
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":106},"contentChanges":[{"range":{"start":{"line":2,"character":45},"end":{"line":2,"character":45}},"rangeLength":0,"text":"T"}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":46}},"severity":1,"source":"LSP","message":"undeclared name: testing"}]}
[Trace - 2:20:40 PM] Sending request 'textDocument/completion - (273)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":46},"context":{"triggerKind":1}}
[Trace - 2:20:40 PM] Received notification 'window/logMessage'.
Params: {"type":3,"message":"no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:46: cannot resolve testing"}
[Info - 2:20:40 PM] no completions found for file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:2:46: cannot resolve testing
[Trace - 2:20:40 PM] Received response 'textDocument/completion - (273)' in 0ms.
Params: {"isIncomplete":false,"items":[]}
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":107},"contentChanges":[{"range":{"start":{"line":2,"character":46},"end":{"line":2,"character":47}},"rangeLength":1,"text":")"}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":46}},"severity":1,"source":"LSP","message":"undeclared name: testing"}]}
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":108},"contentChanges":[{"range":{"start":{"line":2,"character":47},"end":{"line":2,"character":47}},"rangeLength":0,"text":" "}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":46}},"severity":1,"source":"LSP","message":"undeclared name: testing"}]}
[Trace - 2:20:40 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":109},"contentChanges":[{"range":{"start":{"line":2,"character":48},"end":{"line":2,"character":48}},"rangeLength":0,"text":"{}"}]}
[Trace - 2:20:40 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":46}},"severity":1,"source":"LSP","message":"undeclared name: testing"}]}
[Trace - 2:20:41 PM] Sending request 'textDocument/documentLink - (274)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:41 PM] Received response 'textDocument/documentLink - (274)' in 0ms.
Params: {}
[Trace - 2:20:41 PM] Sending request 'textDocument/codeAction - (275)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":49},"end":{"line":2,"character":49}},"context":{"diagnostics":[]}}
[Trace - 2:20:41 PM] Received response 'textDocument/codeAction - (275)' in 10ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[{"range":{"start":{"line":2,"character":0},"end":{"line":3,"character":0}},"newText":""},{"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":0}},"newText":"import \"testing\"\n"},{"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":0}},"newText":"\n"},{"range":{"start":{"line":3,"character":0},"end":{"line":3,"character":0}},"newText":"func TestContract_api_RateLimiter(t *testing.T) {}\n"}]}}}]
[Trace - 2:20:41 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":110},"contentChanges":[{"range":{"start":{"line":2,"character":49},"end":{"line":2,"character":49}},"rangeLength":0,"text":"\n\t\n"}]}
[Trace - 2:20:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":46}},"severity":1,"source":"LSP","message":"undeclared name: testing"}]}
[Trace - 2:20:41 PM] Sending request 'textDocument/documentSymbol - (276)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:41 PM] Received response 'textDocument/documentSymbol - (276)' in 0ms.
Params: [{"name":"TestContract_api_RateLimiter","detail":"(t *invalid type)","kind":12,"range":{"start":{"line":2,"character":0},"end":{"line":4,"character":1}},"selectionRange":{"start":{"line":2,"character":5},"end":{"line":2,"character":33}}}]
[Trace - 2:20:42 PM] Sending request 'textDocument/documentLink - (277)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:20:42 PM] Received response 'textDocument/documentLink - (277)' in 0ms.
Params: {}
[Trace - 2:20:55 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","languageId":"go","version":1,"text":"package api\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/ioutil\"\n\t\"mime\"\n\t\"mime/multipart\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"github.com/fastly/REDACTED/pkg/auth\"\n\t\"github.com/fastly/REDACTED/pkg/errors\"\n\t\"github.com/fastly/REDACTED/pkg/object\"\n\t\"github.com/fastly/REDACTED/pkg/replica\"\n\t\"github.com/fastly/REDACTED/pkg/ring\"\n\t\"github.com/gorilla/mux\"\n)\n\nconst (\n\t// LimitRemainingHeaderKey is a response header that contains the remaining\n\t// capacity of a limiter.\n\tLimitRemainingHeaderKey = \"Fastly-Limit-Remaining\" // TODO(pb)\n\n\t// CausalContextHeaderKey is a request and response header that contains the\n\t// opaque context (dotted version vector set) for multi-value register API\n\t// calls.\n\tCausalContextHeaderKey = \"Fastly-Causal-Context\" // TODO(pb)\n\n\t// LWWTimestampKey is a response header that contains the lexicographical\n\t// timestamp string associated with a LWWRegister value.\n\tLWWTimestampKey = \"Fastly-LWW-Timestamp\"\n\n\t// MaxObjectSizeBytes is the maximum request body size that will be accepted\n\t// in a PUT to a register. The value has been chosen arbitrarily.\n\tMaxObjectSizeBytes = 10 * 1024 * 1024 // 10MB\n\n\t// MaxItemSizeBytes is the maximum request body size that will be accepted\n\t// for an item added to a HyperLogLog. The value has been chosen\n\t// arbitrarily.\n\tMaxItemSizeBytes = 100 * 1024 // 100KB\n)\n\n// Auth enumerates the methods required by the public API, modeling part of an\n// auth.Node. It's a consumer contract for the PublicServer.\ntype Auth interface {\n\tExecMode(ctx context.Context, token, id string, op interface{}, mode ring.ConsistencyMode) (object.Raw, error)\n}\n\n// Assert that the Auth interface is implemented by auth.Node.\nvar _ Auth = (*auth.Node)(nil)\n\n//\n//\n//\n\n// PublicServer wraps an Auth instance (e.g. an auth.Node) and implements the\n// public API HTTP endpoints. PublicServer has no corresponding PublicClient,\n// because the only consumers of this interface are, presumably, actual users.\ntype PublicServer struct {\n\tauth Auth\n\thttp.Handler\n}\n\n// NewPublicServer wraps the provided Public instance and makes it available over HTTP.\nfunc NewPublicServer(a Auth) *PublicServer {\n\ts := &PublicServer{auth: a}\n\tr := mux.NewRouter()\n\tr.StrictSlash(true)\n\tr.Path(\"/limit/{id:[^/]+}/{capacity:[0-9]+}/{window:[^/]+}\").Methods(\"POST\").HandlerFunc(s.handleLimit)\n\tr.Path(\"/value/{id:[^/]+}\").Methods(\"PUT\").HandlerFunc(s.handleSinglePut)\n\tr.Path(\"/value/{id:[^/]+}\").Methods(\"GET\").HandlerFunc(s.handleSingleGet)\n\tr.Path(\"/multivalue/{id:[^/]+}\").Methods(\"PUT\").HandlerFunc(s.handleMultiPut)\n\tr.Path(\"/multivalue/{id:[^/]+}\").Methods(\"GET\").HandlerFunc(s.handleMultiGet)\n\tr.Path(\"/hyperloglog/{id:[^/]+}\").Methods(\"POST\").HandlerFunc(s.handleHyperLogLogPost)\n\tr.Path(\"/hyperloglog/{id:[^/]+}\").Methods(\"GET\").HandlerFunc(s.handleHyperLogLogGet)\n\tr.Path(\"/bloom/{id:[^/]+}/{capacity:[0-9]+}/{fpr:[0-9\\\\.]+}\").Methods(\"POST\").HandlerFunc(s.handleBloomPost)\n\tr.Path(\"/bloom/{id:[^/]+}\").Methods(\"GET\").HandlerFunc(s.handleBloomGet)\n\ts.Handler = r\n\treturn s\n}\n\nfunc (s *PublicServer) handleLimit(w http.ResponseWriter, r *http.Request) {\n\tsetRoute(r.Context(), \"POST /limit\")\n\n\ttoken, err := parseToken(r)\n\tif err != nil {\n\t\terrors.Encode(w, err)\n\t\treturn\n\t}\n\n\tvar (\n\t\tvars = mux.Vars(r)\n\t\tid = vars[\"id\"]\n\t\tmode = parseConsistencyMode(r.URL.Query())\n\t)\n\tif id == \"\" {\n\t\terrors.Encode(w, ErrNoID)\n\t\treturn\n\t}\n\n\tcapacityStr := vars[\"capacity\"]\n\tif capacityStr == \"\" {\n\t\terrors.Encode(w, errors.New(\"capacity parameter is required (internal routing error)\"))\n\t\treturn\n\t}\n\n\tcapacity, err := strconv.ParseUint(capacityStr, 10, 64)\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapfCode(http.StatusBadRequest, err, \"invalid capacity (%s)\", capacityStr))\n\t\treturn\n\t}\n\n\twindowStr := vars[\"window\"]\n\tif windowStr == \"\" {\n\t\terrors.Encode(w, errors.Wrap(err, \"window parameter is required (internal routing error)\"))\n\t\treturn\n\t}\n\n\twindow, err := time.ParseDuration(windowStr)\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapfCode(http.StatusBadRequest, err, \"invalid window (%s)\", windowStr))\n\t\treturn\n\t}\n\tid = fmt.Sprintf(\"%s_%s\", id, time.Now().UTC().Truncate(window).Format(\"20060102150405\"))\n\n\tvar n uint64 = 1\n\tif nStr := r.URL.Query().Get(\"n\"); nStr != \"\" {\n\t\tvar err error\n\t\tn, err = strconv.ParseUint(nStr, 10, 64)\n\t\tif err != nil {\n\t\t\terrors.WrapfCode(http.StatusBadRequest, err, \"invalid n (%s)\", nStr)\n\t\t\treturn\n\t\t}\n\t}\n\n\t// DCounterDecrement will return object.ErrCapacityExceeded if it would go\n\t// below zero. We catch that here.\n\tobj, err := s.auth.ExecMode(r.Context(), token, id, replica.DCounterDecrement{Capacity: capacity, Delta: n}, mode)\n\tif errors.SomewhatEqual(err, object.ErrCapacityExceeded) {\n\t\tencodePublicError(w, object.ErrCapacityExceeded)\n\t\treturn\n\t}\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrapf(err, \"error executing rate limiting request\"))\n\t\treturn\n\t}\n\n\tvar counter object.DCounter\n\tif err := counter.Deserialize(obj); err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error deserializing response object\"))\n\t\treturn\n\t}\n\n\tremaining := counter.Read()\n\tw.Header().Set(LimitRemainingHeaderKey, fmt.Sprint(remaining))\n\trespondPublicSuccessf(w, \"OK, %d remaining\\n\", remaining)\n}\n\nfunc (s *PublicServer) handleMultiPut(w http.ResponseWriter, r *http.Request) {\n\tsetRoute(r.Context(), \"PUT /multivalue\")\n\n\ttoken, err := parseToken(r)\n\tif err != nil {\n\t\terrors.Encode(w, err)\n\t\treturn\n\t}\n\n\tvar (\n\t\tid = mux.Vars(r)[\"id\"]\n\t\tmode = parseConsistencyMode(r.URL.Query())\n\t)\n\tif id == \"\" {\n\t\terrors.Encode(w, ErrNoID)\n\t\treturn\n\t}\n\n\tvalue, err := ioutil.ReadAll(http.MaxBytesReader(w, r.Body, MaxObjectSizeBytes))\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapCode(http.StatusBadRequest, err, \"error reading request body\"))\n\t\treturn\n\t}\n\n\t_, force := r.URL.Query()[\"force\"]\n\n\tvar context object.DottedVersionVectorSet\n\tif !force {\n\t\tif contextStr := r.Header.Get(CausalContextHeaderKey); contextStr != \"\" {\n\t\t\tdec := base64.NewDecoder(base64.StdEncoding, strings.NewReader(contextStr))\n\t\t\tif err := json.NewDecoder(dec).Decode(&context); err != nil {\n\t\t\t\terrors.Encode(w, errors.WrapfCode(http.StatusBadRequest, err, \"error decoding %s\", CausalContextHeaderKey))\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\t_, err = s.auth.ExecMode(r.Context(), token, id, replica.MVRegisterWrite{Value: value, Context: context, Force: force}, mode)\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error executing multi-register write\"))\n\t\treturn\n\t}\n\n\trespondPublicSuccessf(w, \"Put OK, %dB\\n\", len(value))\n}\n\nfunc (s *PublicServer) handleMultiGet(w http.ResponseWriter, r *http.Request) {\n\tsetRoute(r.Context(), \"GET /multivalue\")\n\n\ttoken, err := parseToken(r)\n\tif err != nil {\n\t\terrors.Encode(w, err)\n\t\treturn\n\t}\n\n\tvar (\n\t\tid = mux.Vars(r)[\"id\"]\n\t\tmode = parseConsistencyMode(r.URL.Query())\n\t)\n\tif id == \"\" {\n\t\terrors.Encode(w, ErrNoID)\n\t\treturn\n\t}\n\n\tobj, err := s.auth.ExecMode(r.Context(), token, id, replica.MVRegisterRead{}, mode)\n\tif errors.SomewhatEqual(err, object.ErrNotFound) {\n\t\tencodePublicError(w, object.ErrNotFound)\n\t\treturn\n\t}\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error executing multi-register read\"))\n\t\treturn\n\t}\n\n\tvar register object.MVRegister\n\tif err := register.Deserialize(obj); err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error deserializing response object\"))\n\t\treturn\n\t}\n\n\tvalues, context := register.Get()\n\tif len(values) <= 0 {\n\t\terrors.Encode(w, errors.NewCode(http.StatusNotFound, \"multi-register object not found\"))\n\t\treturn\n\t}\n\n\tvar buf bytes.Buffer\n\tenc := base64.NewEncoder(base64.StdEncoding, &buf)\n\tif err := json.NewEncoder(enc).Encode(context); err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error serializing causal context\"))\n\t\treturn\n\t}\n\tif err := enc.Close(); err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error serializing causal context\"))\n\t\treturn\n\t}\n\tw.Header().Set(CausalContextHeaderKey, buf.String())\n\n\tif len(values) == 1 {\n\t\tw.Header().Set(\"Content-Type\", \"application/octet-stream; charset=utf-8\")\n\t\tw.Write(values[0])\n\t\treturn\n\t}\n\n\tmediatype, _, err := mime.ParseMediaType(r.Header.Get(\"Accept\"))\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapCode(http.StatusNotAcceptable, err, \"error parsing Accept headers\"))\n\t\treturn\n\t}\n\tif mediatype != \"multipart/form-data\" {\n\t\terrors.Encode(w, errors.NewCode(http.StatusMultipleChoices, \"multiple values; set Accept: multipart/form-data and prepare for a multipart response\"))\n\t\treturn\n\t}\n\n\tmw := multipart.NewWriter(w)\n\tw.Header().Set(\"Content-Type\", mw.FormDataContentType())\n\tfor _, value := range values {\n\t\tfw, err := mw.CreateFormField(\"value\")\n\t\tif err != nil {\n\t\t\terrors.Encode(w, errors.Wrap(err, \"error creating multipart response\"))\n\t\t\treturn\n\t\t}\n\t\tif _, err := fw.Write(value); err != nil {\n\t\t\terrors.Encode(w, errors.Wrap(err, \"error writing multipart response\"))\n\t\t\treturn\n\t\t}\n\t}\n\tif err := mw.Close(); err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error closing multipart response\"))\n\t\treturn\n\t}\n}\n\nfunc (s *PublicServer) handleSinglePut(w http.ResponseWriter, r *http.Request) {\n\tsetRoute(r.Context(), \"PUT /value\")\n\n\ttoken, err := parseToken(r)\n\tif err != nil {\n\t\terrors.Encode(w, err)\n\t\treturn\n\t}\n\n\tvar (\n\t\tid = mux.Vars(r)[\"id\"]\n\t\tmode = parseConsistencyMode(r.URL.Query())\n\t)\n\tif id == \"\" {\n\t\terrors.Encode(w, ErrNoID)\n\t\treturn\n\t}\n\n\tvalue, err := ioutil.ReadAll(http.MaxBytesReader(w, r.Body, MaxObjectSizeBytes))\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error reading request body\"))\n\t\treturn\n\t}\n\n\tobj, err := s.auth.ExecMode(r.Context(), token, id, replica.LWWRegisterWrite{Value: value}, mode)\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error executing register write\"))\n\t\treturn\n\t}\n\n\tvar register object.LWWRegister\n\tif err := register.Deserialize(obj); err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error deserializing response object\"))\n\t\treturn\n\t}\n\n\tw.Header().Set(LWWTimestampKey, register.Timestamp)\n\trespondPublicSuccessf(w, \"Put OK, %dB\\n\", len(register.Value))\n}\n\nfunc (s *PublicServer) handleSingleGet(w http.ResponseWriter, r *http.Request) {\n\tsetRoute(r.Context(), \"GET /value\")\n\n\ttoken, err := parseToken(r)\n\tif err != nil {\n\t\terrors.Encode(w, err)\n\t\treturn\n\t}\n\n\tvar (\n\t\tid = mux.Vars(r)[\"id\"]\n\t\tmode = parseConsistencyMode(r.URL.Query())\n\t)\n\tif id == \"\" {\n\t\terrors.Encode(w, ErrNoID)\n\t\treturn\n\t}\n\n\tobj, err := s.auth.ExecMode(r.Context(), token, id, replica.LWWRegisterRead{}, mode)\n\tif errors.SomewhatEqual(err, object.ErrNotFound) {\n\t\tencodePublicError(w, object.ErrNotFound)\n\t\treturn\n\t}\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error executing register read\"))\n\t\treturn\n\t}\n\n\tvar register object.LWWRegister\n\tif err := register.Deserialize(obj); err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error deserializing response object\"))\n\t\treturn\n\t}\n\n\tw.Header().Set(LWWTimestampKey, register.Timestamp)\n\tw.Write(register.Value)\n}\n\nfunc (s *PublicServer) handleHyperLogLogPost(w http.ResponseWriter, r *http.Request) {\n\tsetRoute(r.Context(), \"POST /hyperloglog\")\n\n\ttoken, err := parseToken(r)\n\tif err != nil {\n\t\terrors.Encode(w, err)\n\t\treturn\n\t}\n\n\tvar (\n\t\tid = mux.Vars(r)[\"id\"]\n\t\tmode = parseConsistencyMode(r.URL.Query())\n\t)\n\tif id == \"\" {\n\t\terrors.Encode(w, ErrNoID)\n\t\treturn\n\t}\n\n\tpStr := r.URL.Query().Get(\"p\")\n\tif pStr == \"\" {\n\t\tpStr = \"16\"\n\t}\n\n\tp, err := strconv.ParseInt(pStr, 10, 8)\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapCode(http.StatusBadRequest, err, \"error parsing precision p-value\"))\n\t\treturn\n\t}\n\n\titem, err := ioutil.ReadAll(http.MaxBytesReader(w, r.Body, MaxItemSizeBytes))\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapCode(http.StatusBadRequest, err, \"error reading request body\"))\n\t\treturn\n\t}\n\n\t_, err = s.auth.ExecMode(r.Context(), token, id, replica.HyperLogLogAdd{P: uint8(p), Item: item}, mode)\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error executing HyperLogLog add\"))\n\t\treturn\n\t}\n\n\trespondPublicSuccessf(w, \"Add OK, %dB\\n\", len(item))\n}\n\nfunc (s *PublicServer) handleHyperLogLogGet(w http.ResponseWriter, r *http.Request) {\n\tsetRoute(r.Context(), \"GET /hyperloglog\")\n\n\ttoken, err := parseToken(r)\n\tif err != nil {\n\t\terrors.Encode(w, err)\n\t\treturn\n\t}\n\n\tvar (\n\t\tid = mux.Vars(r)[\"id\"]\n\t\tmode = parseConsistencyMode(r.URL.Query())\n\t)\n\tif id == \"\" {\n\t\terrors.Encode(w, ErrNoID)\n\t\treturn\n\t}\n\n\tobj, err := s.auth.ExecMode(r.Context(), token, id, replica.HyperLogLogRead{}, mode)\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error executing HyperLogLog read\"))\n\t\treturn\n\t}\n\n\tvar hll object.HyperLogLog\n\tif err := hll.Deserialize(obj); err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error deserializing response object\"))\n\t\treturn\n\t}\n\n\tfmt.Fprintf(w, \"%d\", hll.Count())\n}\n\nfunc (s *PublicServer) handleBloomPost(w http.ResponseWriter, r *http.Request) {\n\tsetRoute(r.Context(), \"POST /bloom\")\n\n\ttoken, err := parseToken(r)\n\tif err != nil {\n\t\terrors.Encode(w, err)\n\t\treturn\n\t}\n\n\tvar (\n\t\tvars = mux.Vars(r)\n\t\tid = vars[\"id\"]\n\t\tmode = parseConsistencyMode(r.URL.Query())\n\t)\n\tif id == \"\" {\n\t\terrors.Encode(w, ErrNoID)\n\t\treturn\n\t}\n\n\tcapacityStr := vars[\"capacity\"]\n\tif capacityStr == \"\" {\n\t\terrors.Encode(w, errors.New(\"capacity parameter is required (internal routing error)\"))\n\t\treturn\n\t}\n\n\tcapacity, err := strconv.ParseInt(capacityStr, 10, 64)\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapfCode(http.StatusBadRequest, err, \"invalid capacity (%s)\", capacityStr))\n\t\treturn\n\t}\n\tif capacity <= 0 {\n\t\terrors.Encode(w, errors.NewCode(http.StatusBadRequest, \"capacity must be greater than zero\"))\n\t\treturn\n\t}\n\n\tfprStr := vars[\"fpr\"]\n\tif fprStr == \"\" {\n\t\terrors.Encode(w, errors.New(\"false positive rate is required (internal routing error)\"))\n\t\treturn\n\t}\n\n\tfpr, err := strconv.ParseFloat(fprStr, 64)\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapfCode(http.StatusBadRequest, err, \"invalid false positive rate (%s)\", fprStr))\n\t\treturn\n\t}\n\tif fpr < 0.001 || fpr > 0.5 {\n\t\terrors.Encode(w, errors.NewCode(http.StatusBadRequest, \"false positive rate must be between 0.001 and 0.5\"))\n\t\treturn\n\t}\n\n\titem, err := ioutil.ReadAll(http.MaxBytesReader(w, r.Body, MaxItemSizeBytes))\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapCode(http.StatusBadRequest, err, \"error reading request body\"))\n\t\treturn\n\t}\n\n\t_, err = s.auth.ExecMode(r.Context(), token, id, replica.BloomFilterInsert{Capacity: int(capacity), FalsePositiveRate: fpr, Item: item}, mode)\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error executing Bloom filter insert\"))\n\t\treturn\n\t}\n\n\trespondPublicSuccessf(w, \"Insert OK, %dB\\n\", len(item))\n}\n\nfunc (s *PublicServer) handleBloomGet(w http.ResponseWriter, r *http.Request) {\n\tsetRoute(r.Context(), \"GET /bloom\")\n\n\ttoken, err := parseToken(r)\n\tif err != nil {\n\t\terrors.Encode(w, err)\n\t\treturn\n\t}\n\n\tvar (\n\t\tid = mux.Vars(r)[\"id\"]\n\t\tmode = parseConsistencyMode(r.URL.Query())\n\t)\n\tif id == \"\" {\n\t\terrors.Encode(w, ErrNoID)\n\t\treturn\n\t}\n\n\titem, err := ioutil.ReadAll(http.MaxBytesReader(w, r.Body, MaxItemSizeBytes))\n\tif err != nil {\n\t\terrors.Encode(w, errors.WrapCode(http.StatusBadRequest, err, \"error reading request body\"))\n\t\treturn\n\t}\n\n\tobj, err := s.auth.ExecMode(r.Context(), token, id, replica.BloomFilterRead{}, mode)\n\tif err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error executing Bloom filter read\"))\n\t\treturn\n\t}\n\n\tvar f object.BloomFilter\n\tif err := f.Deserialize(obj); err != nil {\n\t\terrors.Encode(w, errors.Wrap(err, \"error deserializing response object\"))\n\t\treturn\n\t}\n\n\tfmt.Fprintf(w, \"%v\", f.Lookup(item))\n}\n\nfunc encodePublicError(w http.ResponseWriter, err errors.Error) {\n\tw.WriteHeader(err.StatusCode)\n\tfmt.Fprintln(w, err.Err)\n}\n"}}
[Trace - 2:20:55 PM] Sending request 'textDocument/documentLink - (278)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"}}
[Trace - 2:20:55 PM] Sending request 'textDocument/codeAction - (279)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:20:55 PM] Received response 'textDocument/documentLink - (278)' in 579ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":8}},"target":"https://godoc.org/bytes"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":18}},"target":"https://godoc.org/encoding/base64"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":16}},"target":"https://godoc.org/encoding/json"},{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":12}},"target":"https://godoc.org/io/ioutil"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":7}},"target":"https://godoc.org/mime"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":17}},"target":"https://godoc.org/mime/multipart"},{"range":{"start":{"line":11,"character":1},"end":{"line":11,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":10}},"target":"https://godoc.org/strconv"},{"range":{"start":{"line":13,"character":1},"end":{"line":13,"character":10}},"target":"https://godoc.org/strings"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":7}},"target":"https://godoc.org/time"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/auth"},{"range":{"start":{"line":17,"character":1},"end":{"line":17,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/errors"},{"range":{"start":{"line":18,"character":1},"end":{"line":18,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/object"},{"range":{"start":{"line":19,"character":1},"end":{"line":19,"character":39}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/replica"},{"range":{"start":{"line":20,"character":1},"end":{"line":20,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/ring"},{"range":{"start":{"line":21,"character":1},"end":{"line":21,"character":25}},"target":"https://godoc.org/github.com/gorilla/mux"}]
[Trace - 2:20:55 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","diagnostics":[{"range":{"start":{"line":519,"character":1},"end":{"line":519,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":521,"character":15},"end":{"line":521,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":529,"character":9},"end":{"line":529,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":532,"character":19},"end":{"line":532,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":453,"character":1},"end":{"line":453,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":455,"character":15},"end":{"line":455,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":464,"character":9},"end":{"line":464,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":467,"character":19},"end":{"line":467,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":515,"character":1},"end":{"line":515,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"},{"range":{"start":{"line":420,"character":1},"end":{"line":420,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":422,"character":15},"end":{"line":422,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":430,"character":9},"end":{"line":430,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":433,"character":19},"end":{"line":433,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":376,"character":1},"end":{"line":376,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":378,"character":15},"end":{"line":378,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":386,"character":9},"end":{"line":386,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":389,"character":19},"end":{"line":389,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":416,"character":1},"end":{"line":416,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"},{"range":{"start":{"line":338,"character":1},"end":{"line":338,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":340,"character":15},"end":{"line":340,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":348,"character":9},"end":{"line":348,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":351,"character":19},"end":{"line":351,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":298,"character":1},"end":{"line":298,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":300,"character":15},"end":{"line":300,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":308,"character":9},"end":{"line":308,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":311,"character":19},"end":{"line":311,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":334,"character":1},"end":{"line":334,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"},{"range":{"start":{"line":211,"character":1},"end":{"line":211,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":213,"character":15},"end":{"line":213,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":221,"character":9},"end":{"line":221,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":224,"character":19},"end":{"line":224,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":165,"character":1},"end":{"line":165,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":167,"character":15},"end":{"line":167,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":175,"character":9},"end":{"line":175,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":178,"character":19},"end":{"line":178,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":207,"character":1},"end":{"line":207,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"},{"range":{"start":{"line":88,"character":1},"end":{"line":88,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":90,"character":15},"end":{"line":90,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":99,"character":9},"end":{"line":99,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":102,"character":19},"end":{"line":102,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":161,"character":1},"end":{"line":161,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"}]}
[Trace - 2:20:55 PM] Received response 'textDocument/codeAction - (279)' in 586ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:20:55 PM] Sending request 'textDocument/documentSymbol - (280)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"}}
[Trace - 2:20:55 PM] Sending request 'textDocument/codeAction - (281)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":195,"character":35},"end":{"line":195,"character":35}},"context":{"diagnostics":[]}}
[Trace - 2:20:55 PM] Received response 'textDocument/documentSymbol - (280)' in 587ms.
Params: [{"name":"LimitRemainingHeaderKey","detail":"untyped string","kind":14,"range":{"start":{"line":24,"character":0},"end":{"line":46,"character":1}},"selectionRange":{"start":{"line":27,"character":1},"end":{"line":27,"character":24}}},{"name":"CausalContextHeaderKey","detail":"untyped string","kind":14,"range":{"start":{"line":24,"character":0},"end":{"line":46,"character":1}},"selectionRange":{"start":{"line":32,"character":1},"end":{"line":32,"character":23}}},{"name":"LWWTimestampKey","detail":"untyped string","kind":14,"range":{"start":{"line":24,"character":0},"end":{"line":46,"character":1}},"selectionRange":{"start":{"line":36,"character":1},"end":{"line":36,"character":16}}},{"name":"MaxObjectSizeBytes","detail":"untyped int","kind":14,"range":{"start":{"line":24,"character":0},"end":{"line":46,"character":1}},"selectionRange":{"start":{"line":40,"character":1},"end":{"line":40,"character":19}}},{"name":"MaxItemSizeBytes","detail":"untyped int","kind":14,"range":{"start":{"line":24,"character":0},"end":{"line":46,"character":1}},"selectionRange":{"start":{"line":45,"character":1},"end":{"line":45,"character":17}}},{"name":"Auth","detail":"interface{...}","kind":11,"range":{"start":{"line":50,"character":5},"end":{"line":52,"character":1}},"selectionRange":{"start":{"line":50,"character":5},"end":{"line":50,"character":9}},"children":[{"name":"ExecMode","kind":6,"range":{"start":{"line":51,"character":1},"end":{"line":51,"character":111}},"selectionRange":{"start":{"line":51,"character":1},"end":{"line":51,"character":9}}}]},{"name":"_","detail":"Auth","kind":13,"range":{"start":{"line":55,"character":0},"end":{"line":55,"character":30}},"selectionRange":{"start":{"line":55,"character":4},"end":{"line":55,"character":5}}},{"name":"PublicServer","detail":"struct{...}","kind":23,"range":{"start":{"line":64,"character":5},"end":{"line":67,"character":1}},"selectionRange":{"start":{"line":64,"character":5},"end":{"line":64,"character":17}},"children":[{"name":"auth","detail":"interface{...}","kind":8,"range":{"start":{"line":65,"character":1},"end":{"line":65,"character":10}},"selectionRange":{"start":{"line":65,"character":1},"end":{"line":65,"character":5}}},{"name":"Handler","detail":"interface{...}","kind":8,"range":{"start":{"line":66,"character":1},"end":{"line":66,"character":13}},"selectionRange":{"start":{"line":66,"character":1},"end":{"line":66,"character":13}}},{"name":"handleBloomPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":452,"character":0},"end":{"line":516,"character":1}},"selectionRange":{"start":{"line":452,"character":23},"end":{"line":452,"character":38}}},{"name":"handleSingleGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":337,"character":0},"end":{"line":373,"character":1}},"selectionRange":{"start":{"line":337,"character":23},"end":{"line":337,"character":38}}},{"name":"handleHyperLogLogPost","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":375,"character":0},"end":{"line":417,"character":1}},"selectionRange":{"start":{"line":375,"character":23},"end":{"line":375,"character":44}}},{"name":"handleMultiGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":210,"character":0},"end":{"line":295,"character":1}},"selectionRange":{"start":{"line":210,"character":23},"end":{"line":210,"character":37}}},{"name":"handleSinglePut","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":297,"character":0},"end":{"line":335,"character":1}},"selectionRange":{"start":{"line":297,"character":23},"end":{"line":297,"character":38}}},{"name":"handleHyperLogLogGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":419,"character":0},"end":{"line":450,"character":1}},"selectionRange":{"start":{"line":419,"character":23},"end":{"line":419,"character":43}}},{"name":"handleBloomGet","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":518,"character":0},"end":{"line":555,"character":1}},"selectionRange":{"start":{"line":518,"character":23},"end":{"line":518,"character":37}}},{"name":"handleLimit","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":87,"character":0},"end":{"line":162,"character":1}},"selectionRange":{"start":{"line":87,"character":23},"end":{"line":87,"character":34}}},{"name":"handleMultiPut","detail":"(w http.ResponseWriter, r *http.Request)","kind":6,"range":{"start":{"line":164,"character":0},"end":{"line":208,"character":1}},"selectionRange":{"start":{"line":164,"character":23},"end":{"line":164,"character":37}}}]},{"name":"NewPublicServer","detail":"(a Auth)","kind":12,"range":{"start":{"line":70,"character":0},"end":{"line":85,"character":1}},"selectionRange":{"start":{"line":70,"character":5},"end":{"line":70,"character":20}}},{"name":"encodePublicError","detail":"(w http.ResponseWriter, err errors.Error)","kind":12,"range":{"start":{"line":557,"character":0},"end":{"line":560,"character":1}},"selectionRange":{"start":{"line":557,"character":5},"end":{"line":557,"character":22}}}]
[Trace - 2:20:55 PM] Sending notification '$/cancelRequest'.
Params: {"id":279}
[Trace - 2:20:55 PM] Received response 'textDocument/codeAction - (281)' in 320ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:20:56 PM] Sending request 'textDocument/codeAction - (282)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":195,"character":35},"end":{"line":195,"character":35}},"context":{"diagnostics":[]}}
[Trace - 2:20:56 PM] Received response 'textDocument/codeAction - (282)' in 12ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:20:58 PM] Sending request 'textDocument/hover - (283)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":207,"character":9}}
[Error - 2:20:58 PM] send textDocument/hover#283 no object for ident respondPublicSuccessf
[Error - 2:20:58 PM] Request textDocument/hover failed.
Message: no object for ident respondPublicSuccessf
Code: 0
[Trace - 2:20:58 PM] Sending request 'textDocument/codeAction - (284)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":207,"character":1},"end":{"line":207,"character":22}},"context":{"diagnostics":[{"range":{"start":{"line":207,"character":1},"end":{"line":207,"character":22}},"message":"undeclared name: respondPublicSuccessf","severity":1,"source":"LSP"}]}}
[Trace - 2:20:58 PM] Received response 'textDocument/codeAction - (284)' in 10ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:21:11 PM] Sending request 'textDocument/documentLink - (285)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:21:11 PM] Received response 'textDocument/documentLink - (285)' in 0ms.
Params: {}
[Trace - 2:21:11 PM] Sending request 'textDocument/codeAction - (286)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:21:11 PM] Received response 'textDocument/codeAction - (286)' in 8ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"import \"testing\"\n"},{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"\n"},{"range":{"start":{"line":3,"character":0},"end":{"line":4,"character":0}},"newText":""},{"range":{"start":{"line":4,"character":0},"end":{"line":5,"character":0}},"newText":""},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"}\n"}]}}}]
[Trace - 2:21:13 PM] Sending request 'textDocument/hover - (287)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":41}}
[Error - 2:21:13 PM] send textDocument/hover#287 no object for ident testing
[Error - 2:21:13 PM] Request textDocument/hover failed.
Message: no object for ident testing
Code: 0
[Trace - 2:21:13 PM] Sending request 'textDocument/codeAction - (288)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":46}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":46}},"message":"undeclared name: testing","severity":1,"source":"LSP"}]}}
[Trace - 2:21:13 PM] Received response 'textDocument/codeAction - (288)' in 8ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"import \"testing\"\n"},{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"\n"},{"range":{"start":{"line":3,"character":0},"end":{"line":4,"character":0}},"newText":""},{"range":{"start":{"line":4,"character":0},"end":{"line":5,"character":0}},"newText":""},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"}\n"}]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"import \"testing\"\n"},{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"\n"},{"range":{"start":{"line":3,"character":0},"end":{"line":4,"character":0}},"newText":""},{"range":{"start":{"line":4,"character":0},"end":{"line":5,"character":0}},"newText":""},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"}\n"}]}}}]
[Trace - 2:21:14 PM] Sending request 'textDocument/definition - (289)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":2,"character":41}}
[Error - 2:21:14 PM] send textDocument/definition#289 no object for ident testing
[Error - 2:21:14 PM] Request textDocument/definition failed.
Message: no object for ident testing
Code: 0
[Trace - 2:21:14 PM] Sending request 'textDocument/codeAction - (290)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":0,"character":0},"end":{"line":4,"character":1}},"context":{"diagnostics":[{"range":{"start":{"line":2,"character":37},"end":{"line":2,"character":46}},"message":"undeclared name: testing","severity":1,"source":"LSP"}]}}
[Trace - 2:21:14 PM] Received response 'textDocument/codeAction - (290)' in 7ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"import \"testing\"\n"},{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"\n"},{"range":{"start":{"line":3,"character":0},"end":{"line":4,"character":0}},"newText":""},{"range":{"start":{"line":4,"character":0},"end":{"line":5,"character":0}},"newText":""},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"}\n"}]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"import \"testing\"\n"},{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"newText":"\n"},{"range":{"start":{"line":3,"character":0},"end":{"line":4,"character":0}},"newText":""},{"range":{"start":{"line":4,"character":0},"end":{"line":5,"character":0}},"newText":""},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"\n"},{"range":{"start":{"line":5,"character":0},"end":{"line":5,"character":0}},"newText":"}\n"}]}}}]
[Trace - 2:21:14 PM] Sending notification 'textDocument/didChange'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":111},"contentChanges":[{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":1}},"rangeLength":0,"text":"}\n"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":1}},"rangeLength":0,"text":"\n"},{"range":{"start":{"line":4,"character":0},"end":{"line":4,"character":1}},"rangeLength":1,"text":""},{"range":{"start":{"line":3,"character":0},"end":{"line":4,"character":0}},"rangeLength":2,"text":""},{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"rangeLength":0,"text":"\n"},{"range":{"start":{"line":2,"character":0},"end":{"line":2,"character":0}},"rangeLength":0,"text":"import \"testing\"\n"}]}
[Trace - 2:21:14 PM] Sending request 'textDocument/formatting - (291)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"options":{"tabSize":4,"insertSpaces":false}}
[Trace - 2:21:14 PM] Received response 'textDocument/formatting - (291)' in 400ms.
Params: []
[Trace - 2:21:14 PM] Sending request 'textDocument/documentSymbol - (292)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:21:14 PM] Received response 'textDocument/documentSymbol - (292)' in 52ms.
Params: [{"name":"TestContract_api_RateLimiter","detail":"(t *testing.T)","kind":12,"range":{"start":{"line":4,"character":0},"end":{"line":6,"character":1}},"selectionRange":{"start":{"line":4,"character":5},"end":{"line":4,"character":33}}}]
[Trace - 2:21:14 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:21:14 PM] Sending notification 'textDocument/didSave'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","version":111}}
[Trace - 2:21:15 PM] Sending request 'textDocument/documentLink - (293)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:21:15 PM] Received response 'textDocument/documentLink - (293)' in 0ms.
Params: [{"range":{"start":{"line":2,"character":7},"end":{"line":2,"character":16}},"target":"https://godoc.org/testing"}]
[Trace - 2:21:15 PM] Sending request 'textDocument/documentLink - (294)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"}}
[Trace - 2:21:15 PM] Received response 'textDocument/documentLink - (294)' in 0ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":8}},"target":"https://godoc.org/bytes"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":18}},"target":"https://godoc.org/encoding/base64"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":16}},"target":"https://godoc.org/encoding/json"},{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":12}},"target":"https://godoc.org/io/ioutil"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":7}},"target":"https://godoc.org/mime"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":17}},"target":"https://godoc.org/mime/multipart"},{"range":{"start":{"line":11,"character":1},"end":{"line":11,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":10}},"target":"https://godoc.org/strconv"},{"range":{"start":{"line":13,"character":1},"end":{"line":13,"character":10}},"target":"https://godoc.org/strings"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":7}},"target":"https://godoc.org/time"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/auth"},{"range":{"start":{"line":17,"character":1},"end":{"line":17,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/errors"},{"range":{"start":{"line":18,"character":1},"end":{"line":18,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/object"},{"range":{"start":{"line":19,"character":1},"end":{"line":19,"character":39}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/replica"},{"range":{"start":{"line":20,"character":1},"end":{"line":20,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/ring"},{"range":{"start":{"line":21,"character":1},"end":{"line":21,"character":25}},"target":"https://godoc.org/github.com/gorilla/mux"}]
[Trace - 2:21:15 PM] Sending request 'textDocument/codeAction - (295)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:21:15 PM] Received response 'textDocument/codeAction - (295)' in 11ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:21:16 PM] Sending request 'textDocument/codeAction - (296)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":195,"character":35},"end":{"line":195,"character":35}},"context":{"diagnostics":[]}}
[Trace - 2:21:16 PM] Received response 'textDocument/codeAction - (296)' in 12ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:21:54 PM] Sending request 'textDocument/hover - (297)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":193,"character":2}}
[Error - 2:21:54 PM] send textDocument/hover#297 no identifier found
[Error - 2:21:54 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Trace - 2:25:13 PM] Sending request 'textDocument/hover - (298)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":182,"character":53}}
[Trace - 2:25:13 PM] Received response 'textDocument/hover - (298)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *http.Request\n```"},"range":{"start":{"line":182,"character":53},"end":{"line":182,"character":54}}}
[Trace - 2:25:13 PM] Sending request 'textDocument/documentHighlight - (299)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":182,"character":54}}
[Trace - 2:25:13 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"no highlight for /Users/peter/mod/REDACTED/pkg/REDACTED/public.go:183:55: /Users/peter/mod/REDACTED/pkg/REDACTED/public.go:183:55 is not an identifier"}
[Trace - 2:25:13 PM] Received response 'textDocument/documentHighlight - (299)' in 0ms.
Params: []
[Error - 2:25:13 PM] no highlight for /Users/peter/mod/REDACTED/pkg/REDACTED/public.go:183:55: /Users/peter/mod/REDACTED/pkg/REDACTED/public.go:183:55 is not an identifier
[Trace - 2:25:13 PM] Sending request 'textDocument/codeAction - (300)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":182,"character":54},"end":{"line":182,"character":54}},"context":{"diagnostics":[]}}
[Trace - 2:25:13 PM] Received response 'textDocument/codeAction - (300)' in 9ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:25:16 PM] Sending request 'textDocument/definition - (301)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":182,"character":54}}
[Trace - 2:25:16 PM] Received response 'textDocument/definition - (301)' in 107ms.
Params: [{"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/request.go","range":{"start":{"line":181,"character":1},"end":{"line":181,"character":5}}}]
[Trace - 2:25:16 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/request.go","languageId":"go","version":1,"text":"// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// HTTP Request reading and parsing.\n\npackage http\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/tls\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"mime\"\n\t\"mime/multipart\"\n\t\"net\"\n\t\"net/http/httptrace\"\n\t\"net/textproto\"\n\t\"net/url\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"internal/x/net/idna\"\n)\n\nconst (\n\tdefaultMaxMemory = 32 << 20 // 32 MB\n)\n\n// ErrMissingFile is returned by FormFile when the provided file field name\n// is either not present in the request or not a file field.\nvar ErrMissingFile = errors.New(\"http: no such file\")\n\n// ProtocolError represents an HTTP protocol error.\n//\n// Deprecated: Not all errors in the http package related to protocol errors\n// are of type ProtocolError.\ntype ProtocolError struct {\n\tErrorString string\n}\n\nfunc (pe *ProtocolError) Error() string { return pe.ErrorString }\n\nvar (\n\t// ErrNotSupported is returned by the Push method of Pusher\n\t// implementations to indicate that HTTP/2 Push support is not\n\t// available.\n\tErrNotSupported = &ProtocolError{\"feature not supported\"}\n\n\t// Deprecated: ErrUnexpectedTrailer is no longer returned by\n\t// anything in the net/http package. Callers should not\n\t// compare errors against this variable.\n\tErrUnexpectedTrailer = &ProtocolError{\"trailer header without chunked transfer encoding\"}\n\n\t// ErrMissingBoundary is returned by Request.MultipartReader when the\n\t// request's Content-Type does not include a \"boundary\" parameter.\n\tErrMissingBoundary = &ProtocolError{\"no multipart boundary param in Content-Type\"}\n\n\t// ErrNotMultipart is returned by Request.MultipartReader when the\n\t// request's Content-Type is not multipart/form-data.\n\tErrNotMultipart = &ProtocolError{\"request Content-Type isn't multipart/form-data\"}\n\n\t// Deprecated: ErrHeaderTooLong is no longer returned by\n\t// anything in the net/http package. Callers should not\n\t// compare errors against this variable.\n\tErrHeaderTooLong = &ProtocolError{\"header too long\"}\n\n\t// Deprecated: ErrShortBody is no longer returned by\n\t// anything in the net/http package. Callers should not\n\t// compare errors against this variable.\n\tErrShortBody = &ProtocolError{\"entity body too short\"}\n\n\t// Deprecated: ErrMissingContentLength is no longer returned by\n\t// anything in the net/http package. Callers should not\n\t// compare errors against this variable.\n\tErrMissingContentLength = &ProtocolError{\"missing ContentLength in HEAD response\"}\n)\n\ntype badStringError struct {\n\twhat string\n\tstr string\n}\n\nfunc (e *badStringError) Error() string { return fmt.Sprintf(\"%s %q\", e.what, e.str) }\n\n// Headers that Request.Write handles itself and should be skipped.\nvar reqWriteExcludeHeader = map[string]bool{\n\t\"Host\": true, // not in Header map anyway\n\t\"User-Agent\": true,\n\t\"Content-Length\": true,\n\t\"Transfer-Encoding\": true,\n\t\"Trailer\": true,\n}\n\n// A Request represents an HTTP request received by a server\n// or to be sent by a client.\n//\n// The field semantics differ slightly between client and server\n// usage. In addition to the notes on the fields below, see the\n// documentation for Request.Write and RoundTripper.\ntype Request struct {\n\t// Method specifies the HTTP method (GET, POST, PUT, etc.).\n\t// For client requests, an empty string means GET.\n\t//\n\t// Go's HTTP client does not support sending a request with\n\t// the CONNECT method. See the documentation on Transport for\n\t// details.\n\tMethod string\n\n\t// URL specifies either the URI being requested (for server\n\t// requests) or the URL to access (for client requests).\n\t//\n\t// For server requests, the URL is parsed from the URI\n\t// supplied on the Request-Line as stored in RequestURI. For\n\t// most requests, fields other than Path and RawQuery will be\n\t// empty. (See RFC 7230, Section 5.3)\n\t//\n\t// For client requests, the URL's Host specifies the server to\n\t// connect to, while the Request's Host field optionally\n\t// specifies the Host header value to send in the HTTP\n\t// request.\n\tURL *url.URL\n\n\t// The protocol version for incoming server requests.\n\t//\n\t// For client requests, these fields are ignored. The HTTP\n\t// client code always uses either HTTP/1.1 or HTTP/2.\n\t// See the docs on Transport for details.\n\tProto string // \"HTTP/1.0\"\n\tProtoMajor int // 1\n\tProtoMinor int // 0\n\n\t// Header contains the request header fields either received\n\t// by the server or to be sent by the client.\n\t//\n\t// If a server received a request with header lines,\n\t//\n\t//\tHost: example.com\n\t//\taccept-encoding: gzip, deflate\n\t//\tAccept-Language: en-us\n\t//\tfOO: Bar\n\t//\tfoo: two\n\t//\n\t// then\n\t//\n\t//\tHeader = map[string][]string{\n\t//\t\t\"Accept-Encoding\": {\"gzip, deflate\"},\n\t//\t\t\"Accept-Language\": {\"en-us\"},\n\t//\t\t\"Foo\": {\"Bar\", \"two\"},\n\t//\t}\n\t//\n\t// For incoming requests, the Host header is promoted to the\n\t// Request.Host field and removed from the Header map.\n\t//\n\t// HTTP defines that header names are case-insensitive. The\n\t// request parser implements this by using CanonicalHeaderKey,\n\t// making the first character and any characters following a\n\t// hyphen uppercase and the rest lowercase.\n\t//\n\t// For client requests, certain headers such as Content-Length\n\t// and Connection are automatically written when needed and\n\t// values in Header may be ignored. See the documentation\n\t// for the Request.Write method.\n\tHeader Header\n\n\t// Body is the request's body.\n\t//\n\t// For client requests, a nil body means the request has no\n\t// body, such as a GET request. The HTTP Client's Transport\n\t// is responsible for calling the Close method.\n\t//\n\t// For server requests, the Request Body is always non-nil\n\t// but will return EOF immediately when no body is present.\n\t// The Server will close the request body. The ServeHTTP\n\t// Handler does not need to.\n\tBody io.ReadCloser\n\n\t// GetBody defines an optional func to return a new copy of\n\t// Body. It is used for client requests when a redirect requires\n\t// reading the body more than once. Use of GetBody still\n\t// requires setting Body.\n\t//\n\t// For server requests, it is unused.\n\tGetBody func() (io.ReadCloser, error)\n\n\t// ContentLength records the length of the associated content.\n\t// The value -1 indicates that the length is unknown.\n\t// Values >= 0 indicate that the given number of bytes may\n\t// be read from Body.\n\t//\n\t// For client requests, a value of 0 with a non-nil Body is\n\t// also treated as unknown.\n\tContentLength int64\n\n\t// TransferEncoding lists the transfer encodings from outermost to\n\t// innermost. An empty list denotes the \"identity\" encoding.\n\t// TransferEncoding can usually be ignored; chunked encoding is\n\t// automatically added and removed as necessary when sending and\n\t// receiving requests.\n\tTransferEncoding []string\n\n\t// Close indicates whether to close the connection after\n\t// replying to this request (for servers) or after sending this\n\t// request and reading its response (for clients).\n\t//\n\t// For server requests, the HTTP server handles this automatically\n\t// and this field is not needed by Handlers.\n\t//\n\t// For client requests, setting this field prevents re-use of\n\t// TCP connections between requests to the same hosts, as if\n\t// Transport.DisableKeepAlives were set.\n\tClose bool\n\n\t// For server requests, Host specifies the host on which the URL\n\t// is sought. Per RFC 7230, section 5.4, this is either the value\n\t// of the \"Host\" header or the host name given in the URL itself.\n\t// It may be of the form \"host:port\". For international domain\n\t// names, Host may be in Punycode or Unicode form. Use\n\t// golang.org/x/net/idna to convert it to either format if\n\t// needed.\n\t// To prevent DNS rebinding attacks, server Handlers should\n\t// validate that the Host header has a value for which the\n\t// Handler considers itself authoritative. The included\n\t// ServeMux supports patterns registered to particular host\n\t// names and thus protects its registered Handlers.\n\t//\n\t// For client requests, Host optionally overrides the Host\n\t// header to send. If empty, the Request.Write method uses\n\t// the value of URL.Host. Host may contain an international\n\t// domain name.\n\tHost string\n\n\t// Form contains the parsed form data, including both the URL\n\t// field's query parameters and the POST or PUT form data.\n\t// This field is only available after ParseForm is called.\n\t// The HTTP client ignores Form and uses Body instead.\n\tForm url.Values\n\n\t// PostForm contains the parsed form data from POST, PATCH,\n\t// or PUT body parameters.\n\t//\n\t// This field is only available after ParseForm is called.\n\t// The HTTP client ignores PostForm and uses Body instead.\n\tPostForm url.Values\n\n\t// MultipartForm is the parsed multipart form, including file uploads.\n\t// This field is only available after ParseMultipartForm is called.\n\t// The HTTP client ignores MultipartForm and uses Body instead.\n\tMultipartForm *multipart.Form\n\n\t// Trailer specifies additional headers that are sent after the request\n\t// body.\n\t//\n\t// For server requests, the Trailer map initially contains only the\n\t// trailer keys, with nil values. (The client declares which trailers it\n\t// will later send.) While the handler is reading from Body, it must\n\t// not reference Trailer. After reading from Body returns EOF, Trailer\n\t// can be read again and will contain non-nil values, if they were sent\n\t// by the client.\n\t//\n\t// For client requests, Trailer must be initialized to a map containing\n\t// the trailer keys to later send. The values may be nil or their final\n\t// values. The ContentLength must be 0 or -1, to send a chunked request.\n\t// After the HTTP request is sent the map values can be updated while\n\t// the request body is read. Once the body returns EOF, the caller must\n\t// not mutate Trailer.\n\t//\n\t// Few HTTP clients, servers, or proxies support HTTP trailers.\n\tTrailer Header\n\n\t// RemoteAddr allows HTTP servers and other software to record\n\t// the network address that sent the request, usually for\n\t// logging. This field is not filled in by ReadRequest and\n\t// has no defined format. The HTTP server in this package\n\t// sets RemoteAddr to an \"IP:port\" address before invoking a\n\t// handler.\n\t// This field is ignored by the HTTP client.\n\tRemoteAddr string\n\n\t// RequestURI is the unmodified request-target of the\n\t// Request-Line (RFC 7230, Section 3.1.1) as sent by the client\n\t// to a server. Usually the URL field should be used instead.\n\t// It is an error to set this field in an HTTP client request.\n\tRequestURI string\n\n\t// TLS allows HTTP servers and other software to record\n\t// information about the TLS connection on which the request\n\t// was received. This field is not filled in by ReadRequest.\n\t// The HTTP server in this package sets the field for\n\t// TLS-enabled connections before invoking a handler;\n\t// otherwise it leaves the field nil.\n\t// This field is ignored by the HTTP client.\n\tTLS *tls.ConnectionState\n\n\t// Cancel is an optional channel whose closure indicates that the client\n\t// request should be regarded as canceled. Not all implementations of\n\t// RoundTripper may support Cancel.\n\t//\n\t// For server requests, this field is not applicable.\n\t//\n\t// Deprecated: Use the Context and WithContext methods\n\t// instead. If a Request's Cancel field and context are both\n\t// set, it is undefined whether Cancel is respected.\n\tCancel <-chan struct{}\n\n\t// Response is the redirect response which caused this request\n\t// to be created. This field is only populated during client\n\t// redirects.\n\tResponse *Response\n\n\t// ctx is either the client or server context. It should only\n\t// be modified via copying the whole Request using WithContext.\n\t// It is unexported to prevent people from using Context wrong\n\t// and mutating the contexts held by callers of the same request.\n\tctx context.Context\n}\n\n// Context returns the request's context. To change the context, use\n// WithContext.\n//\n// The returned context is always non-nil; it defaults to the\n// background context.\n//\n// For outgoing client requests, the context controls cancelation.\n//\n// For incoming server requests, the context is canceled when the\n// client's connection closes, the request is canceled (with HTTP/2),\n// or when the ServeHTTP method returns.\nfunc (r *Request) Context() context.Context {\n\tif r.ctx != nil {\n\t\treturn r.ctx\n\t}\n\treturn context.Background()\n}\n\n// WithContext returns a shallow copy of r with its context changed\n// to ctx. The provided ctx must be non-nil.\n//\n// For outgoing client request, the context controls the entire\n// lifetime of a request and its response: obtaining a connection,\n// sending the request, and reading the response headers and body.\nfunc (r *Request) WithContext(ctx context.Context) *Request {\n\tif ctx == nil {\n\t\tpanic(\"nil context\")\n\t}\n\tr2 := new(Request)\n\t*r2 = *r\n\tr2.ctx = ctx\n\n\t// Deep copy the URL because it isn't\n\t// a map and the URL is mutable by users\n\t// of WithContext.\n\tif r.URL != nil {\n\t\tr2URL := new(url.URL)\n\t\t*r2URL = *r.URL\n\t\tr2.URL = r2URL\n\t}\n\n\treturn r2\n}\n\n// ProtoAtLeast reports whether the HTTP protocol used\n// in the request is at least major.minor.\nfunc (r *Request) ProtoAtLeast(major, minor int) bool {\n\treturn r.ProtoMajor > major ||\n\t\tr.ProtoMajor == major && r.ProtoMinor >= minor\n}\n\n// UserAgent returns the client's User-Agent, if sent in the request.\nfunc (r *Request) UserAgent() string {\n\treturn r.Header.Get(\"User-Agent\")\n}\n\n// Cookies parses and returns the HTTP cookies sent with the request.\nfunc (r *Request) Cookies() []*Cookie {\n\treturn readCookies(r.Header, \"\")\n}\n\n// ErrNoCookie is returned by Request's Cookie method when a cookie is not found.\nvar ErrNoCookie = errors.New(\"http: named cookie not present\")\n\n// Cookie returns the named cookie provided in the request or\n// ErrNoCookie if not found.\n// If multiple cookies match the given name, only one cookie will\n// be returned.\nfunc (r *Request) Cookie(name string) (*Cookie, error) {\n\tfor _, c := range readCookies(r.Header, name) {\n\t\treturn c, nil\n\t}\n\treturn nil, ErrNoCookie\n}\n\n// AddCookie adds a cookie to the request. Per RFC 6265 section 5.4,\n// AddCookie does not attach more than one Cookie header field. That\n// means all cookies, if any, are written into the same line,\n// separated by semicolon.\nfunc (r *Request) AddCookie(c *Cookie) {\n\ts := fmt.Sprintf(\"%s=%s\", sanitizeCookieName(c.Name), sanitizeCookieValue(c.Value))\n\tif c := r.Header.Get(\"Cookie\"); c != \"\" {\n\t\tr.Header.Set(\"Cookie\", c+\"; \"+s)\n\t} else {\n\t\tr.Header.Set(\"Cookie\", s)\n\t}\n}\n\n// Referer returns the referring URL, if sent in the request.\n//\n// Referer is misspelled as in the request itself, a mistake from the\n// earliest days of HTTP. This value can also be fetched from the\n// Header map as Header[\"Referer\"]; the benefit of making it available\n// as a method is that the compiler can diagnose programs that use the\n// alternate (correct English) spelling req.Referrer() but cannot\n// diagnose programs that use Header[\"Referrer\"].\nfunc (r *Request) Referer() string {\n\treturn r.Header.Get(\"Referer\")\n}\n\n// multipartByReader is a sentinel value.\n// Its presence in Request.MultipartForm indicates that parsing of the request\n// body has been handed off to a MultipartReader instead of ParseMultipartFrom.\nvar multipartByReader = &multipart.Form{\n\tValue: make(map[string][]string),\n\tFile: make(map[string][]*multipart.FileHeader),\n}\n\n// MultipartReader returns a MIME multipart reader if this is a\n// multipart/form-data or a multipart/mixed POST request, else returns nil and an error.\n// Use this function instead of ParseMultipartForm to\n// process the request body as a stream.\nfunc (r *Request) MultipartReader() (*multipart.Reader, error) {\n\tif r.MultipartForm == multipartByReader {\n\t\treturn nil, errors.New(\"http: MultipartReader called twice\")\n\t}\n\tif r.MultipartForm != nil {\n\t\treturn nil, errors.New(\"http: multipart handled by ParseMultipartForm\")\n\t}\n\tr.MultipartForm = multipartByReader\n\treturn r.multipartReader(true)\n}\n\nfunc (r *Request) multipartReader(allowMixed bool) (*multipart.Reader, error) {\n\tv := r.Header.Get(\"Content-Type\")\n\tif v == \"\" {\n\t\treturn nil, ErrNotMultipart\n\t}\n\td, params, err := mime.ParseMediaType(v)\n\tif err != nil || !(d == \"multipart/form-data\" || allowMixed && d == \"multipart/mixed\") {\n\t\treturn nil, ErrNotMultipart\n\t}\n\tboundary, ok := params[\"boundary\"]\n\tif !ok {\n\t\treturn nil, ErrMissingBoundary\n\t}\n\treturn multipart.NewReader(r.Body, boundary), nil\n}\n\n// isH2Upgrade reports whether r represents the http2 \"client preface\"\n// magic string.\nfunc (r *Request) isH2Upgrade() bool {\n\treturn r.Method == \"PRI\" && len(r.Header) == 0 && r.URL.Path == \"*\" && r.Proto == \"HTTP/2.0\"\n}\n\n// Return value if nonempty, def otherwise.\nfunc valueOrDefault(value, def string) string {\n\tif value != \"\" {\n\t\treturn value\n\t}\n\treturn def\n}\n\n// NOTE: This is not intended to reflect the actual Go version being used.\n// It was changed at the time of Go 1.1 release because the former User-Agent\n// had ended up on a blacklist for some intrusion detection systems.\n// See https://codereview.appspot.com/7532043.\nconst defaultUserAgent = \"Go-http-client/1.1\"\n\n// Write writes an HTTP/1.1 request, which is the header and body, in wire format.\n// This method consults the following fields of the request:\n//\tHost\n//\tURL\n//\tMethod (defaults to \"GET\")\n//\tHeader\n//\tContentLength\n//\tTransferEncoding\n//\tBody\n//\n// If Body is present, Content-Length is <= 0 and TransferEncoding\n// hasn't been set to \"identity\", Write adds \"Transfer-Encoding:\n// chunked\" to the header. Body is closed after it is sent.\nfunc (r *Request) Write(w io.Writer) error {\n\treturn r.write(w, false, nil, nil)\n}\n\n// WriteProxy is like Write but writes the request in the form\n// expected by an HTTP proxy. In particular, WriteProxy writes the\n// initial Request-URI line of the request with an absolute URI, per\n// section 5.3 of RFC 7230, including the scheme and host.\n// In either case, WriteProxy also writes a Host header, using\n// either r.Host or r.URL.Host.\nfunc (r *Request) WriteProxy(w io.Writer) error {\n\treturn r.write(w, true, nil, nil)\n}\n\n// errMissingHost is returned by Write when there is no Host or URL present in\n// the Request.\nvar errMissingHost = errors.New(\"http: Request.Write on Request with no Host or URL set\")\n\n// extraHeaders may be nil\n// waitForContinue may be nil\nfunc (r *Request) write(w io.Writer, usingProxy bool, extraHeaders Header, waitForContinue func() bool) (err error) {\n\ttrace := httptrace.ContextClientTrace(r.Context())\n\tif trace != nil && trace.WroteRequest != nil {\n\t\tdefer func() {\n\t\t\ttrace.WroteRequest(httptrace.WroteRequestInfo{\n\t\t\t\tErr: err,\n\t\t\t})\n\t\t}()\n\t}\n\n\t// Find the target host. Prefer the Host: header, but if that\n\t// is not given, use the host from the request URL.\n\t//\n\t// Clean the host, in case it arrives with unexpected stuff in it.\n\thost := cleanHost(r.Host)\n\tif host == \"\" {\n\t\tif r.URL == nil {\n\t\t\treturn errMissingHost\n\t\t}\n\t\thost = cleanHost(r.URL.Host)\n\t}\n\n\t// According to RFC 6874, an HTTP client, proxy, or other\n\t// intermediary must remove any IPv6 zone identifier attached\n\t// to an outgoing URI.\n\thost = removeZone(host)\n\n\truri := r.URL.RequestURI()\n\tif usingProxy && r.URL.Scheme != \"\" && r.URL.Opaque == \"\" {\n\t\truri = r.URL.Scheme + \"://\" + host + ruri\n\t} else if r.Method == \"CONNECT\" && r.URL.Path == \"\" {\n\t\t// CONNECT requests normally give just the host and port, not a full URL.\n\t\truri = host\n\t\tif r.URL.Opaque != \"\" {\n\t\t\truri = r.URL.Opaque\n\t\t}\n\t}\n\tif stringContainsCTLByte(ruri) {\n\t\treturn errors.New(\"net/http: can't write control character in Request.URL\")\n\t}\n\t// TODO: validate r.Method too? At least it's less likely to\n\t// come from an attacker (more likely to be a constant in\n\t// code).\n\n\t// Wrap the writer in a bufio Writer if it's not already buffered.\n\t// Don't always call NewWriter, as that forces a bytes.Buffer\n\t// and other small bufio Writers to have a minimum 4k buffer\n\t// size.\n\tvar bw *bufio.Writer\n\tif _, ok := w.(io.ByteWriter); !ok {\n\t\tbw = bufio.NewWriter(w)\n\t\tw = bw\n\t}\n\n\t_, err = fmt.Fprintf(w, \"%s %s HTTP/1.1\\r\\n\", valueOrDefault(r.Method, \"GET\"), ruri)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Header lines\n\t_, err = fmt.Fprintf(w, \"Host: %s\\r\\n\", host)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif trace != nil && trace.WroteHeaderField != nil {\n\t\ttrace.WroteHeaderField(\"Host\", []string{host})\n\t}\n\n\t// Use the defaultUserAgent unless the Header contains one, which\n\t// may be blank to not send the header.\n\tuserAgent := defaultUserAgent\n\tif r.Header.has(\"User-Agent\") {\n\t\tuserAgent = r.Header.Get(\"User-Agent\")\n\t}\n\tif userAgent != \"\" {\n\t\t_, err = fmt.Fprintf(w, \"User-Agent: %s\\r\\n\", userAgent)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif trace != nil && trace.WroteHeaderField != nil {\n\t\t\ttrace.WroteHeaderField(\"User-Agent\", []string{userAgent})\n\t\t}\n\t}\n\n\t// Process Body,ContentLength,Close,Trailer\n\ttw, err := newTransferWriter(r)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = tw.writeHeader(w, trace)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = r.Header.writeSubset(w, reqWriteExcludeHeader, trace)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif extraHeaders != nil {\n\t\terr = extraHeaders.write(w, trace)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t_, err = io.WriteString(w, \"\\r\\n\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif trace != nil && trace.WroteHeaders != nil {\n\t\ttrace.WroteHeaders()\n\t}\n\n\t// Flush and wait for 100-continue if expected.\n\tif waitForContinue != nil {\n\t\tif bw, ok := w.(*bufio.Writer); ok {\n\t\t\terr = bw.Flush()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\tif trace != nil && trace.Wait100Continue != nil {\n\t\t\ttrace.Wait100Continue()\n\t\t}\n\t\tif !waitForContinue() {\n\t\t\tr.closeBody()\n\t\t\treturn nil\n\t\t}\n\t}\n\n\tif bw, ok := w.(*bufio.Writer); ok && tw.FlushHeaders {\n\t\tif err := bw.Flush(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Write body and trailer\n\terr = tw.writeBody(w)\n\tif err != nil {\n\t\tif tw.bodyReadError == err {\n\t\t\terr = requestBodyReadError{err}\n\t\t}\n\t\treturn err\n\t}\n\n\tif bw != nil {\n\t\treturn bw.Flush()\n\t}\n\treturn nil\n}\n\n// requestBodyReadError wraps an error from (*Request).write to indicate\n// that the error came from a Read call on the Request.Body.\n// This error type should not escape the net/http package to users.\ntype requestBodyReadError struct{ error }\n\nfunc idnaASCII(v string) (string, error) {\n\t// TODO: Consider removing this check after verifying performance is okay.\n\t// Right now punycode verification, length checks, context checks, and the\n\t// permissible character tests are all omitted. It also prevents the ToASCII\n\t// call from salvaging an invalid IDN, when possible. As a result it may be\n\t// possible to have two IDNs that appear identical to the user where the\n\t// ASCII-only version causes an error downstream whereas the non-ASCII\n\t// version does not.\n\t// Note that for correct ASCII IDNs ToASCII will only do considerably more\n\t// work, but it will not cause an allocation.\n\tif isASCII(v) {\n\t\treturn v, nil\n\t}\n\treturn idna.Lookup.ToASCII(v)\n}\n\n// cleanHost cleans up the host sent in request's Host header.\n//\n// It both strips anything after '/' or ' ', and puts the value\n// into Punycode form, if necessary.\n//\n// Ideally we'd clean the Host header according to the spec:\n// https://tools.ietf.org/html/rfc7230#section-5.4 (Host = uri-host [ \":\" port ]\")\n// https://tools.ietf.org/html/rfc7230#section-2.7 (uri-host -> rfc3986's host)\n// https://tools.ietf.org/html/rfc3986#section-3.2.2 (definition of host)\n// But practically, what we are trying to avoid is the situation in\n// issue 11206, where a malformed Host header used in the proxy context\n// would create a bad request. So it is enough to just truncate at the\n// first offending character.\nfunc cleanHost(in string) string {\n\tif i := strings.IndexAny(in, \" /\"); i != -1 {\n\t\tin = in[:i]\n\t}\n\thost, port, err := net.SplitHostPort(in)\n\tif err != nil { // input was just a host\n\t\ta, err := idnaASCII(in)\n\t\tif err != nil {\n\t\t\treturn in // garbage in, garbage out\n\t\t}\n\t\treturn a\n\t}\n\ta, err := idnaASCII(host)\n\tif err != nil {\n\t\treturn in // garbage in, garbage out\n\t}\n\treturn net.JoinHostPort(a, port)\n}\n\n// removeZone removes IPv6 zone identifier from host.\n// E.g., \"[fe80::1%en0]:8080\" to \"[fe80::1]:8080\"\nfunc removeZone(host string) string {\n\tif !strings.HasPrefix(host, \"[\") {\n\t\treturn host\n\t}\n\ti := strings.LastIndex(host, \"]\")\n\tif i < 0 {\n\t\treturn host\n\t}\n\tj := strings.LastIndex(host[:i], \"%\")\n\tif j < 0 {\n\t\treturn host\n\t}\n\treturn host[:j] + host[i:]\n}\n\n// ParseHTTPVersion parses a HTTP version string.\n// \"HTTP/1.0\" returns (1, 0, true).\nfunc ParseHTTPVersion(vers string) (major, minor int, ok bool) {\n\tconst Big = 1000000 // arbitrary upper bound\n\tswitch vers {\n\tcase \"HTTP/1.1\":\n\t\treturn 1, 1, true\n\tcase \"HTTP/1.0\":\n\t\treturn 1, 0, true\n\t}\n\tif !strings.HasPrefix(vers, \"HTTP/\") {\n\t\treturn 0, 0, false\n\t}\n\tdot := strings.Index(vers, \".\")\n\tif dot < 0 {\n\t\treturn 0, 0, false\n\t}\n\tmajor, err := strconv.Atoi(vers[5:dot])\n\tif err != nil || major < 0 || major > Big {\n\t\treturn 0, 0, false\n\t}\n\tminor, err = strconv.Atoi(vers[dot+1:])\n\tif err != nil || minor < 0 || minor > Big {\n\t\treturn 0, 0, false\n\t}\n\treturn major, minor, true\n}\n\nfunc validMethod(method string) bool {\n\t/*\n\t Method = \"OPTIONS\" ; Section 9.2\n\t | \"GET\" ; Section 9.3\n\t | \"HEAD\" ; Section 9.4\n\t | \"POST\" ; Section 9.5\n\t | \"PUT\" ; Section 9.6\n\t | \"DELETE\" ; Section 9.7\n\t | \"TRACE\" ; Section 9.8\n\t | \"CONNECT\" ; Section 9.9\n\t | extension-method\n\t extension-method = token\n\t token = 1*<any CHAR except CTLs or separators>\n\t*/\n\treturn len(method) > 0 && strings.IndexFunc(method, isNotToken) == -1\n}\n\n// NewRequest returns a new Request given a method, URL, and optional body.\n//\n// If the provided body is also an io.Closer, the returned\n// Request.Body is set to body and will be closed by the Client\n// methods Do, Post, and PostForm, and Transport.RoundTrip.\n//\n// NewRequest returns a Request suitable for use with Client.Do or\n// Transport.RoundTrip. To create a request for use with testing a\n// Server Handler, either use the NewRequest function in the\n// net/http/httptest package, use ReadRequest, or manually update the\n// Request fields. See the Request type's documentation for the\n// difference between inbound and outbound request fields.\n//\n// If body is of type *bytes.Buffer, *bytes.Reader, or\n// *strings.Reader, the returned request's ContentLength is set to its\n// exact value (instead of -1), GetBody is populated (so 307 and 308\n// redirects can replay the body), and Body is set to NoBody if the\n// ContentLength is 0.\nfunc NewRequest(method, url string, body io.Reader) (*Request, error) {\n\tif method == \"\" {\n\t\t// We document that \"\" means \"GET\" for Request.Method, and people have\n\t\t// relied on that from NewRequest, so keep that working.\n\t\t// We still enforce validMethod for non-empty methods.\n\t\tmethod = \"GET\"\n\t}\n\tif !validMethod(method) {\n\t\treturn nil, fmt.Errorf(\"net/http: invalid method %q\", method)\n\t}\n\tu, err := parseURL(url) // Just url.Parse (url is shadowed for godoc).\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\trc, ok := body.(io.ReadCloser)\n\tif !ok && body != nil {\n\t\trc = ioutil.NopCloser(body)\n\t}\n\t// The host's colon:port should be normalized. See Issue 14836.\n\tu.Host = removeEmptyPort(u.Host)\n\treq := &Request{\n\t\tMethod: method,\n\t\tURL: u,\n\t\tProto: \"HTTP/1.1\",\n\t\tProtoMajor: 1,\n\t\tProtoMinor: 1,\n\t\tHeader: make(Header),\n\t\tBody: rc,\n\t\tHost: u.Host,\n\t}\n\tif body != nil {\n\t\tswitch v := body.(type) {\n\t\tcase *bytes.Buffer:\n\t\t\treq.ContentLength = int64(v.Len())\n\t\t\tbuf := v.Bytes()\n\t\t\treq.GetBody = func() (io.ReadCloser, error) {\n\t\t\t\tr := bytes.NewReader(buf)\n\t\t\t\treturn ioutil.NopCloser(r), nil\n\t\t\t}\n\t\tcase *bytes.Reader:\n\t\t\treq.ContentLength = int64(v.Len())\n\t\t\tsnapshot := *v\n\t\t\treq.GetBody = func() (io.ReadCloser, error) {\n\t\t\t\tr := snapshot\n\t\t\t\treturn ioutil.NopCloser(&r), nil\n\t\t\t}\n\t\tcase *strings.Reader:\n\t\t\treq.ContentLength = int64(v.Len())\n\t\t\tsnapshot := *v\n\t\t\treq.GetBody = func() (io.ReadCloser, error) {\n\t\t\t\tr := snapshot\n\t\t\t\treturn ioutil.NopCloser(&r), nil\n\t\t\t}\n\t\tdefault:\n\t\t\t// This is where we'd set it to -1 (at least\n\t\t\t// if body != NoBody) to mean unknown, but\n\t\t\t// that broke people during the Go 1.8 testing\n\t\t\t// period. People depend on it being 0 I\n\t\t\t// guess. Maybe retry later. See Issue 18117.\n\t\t}\n\t\t// For client requests, Request.ContentLength of 0\n\t\t// means either actually 0, or unknown. The only way\n\t\t// to explicitly say that the ContentLength is zero is\n\t\t// to set the Body to nil. But turns out too much code\n\t\t// depends on NewRequest returning a non-nil Body,\n\t\t// so we use a well-known ReadCloser variable instead\n\t\t// and have the http package also treat that sentinel\n\t\t// variable to mean explicitly zero.\n\t\tif req.GetBody != nil && req.ContentLength == 0 {\n\t\t\treq.Body = NoBody\n\t\t\treq.GetBody = func() (io.ReadCloser, error) { return NoBody, nil }\n\t\t}\n\t}\n\n\treturn req, nil\n}\n\n// BasicAuth returns the username and password provided in the request's\n// Authorization header, if the request uses HTTP Basic Authentication.\n// See RFC 2617, Section 2.\nfunc (r *Request) BasicAuth() (username, password string, ok bool) {\n\tauth := r.Header.Get(\"Authorization\")\n\tif auth == \"\" {\n\t\treturn\n\t}\n\treturn parseBasicAuth(auth)\n}\n\n// parseBasicAuth parses an HTTP Basic Authentication string.\n// \"Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==\" returns (\"Aladdin\", \"open sesame\", true).\nfunc parseBasicAuth(auth string) (username, password string, ok bool) {\n\tconst prefix = \"Basic \"\n\t// Case insensitive prefix match. See Issue 22736.\n\tif len(auth) < len(prefix) || !strings.EqualFold(auth[:len(prefix)], prefix) {\n\t\treturn\n\t}\n\tc, err := base64.StdEncoding.DecodeString(auth[len(prefix):])\n\tif err != nil {\n\t\treturn\n\t}\n\tcs := string(c)\n\ts := strings.IndexByte(cs, ':')\n\tif s < 0 {\n\t\treturn\n\t}\n\treturn cs[:s], cs[s+1:], true\n}\n\n// SetBasicAuth sets the request's Authorization header to use HTTP\n// Basic Authentication with the provided username and password.\n//\n// With HTTP Basic Authentication the provided username and password\n// are not encrypted.\nfunc (r *Request) SetBasicAuth(username, password string) {\n\tr.Header.Set(\"Authorization\", \"Basic \"+basicAuth(username, password))\n}\n\n// parseRequestLine parses \"GET /foo HTTP/1.1\" into its three parts.\nfunc parseRequestLine(line string) (method, requestURI, proto string, ok bool) {\n\ts1 := strings.Index(line, \" \")\n\ts2 := strings.Index(line[s1+1:], \" \")\n\tif s1 < 0 || s2 < 0 {\n\t\treturn\n\t}\n\ts2 += s1 + 1\n\treturn line[:s1], line[s1+1 : s2], line[s2+1:], true\n}\n\nvar textprotoReaderPool sync.Pool\n\nfunc newTextprotoReader(br *bufio.Reader) *textproto.Reader {\n\tif v := textprotoReaderPool.Get(); v != nil {\n\t\ttr := v.(*textproto.Reader)\n\t\ttr.R = br\n\t\treturn tr\n\t}\n\treturn textproto.NewReader(br)\n}\n\nfunc putTextprotoReader(r *textproto.Reader) {\n\tr.R = nil\n\ttextprotoReaderPool.Put(r)\n}\n\n// ReadRequest reads and parses an incoming request from b.\n//\n// ReadRequest is a low-level function and should only be used for\n// specialized applications; most code should use the Server to read\n// requests and handle them via the Handler interface. ReadRequest\n// only supports HTTP/1.x requests. For HTTP/2, use golang.org/x/net/http2.\nfunc ReadRequest(b *bufio.Reader) (*Request, error) {\n\treturn readRequest(b, deleteHostHeader)\n}\n\n// Constants for readRequest's deleteHostHeader parameter.\nconst (\n\tdeleteHostHeader = true\n\tkeepHostHeader = false\n)\n\nfunc readRequest(b *bufio.Reader, deleteHostHeader bool) (req *Request, err error) {\n\ttp := newTextprotoReader(b)\n\treq = new(Request)\n\n\t// First line: GET /index.html HTTP/1.0\n\tvar s string\n\tif s, err = tp.ReadLine(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer func() {\n\t\tputTextprotoReader(tp)\n\t\tif err == io.EOF {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t}\n\t}()\n\n\tvar ok bool\n\treq.Method, req.RequestURI, req.Proto, ok = parseRequestLine(s)\n\tif !ok {\n\t\treturn nil, &badStringError{\"malformed HTTP request\", s}\n\t}\n\tif !validMethod(req.Method) {\n\t\treturn nil, &badStringError{\"invalid method\", req.Method}\n\t}\n\trawurl := req.RequestURI\n\tif req.ProtoMajor, req.ProtoMinor, ok = ParseHTTPVersion(req.Proto); !ok {\n\t\treturn nil, &badStringError{\"malformed HTTP version\", req.Proto}\n\t}\n\n\t// CONNECT requests are used two different ways, and neither uses a full URL:\n\t// The standard use is to tunnel HTTPS through an HTTP proxy.\n\t// It looks like \"CONNECT www.google.com:443 HTTP/1.1\", and the parameter is\n\t// just the authority section of a URL. This information should go in req.URL.Host.\n\t//\n\t// The net/rpc package also uses CONNECT, but there the parameter is a path\n\t// that starts with a slash. It can be parsed with the regular URL parser,\n\t// and the path will end up in req.URL.Path, where it needs to be in order for\n\t// RPC to work.\n\tjustAuthority := req.Method == \"CONNECT\" && !strings.HasPrefix(rawurl, \"/\")\n\tif justAuthority {\n\t\trawurl = \"http://\" + rawurl\n\t}\n\n\tif req.URL, err = url.ParseRequestURI(rawurl); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif justAuthority {\n\t\t// Strip the bogus \"http://\" back off.\n\t\treq.URL.Scheme = \"\"\n\t}\n\n\t// Subsequent lines: Key: value.\n\tmimeHeader, err := tp.ReadMIMEHeader()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treq.Header = Header(mimeHeader)\n\n\t// RFC 7230, section 5.3: Must treat\n\t//\tGET /index.html HTTP/1.1\n\t//\tHost: www.google.com\n\t// and\n\t//\tGET http://www.google.com/index.html HTTP/1.1\n\t//\tHost: doesntmatter\n\t// the same. In the second case, any Host line is ignored.\n\treq.Host = req.URL.Host\n\tif req.Host == \"\" {\n\t\treq.Host = req.Header.get(\"Host\")\n\t}\n\tif deleteHostHeader {\n\t\tdelete(req.Header, \"Host\")\n\t}\n\n\tfixPragmaCacheControl(req.Header)\n\n\treq.Close = shouldClose(req.ProtoMajor, req.ProtoMinor, req.Header, false)\n\n\terr = readTransfer(req, b)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif req.isH2Upgrade() {\n\t\t// Because it's neither chunked, nor declared:\n\t\treq.ContentLength = -1\n\n\t\t// We want to give handlers a chance to hijack the\n\t\t// connection, but we need to prevent the Server from\n\t\t// dealing with the connection further if it's not\n\t\t// hijacked. Set Close to ensure that:\n\t\treq.Close = true\n\t}\n\treturn req, nil\n}\n\n// MaxBytesReader is similar to io.LimitReader but is intended for\n// limiting the size of incoming request bodies. In contrast to\n// io.LimitReader, MaxBytesReader's result is a ReadCloser, returns a\n// non-EOF error for a Read beyond the limit, and closes the\n// underlying reader when its Close method is called.\n//\n// MaxBytesReader prevents clients from accidentally or maliciously\n// sending a large request and wasting server resources.\nfunc MaxBytesReader(w ResponseWriter, r io.ReadCloser, n int64) io.ReadCloser {\n\treturn &maxBytesReader{w: w, r: r, n: n}\n}\n\ntype maxBytesReader struct {\n\tw ResponseWriter\n\tr io.ReadCloser // underlying reader\n\tn int64 // max bytes remaining\n\terr error // sticky error\n}\n\nfunc (l *maxBytesReader) Read(p []byte) (n int, err error) {\n\tif l.err != nil {\n\t\treturn 0, l.err\n\t}\n\tif len(p) == 0 {\n\t\treturn 0, nil\n\t}\n\t// If they asked for a 32KB byte read but only 5 bytes are\n\t// remaining, no need to read 32KB. 6 bytes will answer the\n\t// question of the whether we hit the limit or go past it.\n\tif int64(len(p)) > l.n+1 {\n\t\tp = p[:l.n+1]\n\t}\n\tn, err = l.r.Read(p)\n\n\tif int64(n) <= l.n {\n\t\tl.n -= int64(n)\n\t\tl.err = err\n\t\treturn n, err\n\t}\n\n\tn = int(l.n)\n\tl.n = 0\n\n\t// The server code and client code both use\n\t// maxBytesReader. This \"requestTooLarge\" check is\n\t// only used by the server code. To prevent binaries\n\t// which only using the HTTP Client code (such as\n\t// cmd/go) from also linking in the HTTP server, don't\n\t// use a static type assertion to the server\n\t// \"*response\" type. Check this interface instead:\n\ttype requestTooLarger interface {\n\t\trequestTooLarge()\n\t}\n\tif res, ok := l.w.(requestTooLarger); ok {\n\t\tres.requestTooLarge()\n\t}\n\tl.err = errors.New(\"http: request body too large\")\n\treturn n, l.err\n}\n\nfunc (l *maxBytesReader) Close() error {\n\treturn l.r.Close()\n}\n\nfunc copyValues(dst, src url.Values) {\n\tfor k, vs := range src {\n\t\tfor _, value := range vs {\n\t\t\tdst.Add(k, value)\n\t\t}\n\t}\n}\n\nfunc parsePostForm(r *Request) (vs url.Values, err error) {\n\tif r.Body == nil {\n\t\terr = errors.New(\"missing form body\")\n\t\treturn\n\t}\n\tct := r.Header.Get(\"Content-Type\")\n\t// RFC 7231, section 3.1.1.5 - empty type\n\t// MAY be treated as application/octet-stream\n\tif ct == \"\" {\n\t\tct = \"application/octet-stream\"\n\t}\n\tct, _, err = mime.ParseMediaType(ct)\n\tswitch {\n\tcase ct == \"application/x-www-form-urlencoded\":\n\t\tvar reader io.Reader = r.Body\n\t\tmaxFormSize := int64(1<<63 - 1)\n\t\tif _, ok := r.Body.(*maxBytesReader); !ok {\n\t\t\tmaxFormSize = int64(10 << 20) // 10 MB is a lot of text.\n\t\t\treader = io.LimitReader(r.Body, maxFormSize+1)\n\t\t}\n\t\tb, e := ioutil.ReadAll(reader)\n\t\tif e != nil {\n\t\t\tif err == nil {\n\t\t\t\terr = e\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tif int64(len(b)) > maxFormSize {\n\t\t\terr = errors.New(\"http: POST too large\")\n\t\t\treturn\n\t\t}\n\t\tvs, e = url.ParseQuery(string(b))\n\t\tif err == nil {\n\t\t\terr = e\n\t\t}\n\tcase ct == \"multipart/form-data\":\n\t\t// handled by ParseMultipartForm (which is calling us, or should be)\n\t\t// TODO(bradfitz): there are too many possible\n\t\t// orders to call too many functions here.\n\t\t// Clean this up and write more tests.\n\t\t// request_test.go contains the start of this,\n\t\t// in TestParseMultipartFormOrder and others.\n\t}\n\treturn\n}\n\n// ParseForm populates r.Form and r.PostForm.\n//\n// For all requests, ParseForm parses the raw query from the URL and updates\n// r.Form.\n//\n// For POST, PUT, and PATCH requests, it also parses the request body as a form\n// and puts the results into both r.PostForm and r.Form. Request body parameters\n// take precedence over URL query string values in r.Form.\n//\n// For other HTTP methods, or when the Content-Type is not\n// application/x-www-form-urlencoded, the request Body is not read, and\n// r.PostForm is initialized to a non-nil, empty value.\n//\n// If the request Body's size has not already been limited by MaxBytesReader,\n// the size is capped at 10MB.\n//\n// ParseMultipartForm calls ParseForm automatically.\n// ParseForm is idempotent.\nfunc (r *Request) ParseForm() error {\n\tvar err error\n\tif r.PostForm == nil {\n\t\tif r.Method == \"POST\" || r.Method == \"PUT\" || r.Method == \"PATCH\" {\n\t\t\tr.PostForm, err = parsePostForm(r)\n\t\t}\n\t\tif r.PostForm == nil {\n\t\t\tr.PostForm = make(url.Values)\n\t\t}\n\t}\n\tif r.Form == nil {\n\t\tif len(r.PostForm) > 0 {\n\t\t\tr.Form = make(url.Values)\n\t\t\tcopyValues(r.Form, r.PostForm)\n\t\t}\n\t\tvar newValues url.Values\n\t\tif r.URL != nil {\n\t\t\tvar e error\n\t\t\tnewValues, e = url.ParseQuery(r.URL.RawQuery)\n\t\t\tif err == nil {\n\t\t\t\terr = e\n\t\t\t}\n\t\t}\n\t\tif newValues == nil {\n\t\t\tnewValues = make(url.Values)\n\t\t}\n\t\tif r.Form == nil {\n\t\t\tr.Form = newValues\n\t\t} else {\n\t\t\tcopyValues(r.Form, newValues)\n\t\t}\n\t}\n\treturn err\n}\n\n// ParseMultipartForm parses a request body as multipart/form-data.\n// The whole request body is parsed and up to a total of maxMemory bytes of\n// its file parts are stored in memory, with the remainder stored on\n// disk in temporary files.\n// ParseMultipartForm calls ParseForm if necessary.\n// After one call to ParseMultipartForm, subsequent calls have no effect.\nfunc (r *Request) ParseMultipartForm(maxMemory int64) error {\n\tif r.MultipartForm == multipartByReader {\n\t\treturn errors.New(\"http: multipart handled by MultipartReader\")\n\t}\n\tif r.Form == nil {\n\t\terr := r.ParseForm()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif r.MultipartForm != nil {\n\t\treturn nil\n\t}\n\n\tmr, err := r.multipartReader(false)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tf, err := mr.ReadForm(maxMemory)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif r.PostForm == nil {\n\t\tr.PostForm = make(url.Values)\n\t}\n\tfor k, v := range f.Value {\n\t\tr.Form[k] = append(r.Form[k], v...)\n\t\t// r.PostForm should also be populated. See Issue 9305.\n\t\tr.PostForm[k] = append(r.PostForm[k], v...)\n\t}\n\n\tr.MultipartForm = f\n\n\treturn nil\n}\n\n// FormValue returns the first value for the named component of the query.\n// POST and PUT body parameters take precedence over URL query string values.\n// FormValue calls ParseMultipartForm and ParseForm if necessary and ignores\n// any errors returned by these functions.\n// If key is not present, FormValue returns the empty string.\n// To access multiple values of the same key, call ParseForm and\n// then inspect Request.Form directly.\nfunc (r *Request) FormValue(key string) string {\n\tif r.Form == nil {\n\t\tr.ParseMultipartForm(defaultMaxMemory)\n\t}\n\tif vs := r.Form[key]; len(vs) > 0 {\n\t\treturn vs[0]\n\t}\n\treturn \"\"\n}\n\n// PostFormValue returns the first value for the named component of the POST,\n// PATCH, or PUT request body. URL query parameters are ignored.\n// PostFormValue calls ParseMultipartForm and ParseForm if necessary and ignores\n// any errors returned by these functions.\n// If key is not present, PostFormValue returns the empty string.\nfunc (r *Request) PostFormValue(key string) string {\n\tif r.PostForm == nil {\n\t\tr.ParseMultipartForm(defaultMaxMemory)\n\t}\n\tif vs := r.PostForm[key]; len(vs) > 0 {\n\t\treturn vs[0]\n\t}\n\treturn \"\"\n}\n\n// FormFile returns the first file for the provided form key.\n// FormFile calls ParseMultipartForm and ParseForm if necessary.\nfunc (r *Request) FormFile(key string) (multipart.File, *multipart.FileHeader, error) {\n\tif r.MultipartForm == multipartByReader {\n\t\treturn nil, nil, errors.New(\"http: multipart handled by MultipartReader\")\n\t}\n\tif r.MultipartForm == nil {\n\t\terr := r.ParseMultipartForm(defaultMaxMemory)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\tif r.MultipartForm != nil && r.MultipartForm.File != nil {\n\t\tif fhs := r.MultipartForm.File[key]; len(fhs) > 0 {\n\t\t\tf, err := fhs[0].Open()\n\t\t\treturn f, fhs[0], err\n\t\t}\n\t}\n\treturn nil, nil, ErrMissingFile\n}\n\nfunc (r *Request) expectsContinue() bool {\n\treturn hasToken(r.Header.get(\"Expect\"), \"100-continue\")\n}\n\nfunc (r *Request) wantsHttp10KeepAlive() bool {\n\tif r.ProtoMajor != 1 || r.ProtoMinor != 0 {\n\t\treturn false\n\t}\n\treturn hasToken(r.Header.get(\"Connection\"), \"keep-alive\")\n}\n\nfunc (r *Request) wantsClose() bool {\n\tif r.Close {\n\t\treturn true\n\t}\n\treturn hasToken(r.Header.get(\"Connection\"), \"close\")\n}\n\nfunc (r *Request) closeBody() {\n\tif r.Body != nil {\n\t\tr.Body.Close()\n\t}\n}\n\nfunc (r *Request) isReplayable() bool {\n\tif r.Body == nil || r.Body == NoBody || r.GetBody != nil {\n\t\tswitch valueOrDefault(r.Method, \"GET\") {\n\t\tcase \"GET\", \"HEAD\", \"OPTIONS\", \"TRACE\":\n\t\t\treturn true\n\t\t}\n\t\t// The Idempotency-Key, while non-standard, is widely used to\n\t\t// mean a POST or other request is idempotent. See\n\t\t// https://golang.org/issue/19943#issuecomment-421092421\n\t\tif r.Header.has(\"Idempotency-Key\") || r.Header.has(\"X-Idempotency-Key\") {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// outgoingLength reports the Content-Length of this outgoing (Client) request.\n// It maps 0 into -1 (unknown) when the Body is non-nil.\nfunc (r *Request) outgoingLength() int64 {\n\tif r.Body == nil || r.Body == NoBody {\n\t\treturn 0\n\t}\n\tif r.ContentLength != 0 {\n\t\treturn r.ContentLength\n\t}\n\treturn -1\n}\n\n// requestMethodUsuallyLacksBody reports whether the given request\n// method is one that typically does not involve a request body.\n// This is used by the Transport (via\n// transferWriter.shouldSendChunkedRequestBody) to determine whether\n// we try to test-read a byte from a non-nil Request.Body when\n// Request.outgoingLength() returns -1. See the comments in\n// shouldSendChunkedRequestBody.\nfunc requestMethodUsuallyLacksBody(method string) bool {\n\tswitch method {\n\tcase \"GET\", \"HEAD\", \"DELETE\", \"OPTIONS\", \"PROPFIND\", \"SEARCH\":\n\t\treturn true\n\t}\n\treturn false\n}\n\n// requiresHTTP1 reports whether this request requires being sent on\n// an HTTP/1 connection.\nfunc (r *Request) requiresHTTP1() bool {\n\treturn hasToken(r.Header.Get(\"Connection\"), \"upgrade\") &&\n\t\tstrings.EqualFold(r.Header.Get(\"Upgrade\"), \"websocket\")\n}\n"}}
[Trace - 2:25:16 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/request.go"}}
[Trace - 2:25:16 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"failed to run analyses for file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/request.go: context canceled"}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/request.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/client.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/cookie.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/doc.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/filetransport.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/fs.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/h2_bundle.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/header.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/http.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/jar.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/method.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/request.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/response.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/roundtrip.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/server.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/sniff.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/socks_bundle.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/status.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/transfer.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/transport.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"unable to check package for file:///Users/peter/mod/REDACTED/pkg/REDACTED/error.go: context canceled"}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/roundtrip.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/socks_bundle.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/status.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","diagnostics":[{"range":{"start":{"line":17,"character":1},"end":{"line":17,"character":38}},"severity":1,"source":"LSP","message":"could not import github.com/fastly/REDACTED/pkg/errors (context canceled)"},{"range":{"start":{"line":519,"character":1},"end":{"line":519,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":521,"character":15},"end":{"line":521,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":529,"character":9},"end":{"line":529,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":532,"character":19},"end":{"line":532,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":453,"character":1},"end":{"line":453,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":455,"character":15},"end":{"line":455,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":464,"character":9},"end":{"line":464,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":467,"character":19},"end":{"line":467,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":515,"character":1},"end":{"line":515,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"},{"range":{"start":{"line":420,"character":1},"end":{"line":420,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":422,"character":15},"end":{"line":422,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":430,"character":9},"end":{"line":430,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":433,"character":19},"end":{"line":433,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":376,"character":1},"end":{"line":376,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":378,"character":15},"end":{"line":378,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":386,"character":9},"end":{"line":386,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":389,"character":19},"end":{"line":389,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":416,"character":1},"end":{"line":416,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"},{"range":{"start":{"line":338,"character":1},"end":{"line":338,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":340,"character":15},"end":{"line":340,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":348,"character":9},"end":{"line":348,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":351,"character":19},"end":{"line":351,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":298,"character":1},"end":{"line":298,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":300,"character":15},"end":{"line":300,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":308,"character":9},"end":{"line":308,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":311,"character":19},"end":{"line":311,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":334,"character":1},"end":{"line":334,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"},{"range":{"start":{"line":211,"character":1},"end":{"line":211,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":213,"character":15},"end":{"line":213,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":221,"character":9},"end":{"line":221,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":224,"character":19},"end":{"line":224,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":165,"character":1},"end":{"line":165,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":167,"character":15},"end":{"line":167,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":175,"character":9},"end":{"line":175,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":178,"character":19},"end":{"line":178,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":207,"character":1},"end":{"line":207,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"},{"range":{"start":{"line":88,"character":1},"end":{"line":88,"character":9}},"severity":1,"source":"LSP","message":"undeclared name: setRoute"},{"range":{"start":{"line":90,"character":15},"end":{"line":90,"character":25}},"severity":1,"source":"LSP","message":"undeclared name: parseToken"},{"range":{"start":{"line":99,"character":9},"end":{"line":99,"character":29}},"severity":1,"source":"LSP","message":"undeclared name: parseConsistencyMode"},{"range":{"start":{"line":102,"character":19},"end":{"line":102,"character":26}},"severity":1,"source":"LSP","message":"undeclared name: ErrNoID"},{"range":{"start":{"line":161,"character":1},"end":{"line":161,"character":22}},"severity":1,"source":"LSP","message":"undeclared name: respondPublicSuccessf"}]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/h2_bundle.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/header.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/response.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/sniff.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/client.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/doc.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/filetransport.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/jar.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/method.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/request.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/server.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/transfer.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/cookie.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/fs.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/http.go","diagnostics":[]}
[Trace - 2:25:16 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/net/http/transport.go","diagnostics":[]}
[Trace - 2:27:31 PM] Sending request 'textDocument/hover - (302)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":178,"character":21}}
[Error - 2:27:31 PM] send textDocument/hover#302 no object for ident ErrNoID
[Error - 2:27:31 PM] Request textDocument/hover failed.
Message: no object for ident ErrNoID
Code: 0
[Trace - 2:27:31 PM] Sending request 'textDocument/codeAction - (303)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":178,"character":19},"end":{"line":178,"character":26}},"context":{"diagnostics":[{"range":{"start":{"line":178,"character":19},"end":{"line":178,"character":26}},"message":"undeclared name: ErrNoID","severity":1,"source":"LSP"}]}}
[Trace - 2:27:31 PM] Received response 'textDocument/codeAction - (303)' in 10ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:27:32 PM] Sending request 'textDocument/definition - (304)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":178,"character":22}}
[Error - 2:27:32 PM] send textDocument/definition#304 no object for ident ErrNoID
[Error - 2:27:32 PM] Request textDocument/definition failed.
Message: no object for ident ErrNoID
Code: 0
[Trace - 2:27:36 PM] Sending request 'textDocument/definition - (305)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":178,"character":22}}
[Error - 2:27:36 PM] send textDocument/definition#305 no object for ident ErrNoID
[Error - 2:27:36 PM] Request textDocument/definition failed.
Message: no object for ident ErrNoID
Code: 0
[Trace - 2:29:53 PM] Sending request 'textDocument/definition - (306)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":178,"character":22}}
[Error - 2:29:53 PM] send textDocument/definition#306 no object for ident ErrNoID
[Error - 2:29:53 PM] Request textDocument/definition failed.
Message: no object for ident ErrNoID
Code: 0
[Trace - 2:29:53 PM] Sending request 'textDocument/documentLink - (307)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"}}
[Trace - 2:29:53 PM] Received response 'textDocument/documentLink - (307)' in 0ms.
Params: [{"range":{"start":{"line":2,"character":7},"end":{"line":2,"character":16}},"target":"https://godoc.org/testing"}]
[Trace - 2:29:53 PM] Sending request 'textDocument/codeAction - (308)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:29:53 PM] Received response 'textDocument/codeAction - (308)' in 0ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[]}}}]
[Trace - 2:29:54 PM] Sending request 'textDocument/codeAction - (309)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":0,"character":0},"end":{"line":7,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:29:54 PM] Received response 'textDocument/codeAction - (309)' in 0ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[]}}}]
[Trace - 2:29:56 PM] Sending request 'textDocument/documentHighlight - (310)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"position":{"line":4,"character":0}}
[Trace - 2:29:56 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"no highlight for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:5: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:5:1 is not an identifier"}
[Trace - 2:29:56 PM] Received response 'textDocument/documentHighlight - (310)' in 0ms.
Params: []
[Error - 2:29:56 PM] no highlight for /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:5: /Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go:5:1 is not an identifier
[Trace - 2:29:56 PM] Sending request 'textDocument/codeAction - (311)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go"},"range":{"start":{"line":4,"character":0},"end":{"line":4,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:29:56 PM] Received response 'textDocument/codeAction - (311)' in 1ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go":[]}}}]
[Trace - 2:30:51 PM] Sending request 'textDocument/documentLink - (312)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"}}
[Trace - 2:30:51 PM] Received response 'textDocument/documentLink - (312)' in 0ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":8}},"target":"https://godoc.org/bytes"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":18}},"target":"https://godoc.org/encoding/base64"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":16}},"target":"https://godoc.org/encoding/json"},{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":12}},"target":"https://godoc.org/io/ioutil"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":7}},"target":"https://godoc.org/mime"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":17}},"target":"https://godoc.org/mime/multipart"},{"range":{"start":{"line":11,"character":1},"end":{"line":11,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":10}},"target":"https://godoc.org/strconv"},{"range":{"start":{"line":13,"character":1},"end":{"line":13,"character":10}},"target":"https://godoc.org/strings"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":7}},"target":"https://godoc.org/time"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/auth"},{"range":{"start":{"line":17,"character":1},"end":{"line":17,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/errors"},{"range":{"start":{"line":18,"character":1},"end":{"line":18,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/object"},{"range":{"start":{"line":19,"character":1},"end":{"line":19,"character":39}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/replica"},{"range":{"start":{"line":20,"character":1},"end":{"line":20,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/ring"},{"range":{"start":{"line":21,"character":1},"end":{"line":21,"character":25}},"target":"https://godoc.org/github.com/gorilla/mux"}]
[Trace - 2:30:51 PM] Sending request 'textDocument/codeAction - (313)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:30:51 PM] Received response 'textDocument/codeAction - (313)' in 14ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:30:51 PM] Sending request 'textDocument/codeAction - (314)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":182,"character":54},"end":{"line":182,"character":54}},"context":{"diagnostics":[]}}
[Trace - 2:30:51 PM] Received response 'textDocument/codeAction - (314)' in 8ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:30:52 PM] Sending request 'textDocument/hover - (315)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":188,"character":16}}
[Trace - 2:30:52 PM] Received response 'textDocument/hover - (315)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"URL specifies either the URI being requested (for server requests) or the URL to access (for client requests).\n```go\nfield URL *url.URL\n```"},"range":{"start":{"line":188,"character":15},"end":{"line":188,"character":18}}}
[Trace - 2:30:54 PM] Sending request 'textDocument/hover - (316)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":175,"character":16}}
[Error - 2:30:54 PM] send textDocument/hover#316 no object for ident parseConsistencyMode
[Error - 2:30:54 PM] Request textDocument/hover failed.
Message: no object for ident parseConsistencyMode
Code: 0
[Trace - 2:30:54 PM] Sending request 'textDocument/hover - (317)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":175,"character":16}}
[Error - 2:30:54 PM] send textDocument/hover#317 no object for ident parseConsistencyMode
[Error - 2:30:54 PM] Request textDocument/hover failed.
Message: no object for ident parseConsistencyMode
Code: 0
[Trace - 2:30:54 PM] Sending request 'textDocument/codeAction - (318)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":175,"character":9},"end":{"line":175,"character":29}},"context":{"diagnostics":[{"range":{"start":{"line":175,"character":9},"end":{"line":175,"character":29}},"message":"undeclared name: parseConsistencyMode","severity":1,"source":"LSP"}]}}
[Trace - 2:30:54 PM] Received response 'textDocument/codeAction - (318)' in 11ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:30:55 PM] Sending request 'textDocument/definition - (319)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":175,"character":17}}
[Error - 2:30:55 PM] send textDocument/definition#319 no object for ident parseConsistencyMode
[Error - 2:30:55 PM] Request textDocument/definition failed.
Message: no object for ident parseConsistencyMode
Code: 0
[Trace - 2:30:55 PM] Sending request 'textDocument/documentHighlight - (320)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":175,"character":17}}
[Trace - 2:30:55 PM] Received response 'textDocument/documentHighlight - (320)' in 0ms.
Params: []
[Trace - 2:30:56 PM] Sending request 'textDocument/definition - (321)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":175,"character":17}}
[Error - 2:30:56 PM] send textDocument/definition#321 no object for ident parseConsistencyMode
[Error - 2:30:56 PM] Request textDocument/definition failed.
Message: no object for ident parseConsistencyMode
Code: 0
[Trace - 2:30:56 PM] Sending request 'textDocument/codeAction - (322)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":175,"character":17},"end":{"line":175,"character":17}},"context":{"diagnostics":[{"range":{"start":{"line":175,"character":9},"end":{"line":175,"character":29}},"message":"undeclared name: parseConsistencyMode","severity":1,"source":"LSP"}]}}
[Trace - 2:30:56 PM] Received response 'textDocument/codeAction - (322)' in 12ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:30:57 PM] Sending request 'textDocument/hover - (323)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":175,"character":13}}
[Error - 2:30:57 PM] send textDocument/hover#323 no object for ident parseConsistencyMode
[Error - 2:30:57 PM] Request textDocument/hover failed.
Message: no object for ident parseConsistencyMode
Code: 0
[Trace - 2:30:57 PM] Sending request 'textDocument/codeAction - (324)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":175,"character":9},"end":{"line":175,"character":29}},"context":{"diagnostics":[{"range":{"start":{"line":175,"character":9},"end":{"line":175,"character":29}},"message":"undeclared name: parseConsistencyMode","severity":1,"source":"LSP"}]}}
[Trace - 2:30:57 PM] Sending request 'textDocument/definition - (325)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":175,"character":13}}
[Trace - 2:30:57 PM] Received response 'textDocument/codeAction - (324)' in 9ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Error - 2:30:57 PM] send textDocument/definition#325 no object for ident parseConsistencyMode
[Error - 2:30:57 PM] Request textDocument/definition failed.
Message: no object for ident parseConsistencyMode
Code: 0
[Trace - 2:30:58 PM] Sending request 'textDocument/codeAction - (326)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":213,"character":15},"end":{"line":213,"character":18}},"context":{"diagnostics":[{"range":{"start":{"line":213,"character":15},"end":{"line":213,"character":25}},"message":"undeclared name: parseToken","severity":1,"source":"LSP"}]}}
[Trace - 2:30:58 PM] Received response 'textDocument/codeAction - (326)' in 12ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:02 PM] Sending request 'textDocument/codeAction - (327)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":308,"character":9},"end":{"line":308,"character":29}},"context":{"diagnostics":[{"range":{"start":{"line":308,"character":9},"end":{"line":308,"character":29}},"message":"undeclared name: parseConsistencyMode","severity":1,"source":"LSP"}]}}
[Trace - 2:31:02 PM] Received response 'textDocument/codeAction - (327)' in 10ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:02 PM] Sending request 'textDocument/codeAction - (328)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":386,"character":9},"end":{"line":386,"character":29}},"context":{"diagnostics":[{"range":{"start":{"line":386,"character":9},"end":{"line":386,"character":29}},"message":"undeclared name: parseConsistencyMode","severity":1,"source":"LSP"}]}}
[Trace - 2:31:02 PM] Received response 'textDocument/codeAction - (328)' in 11ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:03 PM] Sending request 'textDocument/codeAction - (329)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":430,"character":9},"end":{"line":430,"character":29}},"context":{"diagnostics":[{"range":{"start":{"line":430,"character":9},"end":{"line":430,"character":29}},"message":"undeclared name: parseConsistencyMode","severity":1,"source":"LSP"}]}}
[Trace - 2:31:03 PM] Received response 'textDocument/codeAction - (329)' in 12ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:03 PM] Sending request 'textDocument/codeAction - (330)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":464,"character":9},"end":{"line":464,"character":29}},"context":{"diagnostics":[{"range":{"start":{"line":464,"character":9},"end":{"line":464,"character":29}},"message":"undeclared name: parseConsistencyMode","severity":1,"source":"LSP"}]}}
[Trace - 2:31:03 PM] Received response 'textDocument/codeAction - (330)' in 10ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:04 PM] Sending request 'textDocument/codeAction - (331)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":529,"character":9},"end":{"line":529,"character":29}},"context":{"diagnostics":[{"range":{"start":{"line":529,"character":9},"end":{"line":529,"character":29}},"message":"undeclared name: parseConsistencyMode","severity":1,"source":"LSP"}]}}
[Trace - 2:31:04 PM] Received response 'textDocument/codeAction - (331)' in 18ms.
Params: [{"title":"Organize All Imports","kind":"quickfix","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}},{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:06 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go","languageId":"go","version":1,"text":"package api\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\n\t\"github.com/fastly/REDACTED/pkg/errors\"\n\t\"github.com/fastly/REDACTED/pkg/ring\"\n)\n\n// Doer models http.Client.\ntype Doer interface {\n\tDo(*http.Request) (*http.Response, error)\n}\n\nvar (\n\t// ErrTokenMissing indicates a user request is missing its auth token.\n\tErrTokenMissing = errors.NewCode(http.StatusBadRequest, \"the Fastly-Key header is required\")\n\n\t// ErrNoID indicates the object ID couldn't be parsed from the request.\n\t// This is almost certainly an internal routing (i.e. programmer) error.\n\tErrNoID = errors.NewCode(http.StatusInternalServerError, \"object ID not found (internal routing error)\")\n)\n\nfunc parseToken(r *http.Request) (token string, err error) {\n\ttoken = r.Header.Get(\"Fastly-Key\")\n\tif token == \"\" {\n\t\terr = ErrTokenMissing\n\t}\n\treturn token, err\n}\n\nfunc parseConsistencyMode(query url.Values) ring.ConsistencyMode {\n\tswitch strings.ToLower(query.Get(\"consistency\")) {\n\tcase \"fast\":\n\t\treturn ring.ConsistencyModeFast\n\tcase \"safe\":\n\t\treturn ring.ConsistencyModeSafe\n\tcase \"yolo\":\n\t\treturn ring.ConsistencyModeYOLO\n\tdefault:\n\t\treturn ring.ConsistencyModeBest\n\t}\n}\n\nfunc respondPublicSuccessf(w http.ResponseWriter, format string, args ...interface{}) {\n\trespondPublicf(w, http.StatusOK, format, args...)\n}\n\nfunc respondPublicf(w http.ResponseWriter, code int, format string, args ...interface{}) {\n\tw.WriteHeader(code)\n\tfmt.Fprintf(w, format, args...)\n}\n\nfunc respondInternalJSON(w http.ResponseWriter, code int, response interface{}) {\n\tw.WriteHeader(code)\n\tjson.NewEncoder(w).Encode(response)\n}\n"}}
[Trace - 2:31:06 PM] Sending request 'textDocument/documentLink - (332)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go"}}
[Trace - 2:31:06 PM] Sending request 'textDocument/codeAction - (333)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:31:06 PM] Received response 'textDocument/documentLink - (332)' in 523ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":16}},"target":"https://godoc.org/encoding/json"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":10}},"target":"https://godoc.org/net/url"},{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":10}},"target":"https://godoc.org/strings"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/errors"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/ring"}]
[Trace - 2:31:06 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/internal.go","diagnostics":[]}
[Trace - 2:31:06 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/middlewares.go","diagnostics":[]}
[Trace - 2:31:06 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","diagnostics":[{"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"severity":1,"source":"LSP","message":"cannot use object.ErrNotFound (variable with invalid type) as errors.Error value in argument to errors.SomewhatEqual"}]}
[Trace - 2:31:06 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/tls.go","diagnostics":[]}
[Trace - 2:31:06 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go","diagnostics":[]}
[Trace - 2:31:06 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/debug.go","diagnostics":[]}
[Trace - 2:31:06 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:06 PM] Sending request 'textDocument/documentSymbol - (334)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go"}}
[Trace - 2:31:06 PM] Received response 'textDocument/codeAction - (333)' in 522ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go":[]}}}]
[Trace - 2:31:06 PM] Received response 'textDocument/documentSymbol - (334)' in 522ms.
Params: [{"name":"Doer","detail":"interface{...}","kind":11,"range":{"start":{"line":14,"character":5},"end":{"line":16,"character":1}},"selectionRange":{"start":{"line":14,"character":5},"end":{"line":14,"character":9}},"children":[{"name":"Do","kind":6,"range":{"start":{"line":15,"character":1},"end":{"line":15,"character":42}},"selectionRange":{"start":{"line":15,"character":1},"end":{"line":15,"character":3}}}]},{"name":"ErrTokenMissing","detail":"errors.Error","kind":13,"range":{"start":{"line":18,"character":0},"end":{"line":25,"character":1}},"selectionRange":{"start":{"line":20,"character":1},"end":{"line":20,"character":16}}},{"name":"ErrNoID","detail":"errors.Error","kind":13,"range":{"start":{"line":18,"character":0},"end":{"line":25,"character":1}},"selectionRange":{"start":{"line":24,"character":1},"end":{"line":24,"character":8}}},{"name":"parseToken","detail":"(r *http.Request)","kind":12,"range":{"start":{"line":27,"character":0},"end":{"line":33,"character":1}},"selectionRange":{"start":{"line":27,"character":5},"end":{"line":27,"character":15}}},{"name":"parseConsistencyMode","detail":"(query url.Values)","kind":12,"range":{"start":{"line":35,"character":0},"end":{"line":46,"character":1}},"selectionRange":{"start":{"line":35,"character":5},"end":{"line":35,"character":25}}},{"name":"respondPublicSuccessf","detail":"(w http.ResponseWriter, format string, args []interface{})","kind":12,"range":{"start":{"line":48,"character":0},"end":{"line":50,"character":1}},"selectionRange":{"start":{"line":48,"character":5},"end":{"line":48,"character":26}}},{"name":"respondPublicf","detail":"(w http.ResponseWriter, code int, format string, args []interface{})","kind":12,"range":{"start":{"line":52,"character":0},"end":{"line":55,"character":1}},"selectionRange":{"start":{"line":52,"character":5},"end":{"line":52,"character":19}}},{"name":"respondInternalJSON","detail":"(w http.ResponseWriter, code int, response interface{})","kind":12,"range":{"start":{"line":57,"character":0},"end":{"line":60,"character":1}},"selectionRange":{"start":{"line":57,"character":5},"end":{"line":57,"character":24}}}]
[Trace - 2:31:06 PM] Sending request 'textDocument/codeAction - (335)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go"},"range":{"start":{"line":35,"character":5},"end":{"line":35,"character":5}},"context":{"diagnostics":[]}}
[Trace - 2:31:06 PM] Received response 'textDocument/codeAction - (335)' in 277ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go":[]}}}]
[Trace - 2:31:06 PM] Sending notification '$/cancelRequest'.
Params: {"id":333}
[Trace - 2:31:07 PM] Sending request 'textDocument/hover - (336)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go"},"position":{"line":13,"character":25}}
[Error - 2:31:07 PM] send textDocument/hover#336 no identifier found
[Error - 2:31:07 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Trace - 2:31:12 PM] Sending request 'textDocument/hover - (337)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go"},"position":{"line":36,"character":22}}
[Trace - 2:31:12 PM] Received response 'textDocument/hover - (337)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"ToLower returns a copy of the string s with all Unicode letters mapped to their lower case.\n```go\nfunc strings.ToLower(s string) string\n```"},"range":{"start":{"line":36,"character":16},"end":{"line":36,"character":23}}}
[Trace - 2:31:12 PM] Sending request 'textDocument/definition - (338)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go"},"position":{"line":36,"character":22}}
[Trace - 2:31:12 PM] Received response 'textDocument/definition - (338)' in 13ms.
Params: [{"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/strings.go","range":{"start":{"line":583,"character":5},"end":{"line":583,"character":12}}}]
[Trace - 2:31:12 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/strings.go","languageId":"go","version":1,"text":"// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package strings implements simple functions to manipulate UTF-8 encoded strings.\n//\n// For information about UTF-8 strings in Go, see https://blog.golang.org/strings.\npackage strings\n\nimport (\n\t\"internal/bytealg\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n)\n\n// explode splits s into a slice of UTF-8 strings,\n// one string per Unicode character up to a maximum of n (n < 0 means no limit).\n// Invalid UTF-8 sequences become correct encodings of U+FFFD.\nfunc explode(s string, n int) []string {\n\tl := utf8.RuneCountInString(s)\n\tif n < 0 || n > l {\n\t\tn = l\n\t}\n\ta := make([]string, n)\n\tfor i := 0; i < n-1; i++ {\n\t\tch, size := utf8.DecodeRuneInString(s)\n\t\ta[i] = s[:size]\n\t\ts = s[size:]\n\t\tif ch == utf8.RuneError {\n\t\t\ta[i] = string(utf8.RuneError)\n\t\t}\n\t}\n\tif n > 0 {\n\t\ta[n-1] = s\n\t}\n\treturn a\n}\n\n// primeRK is the prime base used in Rabin-Karp algorithm.\nconst primeRK = 16777619\n\n// hashStr returns the hash and the appropriate multiplicative\n// factor for use in Rabin-Karp algorithm.\nfunc hashStr(sep string) (uint32, uint32) {\n\thash := uint32(0)\n\tfor i := 0; i < len(sep); i++ {\n\t\thash = hash*primeRK + uint32(sep[i])\n\t}\n\tvar pow, sq uint32 = 1, primeRK\n\tfor i := len(sep); i > 0; i >>= 1 {\n\t\tif i&1 != 0 {\n\t\t\tpow *= sq\n\t\t}\n\t\tsq *= sq\n\t}\n\treturn hash, pow\n}\n\n// hashStrRev returns the hash of the reverse of sep and the\n// appropriate multiplicative factor for use in Rabin-Karp algorithm.\nfunc hashStrRev(sep string) (uint32, uint32) {\n\thash := uint32(0)\n\tfor i := len(sep) - 1; i >= 0; i-- {\n\t\thash = hash*primeRK + uint32(sep[i])\n\t}\n\tvar pow, sq uint32 = 1, primeRK\n\tfor i := len(sep); i > 0; i >>= 1 {\n\t\tif i&1 != 0 {\n\t\t\tpow *= sq\n\t\t}\n\t\tsq *= sq\n\t}\n\treturn hash, pow\n}\n\n// Count counts the number of non-overlapping instances of substr in s.\n// If substr is an empty string, Count returns 1 + the number of Unicode code points in s.\nfunc Count(s, substr string) int {\n\t// special case\n\tif len(substr) == 0 {\n\t\treturn utf8.RuneCountInString(s) + 1\n\t}\n\tif len(substr) == 1 {\n\t\treturn bytealg.CountString(s, substr[0])\n\t}\n\tn := 0\n\tfor {\n\t\ti := Index(s, substr)\n\t\tif i == -1 {\n\t\t\treturn n\n\t\t}\n\t\tn++\n\t\ts = s[i+len(substr):]\n\t}\n}\n\n// Contains reports whether substr is within s.\nfunc Contains(s, substr string) bool {\n\treturn Index(s, substr) >= 0\n}\n\n// ContainsAny reports whether any Unicode code points in chars are within s.\nfunc ContainsAny(s, chars string) bool {\n\treturn IndexAny(s, chars) >= 0\n}\n\n// ContainsRune reports whether the Unicode code point r is within s.\nfunc ContainsRune(s string, r rune) bool {\n\treturn IndexRune(s, r) >= 0\n}\n\n// LastIndex returns the index of the last instance of substr in s, or -1 if substr is not present in s.\nfunc LastIndex(s, substr string) int {\n\tn := len(substr)\n\tswitch {\n\tcase n == 0:\n\t\treturn len(s)\n\tcase n == 1:\n\t\treturn LastIndexByte(s, substr[0])\n\tcase n == len(s):\n\t\tif substr == s {\n\t\t\treturn 0\n\t\t}\n\t\treturn -1\n\tcase n > len(s):\n\t\treturn -1\n\t}\n\t// Rabin-Karp search from the end of the string\n\thashss, pow := hashStrRev(substr)\n\tlast := len(s) - n\n\tvar h uint32\n\tfor i := len(s) - 1; i >= last; i-- {\n\t\th = h*primeRK + uint32(s[i])\n\t}\n\tif h == hashss && s[last:] == substr {\n\t\treturn last\n\t}\n\tfor i := last - 1; i >= 0; i-- {\n\t\th *= primeRK\n\t\th += uint32(s[i])\n\t\th -= pow * uint32(s[i+n])\n\t\tif h == hashss && s[i:i+n] == substr {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// IndexByte returns the index of the first instance of c in s, or -1 if c is not present in s.\nfunc IndexByte(s string, c byte) int {\n\treturn bytealg.IndexByteString(s, c)\n}\n\n// IndexRune returns the index of the first instance of the Unicode code point\n// r, or -1 if rune is not present in s.\n// If r is utf8.RuneError, it returns the first instance of any\n// invalid UTF-8 byte sequence.\nfunc IndexRune(s string, r rune) int {\n\tswitch {\n\tcase 0 <= r && r < utf8.RuneSelf:\n\t\treturn IndexByte(s, byte(r))\n\tcase r == utf8.RuneError:\n\t\tfor i, r := range s {\n\t\t\tif r == utf8.RuneError {\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\t\treturn -1\n\tcase !utf8.ValidRune(r):\n\t\treturn -1\n\tdefault:\n\t\treturn Index(s, string(r))\n\t}\n}\n\n// IndexAny returns the index of the first instance of any Unicode code point\n// from chars in s, or -1 if no Unicode code point from chars is present in s.\nfunc IndexAny(s, chars string) int {\n\tif chars == \"\" {\n\t\t// Avoid scanning all of s.\n\t\treturn -1\n\t}\n\tif len(s) > 8 {\n\t\tif as, isASCII := makeASCIISet(chars); isASCII {\n\t\t\tfor i := 0; i < len(s); i++ {\n\t\t\t\tif as.contains(s[i]) {\n\t\t\t\t\treturn i\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1\n\t\t}\n\t}\n\tfor i, c := range s {\n\t\tfor _, m := range chars {\n\t\t\tif c == m {\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\t}\n\treturn -1\n}\n\n// LastIndexAny returns the index of the last instance of any Unicode code\n// point from chars in s, or -1 if no Unicode code point from chars is\n// present in s.\nfunc LastIndexAny(s, chars string) int {\n\tif chars == \"\" {\n\t\t// Avoid scanning all of s.\n\t\treturn -1\n\t}\n\tif len(s) > 8 {\n\t\tif as, isASCII := makeASCIISet(chars); isASCII {\n\t\t\tfor i := len(s) - 1; i >= 0; i-- {\n\t\t\t\tif as.contains(s[i]) {\n\t\t\t\t\treturn i\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1\n\t\t}\n\t}\n\tfor i := len(s); i > 0; {\n\t\tr, size := utf8.DecodeLastRuneInString(s[:i])\n\t\ti -= size\n\t\tfor _, c := range chars {\n\t\t\tif r == c {\n\t\t\t\treturn i\n\t\t\t}\n\t\t}\n\t}\n\treturn -1\n}\n\n// LastIndexByte returns the index of the last instance of c in s, or -1 if c is not present in s.\nfunc LastIndexByte(s string, c byte) int {\n\tfor i := len(s) - 1; i >= 0; i-- {\n\t\tif s[i] == c {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// Generic split: splits after each instance of sep,\n// including sepSave bytes of sep in the subarrays.\nfunc genSplit(s, sep string, sepSave, n int) []string {\n\tif n == 0 {\n\t\treturn nil\n\t}\n\tif sep == \"\" {\n\t\treturn explode(s, n)\n\t}\n\tif n < 0 {\n\t\tn = Count(s, sep) + 1\n\t}\n\n\ta := make([]string, n)\n\tn--\n\ti := 0\n\tfor i < n {\n\t\tm := Index(s, sep)\n\t\tif m < 0 {\n\t\t\tbreak\n\t\t}\n\t\ta[i] = s[:m+sepSave]\n\t\ts = s[m+len(sep):]\n\t\ti++\n\t}\n\ta[i] = s\n\treturn a[:i+1]\n}\n\n// SplitN slices s into substrings separated by sep and returns a slice of\n// the substrings between those separators.\n//\n// The count determines the number of substrings to return:\n// n > 0: at most n substrings; the last substring will be the unsplit remainder.\n// n == 0: the result is nil (zero substrings)\n// n < 0: all substrings\n//\n// Edge cases for s and sep (for example, empty strings) are handled\n// as described in the documentation for Split.\nfunc SplitN(s, sep string, n int) []string { return genSplit(s, sep, 0, n) }\n\n// SplitAfterN slices s into substrings after each instance of sep and\n// returns a slice of those substrings.\n//\n// The count determines the number of substrings to return:\n// n > 0: at most n substrings; the last substring will be the unsplit remainder.\n// n == 0: the result is nil (zero substrings)\n// n < 0: all substrings\n//\n// Edge cases for s and sep (for example, empty strings) are handled\n// as described in the documentation for SplitAfter.\nfunc SplitAfterN(s, sep string, n int) []string {\n\treturn genSplit(s, sep, len(sep), n)\n}\n\n// Split slices s into all substrings separated by sep and returns a slice of\n// the substrings between those separators.\n//\n// If s does not contain sep and sep is not empty, Split returns a\n// slice of length 1 whose only element is s.\n//\n// If sep is empty, Split splits after each UTF-8 sequence. If both s\n// and sep are empty, Split returns an empty slice.\n//\n// It is equivalent to SplitN with a count of -1.\nfunc Split(s, sep string) []string { return genSplit(s, sep, 0, -1) }\n\n// SplitAfter slices s into all substrings after each instance of sep and\n// returns a slice of those substrings.\n//\n// If s does not contain sep and sep is not empty, SplitAfter returns\n// a slice of length 1 whose only element is s.\n//\n// If sep is empty, SplitAfter splits after each UTF-8 sequence. If\n// both s and sep are empty, SplitAfter returns an empty slice.\n//\n// It is equivalent to SplitAfterN with a count of -1.\nfunc SplitAfter(s, sep string) []string {\n\treturn genSplit(s, sep, len(sep), -1)\n}\n\nvar asciiSpace = [256]uint8{'\\t': 1, '\\n': 1, '\\v': 1, '\\f': 1, '\\r': 1, ' ': 1}\n\n// Fields splits the string s around each instance of one or more consecutive white space\n// characters, as defined by unicode.IsSpace, returning a slice of substrings of s or an\n// empty slice if s contains only white space.\nfunc Fields(s string) []string {\n\t// First count the fields.\n\t// This is an exact count if s is ASCII, otherwise it is an approximation.\n\tn := 0\n\twasSpace := 1\n\t// setBits is used to track which bits are set in the bytes of s.\n\tsetBits := uint8(0)\n\tfor i := 0; i < len(s); i++ {\n\t\tr := s[i]\n\t\tsetBits |= r\n\t\tisSpace := int(asciiSpace[r])\n\t\tn += wasSpace & ^isSpace\n\t\twasSpace = isSpace\n\t}\n\n\tif setBits < utf8.RuneSelf { // ASCII fast path\n\t\ta := make([]string, n)\n\t\tna := 0\n\t\tfieldStart := 0\n\t\ti := 0\n\t\t// Skip spaces in the front of the input.\n\t\tfor i < len(s) && asciiSpace[s[i]] != 0 {\n\t\t\ti++\n\t\t}\n\t\tfieldStart = i\n\t\tfor i < len(s) {\n\t\t\tif asciiSpace[s[i]] == 0 {\n\t\t\t\ti++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ta[na] = s[fieldStart:i]\n\t\t\tna++\n\t\t\ti++\n\t\t\t// Skip spaces in between fields.\n\t\t\tfor i < len(s) && asciiSpace[s[i]] != 0 {\n\t\t\t\ti++\n\t\t\t}\n\t\t\tfieldStart = i\n\t\t}\n\t\tif fieldStart < len(s) { // Last field might end at EOF.\n\t\t\ta[na] = s[fieldStart:]\n\t\t}\n\t\treturn a\n\t}\n\n\t// Some runes in the input string are not ASCII.\n\treturn FieldsFunc(s, unicode.IsSpace)\n}\n\n// FieldsFunc splits the string s at each run of Unicode code points c satisfying f(c)\n// and returns an array of slices of s. If all code points in s satisfy f(c) or the\n// string is empty, an empty slice is returned.\n// FieldsFunc makes no guarantees about the order in which it calls f(c).\n// If f does not return consistent results for a given c, FieldsFunc may crash.\nfunc FieldsFunc(s string, f func(rune) bool) []string {\n\t// A span is used to record a slice of s of the form s[start:end].\n\t// The start index is inclusive and the end index is exclusive.\n\ttype span struct {\n\t\tstart int\n\t\tend int\n\t}\n\tspans := make([]span, 0, 32)\n\n\t// Find the field start and end indices.\n\twasField := false\n\tfromIndex := 0\n\tfor i, rune := range s {\n\t\tif f(rune) {\n\t\t\tif wasField {\n\t\t\t\tspans = append(spans, span{start: fromIndex, end: i})\n\t\t\t\twasField = false\n\t\t\t}\n\t\t} else {\n\t\t\tif !wasField {\n\t\t\t\tfromIndex = i\n\t\t\t\twasField = true\n\t\t\t}\n\t\t}\n\t}\n\n\t// Last field might end at EOF.\n\tif wasField {\n\t\tspans = append(spans, span{fromIndex, len(s)})\n\t}\n\n\t// Create strings from recorded field indices.\n\ta := make([]string, len(spans))\n\tfor i, span := range spans {\n\t\ta[i] = s[span.start:span.end]\n\t}\n\n\treturn a\n}\n\n// Join concatenates the elements of a to create a single string. The separator string\n// sep is placed between elements in the resulting string.\nfunc Join(a []string, sep string) string {\n\tswitch len(a) {\n\tcase 0:\n\t\treturn \"\"\n\tcase 1:\n\t\treturn a[0]\n\t}\n\tn := len(sep) * (len(a) - 1)\n\tfor i := 0; i < len(a); i++ {\n\t\tn += len(a[i])\n\t}\n\n\tvar b Builder\n\tb.Grow(n)\n\tb.WriteString(a[0])\n\tfor _, s := range a[1:] {\n\t\tb.WriteString(sep)\n\t\tb.WriteString(s)\n\t}\n\treturn b.String()\n}\n\n// HasPrefix tests whether the string s begins with prefix.\nfunc HasPrefix(s, prefix string) bool {\n\treturn len(s) >= len(prefix) && s[0:len(prefix)] == prefix\n}\n\n// HasSuffix tests whether the string s ends with suffix.\nfunc HasSuffix(s, suffix string) bool {\n\treturn len(s) >= len(suffix) && s[len(s)-len(suffix):] == suffix\n}\n\n// Map returns a copy of the string s with all its characters modified\n// according to the mapping function. If mapping returns a negative value, the character is\n// dropped from the string with no replacement.\nfunc Map(mapping func(rune) rune, s string) string {\n\t// In the worst case, the string can grow when mapped, making\n\t// things unpleasant. But it's so rare we barge in assuming it's\n\t// fine. It could also shrink but that falls out naturally.\n\n\t// The output buffer b is initialized on demand, the first\n\t// time a character differs.\n\tvar b Builder\n\n\tfor i, c := range s {\n\t\tr := mapping(c)\n\t\tif r == c && c != utf8.RuneError {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar width int\n\t\tif c == utf8.RuneError {\n\t\t\tc, width = utf8.DecodeRuneInString(s[i:])\n\t\t\tif width != 1 && r == c {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t} else {\n\t\t\twidth = utf8.RuneLen(c)\n\t\t}\n\n\t\tb.Grow(len(s) + utf8.UTFMax)\n\t\tb.WriteString(s[:i])\n\t\tif r >= 0 {\n\t\t\tb.WriteRune(r)\n\t\t}\n\n\t\ts = s[i+width:]\n\t\tbreak\n\t}\n\n\t// Fast path for unchanged input\n\tif b.Cap() == 0 { // didn't call b.Grow above\n\t\treturn s\n\t}\n\n\tfor _, c := range s {\n\t\tr := mapping(c)\n\n\t\tif r >= 0 {\n\t\t\t// common case\n\t\t\t// Due to inlining, it is more performant to determine if WriteByte should be\n\t\t\t// invoked rather than always call WriteRune\n\t\t\tif r < utf8.RuneSelf {\n\t\t\t\tb.WriteByte(byte(r))\n\t\t\t} else {\n\t\t\t\t// r is not a ASCII rune.\n\t\t\t\tb.WriteRune(r)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn b.String()\n}\n\n// Repeat returns a new string consisting of count copies of the string s.\n//\n// It panics if count is negative or if\n// the result of (len(s) * count) overflows.\nfunc Repeat(s string, count int) string {\n\tif count == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Since we cannot return an error on overflow,\n\t// we should panic if the repeat will generate\n\t// an overflow.\n\t// See Issue golang.org/issue/16237\n\tif count < 0 {\n\t\tpanic(\"strings: negative Repeat count\")\n\t} else if len(s)*count/count != len(s) {\n\t\tpanic(\"strings: Repeat count causes overflow\")\n\t}\n\n\tn := len(s) * count\n\tvar b Builder\n\tb.Grow(n)\n\tb.WriteString(s)\n\tfor b.Len() < n {\n\t\tif b.Len() <= n/2 {\n\t\t\tb.WriteString(b.String())\n\t\t} else {\n\t\t\tb.WriteString(b.String()[:n-b.Len()])\n\t\t\tbreak\n\t\t}\n\t}\n\treturn b.String()\n}\n\n// ToUpper returns a copy of the string s with all Unicode letters mapped to their upper case.\nfunc ToUpper(s string) string {\n\tisASCII, hasLower := true, false\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\tif c >= utf8.RuneSelf {\n\t\t\tisASCII = false\n\t\t\tbreak\n\t\t}\n\t\thasLower = hasLower || (c >= 'a' && c <= 'z')\n\t}\n\n\tif isASCII { // optimize for ASCII-only strings.\n\t\tif !hasLower {\n\t\t\treturn s\n\t\t}\n\t\tvar b Builder\n\t\tb.Grow(len(s))\n\t\tfor i := 0; i < len(s); i++ {\n\t\t\tc := s[i]\n\t\t\tif c >= 'a' && c <= 'z' {\n\t\t\t\tc -= 'a' - 'A'\n\t\t\t}\n\t\t\tb.WriteByte(c)\n\t\t}\n\t\treturn b.String()\n\t}\n\treturn Map(unicode.ToUpper, s)\n}\n\n// ToLower returns a copy of the string s with all Unicode letters mapped to their lower case.\nfunc ToLower(s string) string {\n\tisASCII, hasUpper := true, false\n\tfor i := 0; i < len(s); i++ {\n\t\tc := s[i]\n\t\tif c >= utf8.RuneSelf {\n\t\t\tisASCII = false\n\t\t\tbreak\n\t\t}\n\t\thasUpper = hasUpper || (c >= 'A' && c <= 'Z')\n\t}\n\n\tif isASCII { // optimize for ASCII-only strings.\n\t\tif !hasUpper {\n\t\t\treturn s\n\t\t}\n\t\tvar b Builder\n\t\tb.Grow(len(s))\n\t\tfor i := 0; i < len(s); i++ {\n\t\t\tc := s[i]\n\t\t\tif c >= 'A' && c <= 'Z' {\n\t\t\t\tc += 'a' - 'A'\n\t\t\t}\n\t\t\tb.WriteByte(c)\n\t\t}\n\t\treturn b.String()\n\t}\n\treturn Map(unicode.ToLower, s)\n}\n\n// ToTitle returns a copy of the string s with all Unicode letters mapped to their title case.\nfunc ToTitle(s string) string { return Map(unicode.ToTitle, s) }\n\n// ToUpperSpecial returns a copy of the string s with all Unicode letters mapped to their\n// upper case using the case mapping specified by c.\nfunc ToUpperSpecial(c unicode.SpecialCase, s string) string {\n\treturn Map(c.ToUpper, s)\n}\n\n// ToLowerSpecial returns a copy of the string s with all Unicode letters mapped to their\n// lower case using the case mapping specified by c.\nfunc ToLowerSpecial(c unicode.SpecialCase, s string) string {\n\treturn Map(c.ToLower, s)\n}\n\n// ToTitleSpecial returns a copy of the string s with all Unicode letters mapped to their\n// title case, giving priority to the special casing rules.\nfunc ToTitleSpecial(c unicode.SpecialCase, s string) string {\n\treturn Map(c.ToTitle, s)\n}\n\n// isSeparator reports whether the rune could mark a word boundary.\n// TODO: update when package unicode captures more of the properties.\nfunc isSeparator(r rune) bool {\n\t// ASCII alphanumerics and underscore are not separators\n\tif r <= 0x7F {\n\t\tswitch {\n\t\tcase '0' <= r && r <= '9':\n\t\t\treturn false\n\t\tcase 'a' <= r && r <= 'z':\n\t\t\treturn false\n\t\tcase 'A' <= r && r <= 'Z':\n\t\t\treturn false\n\t\tcase r == '_':\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t}\n\t// Letters and digits are not separators\n\tif unicode.IsLetter(r) || unicode.IsDigit(r) {\n\t\treturn false\n\t}\n\t// Otherwise, all we can do for now is treat spaces as separators.\n\treturn unicode.IsSpace(r)\n}\n\n// Title returns a copy of the string s with all Unicode letters that begin words\n// mapped to their title case.\n//\n// BUG(rsc): The rule Title uses for word boundaries does not handle Unicode punctuation properly.\nfunc Title(s string) string {\n\t// Use a closure here to remember state.\n\t// Hackish but effective. Depends on Map scanning in order and calling\n\t// the closure once per rune.\n\tprev := ' '\n\treturn Map(\n\t\tfunc(r rune) rune {\n\t\t\tif isSeparator(prev) {\n\t\t\t\tprev = r\n\t\t\t\treturn unicode.ToTitle(r)\n\t\t\t}\n\t\t\tprev = r\n\t\t\treturn r\n\t\t},\n\t\ts)\n}\n\n// TrimLeftFunc returns a slice of the string s with all leading\n// Unicode code points c satisfying f(c) removed.\nfunc TrimLeftFunc(s string, f func(rune) bool) string {\n\ti := indexFunc(s, f, false)\n\tif i == -1 {\n\t\treturn \"\"\n\t}\n\treturn s[i:]\n}\n\n// TrimRightFunc returns a slice of the string s with all trailing\n// Unicode code points c satisfying f(c) removed.\nfunc TrimRightFunc(s string, f func(rune) bool) string {\n\ti := lastIndexFunc(s, f, false)\n\tif i >= 0 && s[i] >= utf8.RuneSelf {\n\t\t_, wid := utf8.DecodeRuneInString(s[i:])\n\t\ti += wid\n\t} else {\n\t\ti++\n\t}\n\treturn s[0:i]\n}\n\n// TrimFunc returns a slice of the string s with all leading\n// and trailing Unicode code points c satisfying f(c) removed.\nfunc TrimFunc(s string, f func(rune) bool) string {\n\treturn TrimRightFunc(TrimLeftFunc(s, f), f)\n}\n\n// IndexFunc returns the index into s of the first Unicode\n// code point satisfying f(c), or -1 if none do.\nfunc IndexFunc(s string, f func(rune) bool) int {\n\treturn indexFunc(s, f, true)\n}\n\n// LastIndexFunc returns the index into s of the last\n// Unicode code point satisfying f(c), or -1 if none do.\nfunc LastIndexFunc(s string, f func(rune) bool) int {\n\treturn lastIndexFunc(s, f, true)\n}\n\n// indexFunc is the same as IndexFunc except that if\n// truth==false, the sense of the predicate function is\n// inverted.\nfunc indexFunc(s string, f func(rune) bool, truth bool) int {\n\tfor i, r := range s {\n\t\tif f(r) == truth {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// lastIndexFunc is the same as LastIndexFunc except that if\n// truth==false, the sense of the predicate function is\n// inverted.\nfunc lastIndexFunc(s string, f func(rune) bool, truth bool) int {\n\tfor i := len(s); i > 0; {\n\t\tr, size := utf8.DecodeLastRuneInString(s[0:i])\n\t\ti -= size\n\t\tif f(r) == truth {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// asciiSet is a 32-byte value, where each bit represents the presence of a\n// given ASCII character in the set. The 128-bits of the lower 16 bytes,\n// starting with the least-significant bit of the lowest word to the\n// most-significant bit of the highest word, map to the full range of all\n// 128 ASCII characters. The 128-bits of the upper 16 bytes will be zeroed,\n// ensuring that any non-ASCII character will be reported as not in the set.\ntype asciiSet [8]uint32\n\n// makeASCIISet creates a set of ASCII characters and reports whether all\n// characters in chars are ASCII.\nfunc makeASCIISet(chars string) (as asciiSet, ok bool) {\n\tfor i := 0; i < len(chars); i++ {\n\t\tc := chars[i]\n\t\tif c >= utf8.RuneSelf {\n\t\t\treturn as, false\n\t\t}\n\t\tas[c>>5] |= 1 << uint(c&31)\n\t}\n\treturn as, true\n}\n\n// contains reports whether c is inside the set.\nfunc (as *asciiSet) contains(c byte) bool {\n\treturn (as[c>>5] & (1 << uint(c&31))) != 0\n}\n\nfunc makeCutsetFunc(cutset string) func(rune) bool {\n\tif len(cutset) == 1 && cutset[0] < utf8.RuneSelf {\n\t\treturn func(r rune) bool {\n\t\t\treturn r == rune(cutset[0])\n\t\t}\n\t}\n\tif as, isASCII := makeASCIISet(cutset); isASCII {\n\t\treturn func(r rune) bool {\n\t\t\treturn r < utf8.RuneSelf && as.contains(byte(r))\n\t\t}\n\t}\n\treturn func(r rune) bool { return IndexRune(cutset, r) >= 0 }\n}\n\n// Trim returns a slice of the string s with all leading and\n// trailing Unicode code points contained in cutset removed.\nfunc Trim(s string, cutset string) string {\n\tif s == \"\" || cutset == \"\" {\n\t\treturn s\n\t}\n\treturn TrimFunc(s, makeCutsetFunc(cutset))\n}\n\n// TrimLeft returns a slice of the string s with all leading\n// Unicode code points contained in cutset removed.\n//\n// To remove a prefix, use TrimPrefix instead.\nfunc TrimLeft(s string, cutset string) string {\n\tif s == \"\" || cutset == \"\" {\n\t\treturn s\n\t}\n\treturn TrimLeftFunc(s, makeCutsetFunc(cutset))\n}\n\n// TrimRight returns a slice of the string s, with all trailing\n// Unicode code points contained in cutset removed.\n//\n// To remove a suffix, use TrimSuffix instead.\nfunc TrimRight(s string, cutset string) string {\n\tif s == \"\" || cutset == \"\" {\n\t\treturn s\n\t}\n\treturn TrimRightFunc(s, makeCutsetFunc(cutset))\n}\n\n// TrimSpace returns a slice of the string s, with all leading\n// and trailing white space removed, as defined by Unicode.\nfunc TrimSpace(s string) string {\n\treturn TrimFunc(s, unicode.IsSpace)\n}\n\n// TrimPrefix returns s without the provided leading prefix string.\n// If s doesn't start with prefix, s is returned unchanged.\nfunc TrimPrefix(s, prefix string) string {\n\tif HasPrefix(s, prefix) {\n\t\treturn s[len(prefix):]\n\t}\n\treturn s\n}\n\n// TrimSuffix returns s without the provided trailing suffix string.\n// If s doesn't end with suffix, s is returned unchanged.\nfunc TrimSuffix(s, suffix string) string {\n\tif HasSuffix(s, suffix) {\n\t\treturn s[:len(s)-len(suffix)]\n\t}\n\treturn s\n}\n\n// Replace returns a copy of the string s with the first n\n// non-overlapping instances of old replaced by new.\n// If old is empty, it matches at the beginning of the string\n// and after each UTF-8 sequence, yielding up to k+1 replacements\n// for a k-rune string.\n// If n < 0, there is no limit on the number of replacements.\nfunc Replace(s, old, new string, n int) string {\n\tif old == new || n == 0 {\n\t\treturn s // avoid allocation\n\t}\n\n\t// Compute number of replacements.\n\tif m := Count(s, old); m == 0 {\n\t\treturn s // avoid allocation\n\t} else if n < 0 || m < n {\n\t\tn = m\n\t}\n\n\t// Apply replacements to buffer.\n\tt := make([]byte, len(s)+n*(len(new)-len(old)))\n\tw := 0\n\tstart := 0\n\tfor i := 0; i < n; i++ {\n\t\tj := start\n\t\tif len(old) == 0 {\n\t\t\tif i > 0 {\n\t\t\t\t_, wid := utf8.DecodeRuneInString(s[start:])\n\t\t\t\tj += wid\n\t\t\t}\n\t\t} else {\n\t\t\tj += Index(s[start:], old)\n\t\t}\n\t\tw += copy(t[w:], s[start:j])\n\t\tw += copy(t[w:], new)\n\t\tstart = j + len(old)\n\t}\n\tw += copy(t[w:], s[start:])\n\treturn string(t[0:w])\n}\n\n// ReplaceAll returns a copy of the string s with all\n// non-overlapping instances of old replaced by new.\n// If old is empty, it matches at the beginning of the string\n// and after each UTF-8 sequence, yielding up to k+1 replacements\n// for a k-rune string.\nfunc ReplaceAll(s, old, new string) string {\n\treturn Replace(s, old, new, -1)\n}\n\n// EqualFold reports whether s and t, interpreted as UTF-8 strings,\n// are equal under Unicode case-folding.\nfunc EqualFold(s, t string) bool {\n\tfor s != \"\" && t != \"\" {\n\t\t// Extract first rune from each string.\n\t\tvar sr, tr rune\n\t\tif s[0] < utf8.RuneSelf {\n\t\t\tsr, s = rune(s[0]), s[1:]\n\t\t} else {\n\t\t\tr, size := utf8.DecodeRuneInString(s)\n\t\t\tsr, s = r, s[size:]\n\t\t}\n\t\tif t[0] < utf8.RuneSelf {\n\t\t\ttr, t = rune(t[0]), t[1:]\n\t\t} else {\n\t\t\tr, size := utf8.DecodeRuneInString(t)\n\t\t\ttr, t = r, t[size:]\n\t\t}\n\n\t\t// If they match, keep going; if not, return false.\n\n\t\t// Easy case.\n\t\tif tr == sr {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Make sr < tr to simplify what follows.\n\t\tif tr < sr {\n\t\t\ttr, sr = sr, tr\n\t\t}\n\t\t// Fast check for ASCII.\n\t\tif tr < utf8.RuneSelf {\n\t\t\t// ASCII only, sr/tr must be upper/lower case\n\t\t\tif 'A' <= sr && sr <= 'Z' && tr == sr+'a'-'A' {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn false\n\t\t}\n\n\t\t// General case. SimpleFold(x) returns the next equivalent rune > x\n\t\t// or wraps around to smaller values.\n\t\tr := unicode.SimpleFold(sr)\n\t\tfor r != sr && r < tr {\n\t\t\tr = unicode.SimpleFold(r)\n\t\t}\n\t\tif r == tr {\n\t\t\tcontinue\n\t\t}\n\t\treturn false\n\t}\n\n\t// One string is empty. Are both?\n\treturn s == t\n}\n\n// Index returns the index of the first instance of substr in s, or -1 if substr is not present in s.\nfunc Index(s, substr string) int {\n\tn := len(substr)\n\tswitch {\n\tcase n == 0:\n\t\treturn 0\n\tcase n == 1:\n\t\treturn IndexByte(s, substr[0])\n\tcase n == len(s):\n\t\tif substr == s {\n\t\t\treturn 0\n\t\t}\n\t\treturn -1\n\tcase n > len(s):\n\t\treturn -1\n\tcase n <= bytealg.MaxLen:\n\t\t// Use brute force when s and substr both are small\n\t\tif len(s) <= bytealg.MaxBruteForce {\n\t\t\treturn bytealg.IndexString(s, substr)\n\t\t}\n\t\tc0 := substr[0]\n\t\tc1 := substr[1]\n\t\ti := 0\n\t\tt := len(s) - n + 1\n\t\tfails := 0\n\t\tfor i < t {\n\t\t\tif s[i] != c0 {\n\t\t\t\t// IndexByte is faster than bytealg.IndexString, so use it as long as\n\t\t\t\t// we're not getting lots of false positives.\n\t\t\t\to := IndexByte(s[i:t], c0)\n\t\t\t\tif o < 0 {\n\t\t\t\t\treturn -1\n\t\t\t\t}\n\t\t\t\ti += o\n\t\t\t}\n\t\t\tif s[i+1] == c1 && s[i:i+n] == substr {\n\t\t\t\treturn i\n\t\t\t}\n\t\t\tfails++\n\t\t\ti++\n\t\t\t// Switch to bytealg.IndexString when IndexByte produces too many false positives.\n\t\t\tif fails > bytealg.Cutover(i) {\n\t\t\t\tr := bytealg.IndexString(s[i:], substr)\n\t\t\t\tif r >= 0 {\n\t\t\t\t\treturn r + i\n\t\t\t\t}\n\t\t\t\treturn -1\n\t\t\t}\n\t\t}\n\t\treturn -1\n\t}\n\tc0 := substr[0]\n\tc1 := substr[1]\n\ti := 0\n\tt := len(s) - n + 1\n\tfails := 0\n\tfor i < t {\n\t\tif s[i] != c0 {\n\t\t\to := IndexByte(s[i:t], c0)\n\t\t\tif o < 0 {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\ti += o\n\t\t}\n\t\tif s[i+1] == c1 && s[i:i+n] == substr {\n\t\t\treturn i\n\t\t}\n\t\ti++\n\t\tfails++\n\t\tif fails >= 4+i>>4 && i < t {\n\t\t\t// See comment in ../bytes/bytes_generic.go.\n\t\t\tj := indexRabinKarp(s[i:], substr)\n\t\t\tif j < 0 {\n\t\t\t\treturn -1\n\t\t\t}\n\t\t\treturn i + j\n\t\t}\n\t}\n\treturn -1\n}\n\nfunc indexRabinKarp(s, substr string) int {\n\t// Rabin-Karp search\n\thashss, pow := hashStr(substr)\n\tn := len(substr)\n\tvar h uint32\n\tfor i := 0; i < n; i++ {\n\t\th = h*primeRK + uint32(s[i])\n\t}\n\tif h == hashss && s[:n] == substr {\n\t\treturn 0\n\t}\n\tfor i := n; i < len(s); {\n\t\th *= primeRK\n\t\th += uint32(s[i])\n\t\th -= pow * uint32(s[i-n])\n\t\ti++\n\t\tif h == hashss && s[i-n:i] == substr {\n\t\t\treturn i - n\n\t\t}\n\t}\n\treturn -1\n}\n"}}
[Trace - 2:31:12 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/strings.go"}}
[Trace - 2:31:12 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"failed to run analyses for file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/strings.go: context canceled"}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/strings.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/builder.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/compare.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/reader.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/replace.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/search.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/strings.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/tls_test.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/builder.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/strings.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/reader.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/replace.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/tls.go","diagnostics":[{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":6}},"severity":1,"source":"LSP","message":"could not import net (context canceled)"}]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/debug.go","diagnostics":[{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":11}},"severity":1,"source":"LSP","message":"could not import net/http (context canceled)"}]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/middlewares.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/search.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/error.go","diagnostics":[{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":11}},"severity":1,"source":"LSP","message":"could not import net/http (context canceled)"}]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///usr/local/Cellar/go/1.12.6/libexec/src/strings/compare.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:12 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/internal.go","diagnostics":[]}
[Trace - 2:31:12 PM] Sending request 'textDocument/hover - (339)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go"},"position":{"line":36,"character":22}}
[Trace - 2:31:12 PM] Received response 'textDocument/hover - (339)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"ToLower returns a copy of the string s with all Unicode letters mapped to their lower case.\n```go\nfunc strings.ToLower(s string) string\n```"},"range":{"start":{"line":36,"character":16},"end":{"line":36,"character":23}}}
[Trace - 2:31:31 PM] Sending request 'textDocument/documentLink - (340)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"}}
[Trace - 2:31:31 PM] Received response 'textDocument/documentLink - (340)' in 0ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":8}},"target":"https://godoc.org/bytes"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":18}},"target":"https://godoc.org/encoding/base64"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":16}},"target":"https://godoc.org/encoding/json"},{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":12}},"target":"https://godoc.org/io/ioutil"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":7}},"target":"https://godoc.org/mime"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":17}},"target":"https://godoc.org/mime/multipart"},{"range":{"start":{"line":11,"character":1},"end":{"line":11,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":10}},"target":"https://godoc.org/strconv"},{"range":{"start":{"line":13,"character":1},"end":{"line":13,"character":10}},"target":"https://godoc.org/strings"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":7}},"target":"https://godoc.org/time"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/auth"},{"range":{"start":{"line":17,"character":1},"end":{"line":17,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/errors"},{"range":{"start":{"line":18,"character":1},"end":{"line":18,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/object"},{"range":{"start":{"line":19,"character":1},"end":{"line":19,"character":39}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/replica"},{"range":{"start":{"line":20,"character":1},"end":{"line":20,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/ring"},{"range":{"start":{"line":21,"character":1},"end":{"line":21,"character":25}},"target":"https://godoc.org/github.com/gorilla/mux"}]
[Trace - 2:31:31 PM] Sending request 'textDocument/codeAction - (341)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:31:31 PM] Received response 'textDocument/codeAction - (341)' in 13ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:31 PM] Sending request 'textDocument/codeAction - (342)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":529,"character":9},"end":{"line":529,"character":29}},"context":{"diagnostics":[]}}
[Trace - 2:31:31 PM] Received response 'textDocument/codeAction - (342)' in 10ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:32 PM] Sending request 'textDocument/hover - (343)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":519,"character":35}}
[Error - 2:31:32 PM] send textDocument/hover#343 no identifier found
[Error - 2:31:32 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Trace - 2:31:36 PM] Sending request 'textDocument/hover - (344)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:31:36 PM] Received response 'textDocument/hover - (344)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar object.ErrNotFound errors.Error\n```"},"range":{"start":{"line":356,"character":37},"end":{"line":356,"character":48}}}
[Trace - 2:31:36 PM] Sending request 'textDocument/codeAction - (345)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"context":{"diagnostics":[{"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"message":"cannot use object.ErrNotFound (variable with invalid type) as errors.Error value in argument to errors.SomewhatEqual","severity":1,"source":"LSP"}]}}
[Trace - 2:31:36 PM] Received response 'textDocument/codeAction - (345)' in 9ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:41 PM] Sending request 'textDocument/definition - (346)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:31:41 PM] Received response 'textDocument/definition - (346)' in 95ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","range":{"start":{"line":12,"character":4},"end":{"line":12,"character":15}}}]
[Trace - 2:31:41 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","languageId":"go","version":1,"text":"package object\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/cespare/xxhash\"\n\t\"github.com/fastly/REDACTED/pkg/errors\"\n)\n\n// ErrNotFound is a general-purpose error.\nvar ErrNotFound = errors.NewCode(http.StatusNotFound, \"object not found\")\n\n// TagMismatchError should be returned by Deserialize methods\n// when the raw object tag doesn't match their expectation.\ntype TagMismatchError struct {\n\tWant Tag\n\tHave Tag\n}\n\nfunc (e TagMismatchError) Error() string {\n\treturn fmt.Sprintf(\"tag mismatch error: want %s, have %s\", e.Want, e.Have)\n}\n\n// RealmIDTag uniquely identifies an object in the global scope.\ntype RealmIDTag struct {\n\tRealm string `json:\"realm\"`\n\tID string `json:\"id\"`\n\tTag Tag `json:\"tag\"`\n}\n\n// Hash produces a zero-alloc hash of the RealmIDTag.\nfunc (rit RealmIDTag) Hash() uint64 {\n\th := xxhash.Sum64String(rit.Realm)\n\th ^= xxhash.Sum64String(rit.ID)\n\th ^= xxhash.Sum64String(string(rit.Tag))\n\treturn h\n}\n\n// Raw is the object atom which is operated-on by the infrastructure.\n// It must be encrypted before being transmit or stored.\ntype Raw struct {\n\tRealmIDTag\n\tPayload []byte `json:\"payload\"`\n}\n\n// Tag enumerates object types.\ntype Tag string\n\n// Tags for each implemented object.\nconst (\n\tTagGCounter Tag = \"GC\"\n\tTagDCounter Tag = \"DC\"\n\tTagLWWRegister Tag = \"LWWR\"\n\tTagMVRegister Tag = \"MVR\"\n\tTagHyperLogLog Tag = \"HLL\"\n\tTagBloomFilter Tag = \"BF\"\n\tTagMultiMap Tag = \"MMAP\"\n)\n\n// Merge two raw objects together, based on tag.\n// This dumb function courtesy Go's dumb type system.\nfunc (r *Raw) Merge(other Raw) error {\n\tif r.Tag != other.Tag {\n\t\treturn TagMismatchError{Want: r.Tag, Have: other.Tag}\n\t}\n\n\tswitch r.Tag {\n\tcase TagGCounter:\n\t\tvar a, b GCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagDCounter:\n\t\tvar a, b DCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagLWWRegister:\n\t\tvar a, b LWWRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMVRegister:\n\t\tvar a, b MVRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagHyperLogLog:\n\t\tvar a, b HyperLogLog\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagBloomFilter:\n\t\tvar a, b BloomFilter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter src payload\")\n\t\t}\n\t\tif err := a.Merge(b); err != nil {\n\t\t\treturn errors.Wrap(err, \"error merging BloomFilter\")\n\t\t}\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMultiMap:\n\t\tvar a, b MultiMap\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tdefault:\n\t\treturn errors.Errorf(\"unknown tag: %q\", r.Tag)\n\t}\n}\n\n// Equals returns true if the two raw objects are identical.\nfunc (r *Raw) Equals(other Raw) bool {\n\treturn r.Realm == other.Realm &&\n\t\tr.ID == other.ID &&\n\t\tr.Tag == other.Tag &&\n\t\tbytes.Equal(r.Payload, other.Payload)\n}\n"}}
[Trace - 2:31:41 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go"}}
[Trace - 2:31:41 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"failed to run analyses for file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go: context canceled"}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/hyperloglog.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:31:41 PM] Sending request 'textDocument/hover - (347)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:31:41 PM] Received response 'textDocument/hover - (347)' in 298ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar object.ErrNotFound errors.Error\n```"},"range":{"start":{"line":356,"character":37},"end":{"line":356,"character":48}}}
[Trace - 2:31:41 PM] Sending request 'textDocument/codeAction - (348)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"context":{"diagnostics":[{"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"message":"cannot use object.ErrNotFound (variable with invalid type) as errors.Error value in argument to errors.SomewhatEqual","severity":1,"source":"LSP"}]}}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/internal.go","diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/tls.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/debug.go","diagnostics":[{"range":{"start":{"line":43,"character":13},"end":{"line":43,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/hyperloglog.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister_gen.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","diagnostics":[{"range":{"start":{"line":528,"character":18},"end":{"line":528,"character":19}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *http.Request) as *invalid type value in argument to mux.Vars"},{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:31:41 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/middlewares.go","diagnostics":[]}
[Trace - 2:31:41 PM] Received response 'textDocument/codeAction - (348)' in 150ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:41 PM] Sending request 'textDocument/codeAction - (349)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"context":{"diagnostics":[{"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"message":"cannot use object.ErrNotFound (variable with invalid type) as errors.Error value in argument to errors.SomewhatEqual","severity":1,"source":"LSP"}]}}
[Trace - 2:31:41 PM] Received response 'textDocument/codeAction - (349)' in 10ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:42 PM] Sending request 'textDocument/hover - (350)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:31:42 PM] Received response 'textDocument/hover - (350)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar object.ErrNotFound errors.Error\n```"},"range":{"start":{"line":356,"character":37},"end":{"line":356,"character":48}}}
[Trace - 2:31:42 PM] Sending request 'textDocument/definition - (351)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:31:42 PM] Received response 'textDocument/definition - (351)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","range":{"start":{"line":12,"character":4},"end":{"line":12,"character":15}}}]
[Trace - 2:31:42 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","languageId":"go","version":1,"text":"package object\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/cespare/xxhash\"\n\t\"github.com/fastly/REDACTED/pkg/errors\"\n)\n\n// ErrNotFound is a general-purpose error.\nvar ErrNotFound = errors.NewCode(http.StatusNotFound, \"object not found\")\n\n// TagMismatchError should be returned by Deserialize methods\n// when the raw object tag doesn't match their expectation.\ntype TagMismatchError struct {\n\tWant Tag\n\tHave Tag\n}\n\nfunc (e TagMismatchError) Error() string {\n\treturn fmt.Sprintf(\"tag mismatch error: want %s, have %s\", e.Want, e.Have)\n}\n\n// RealmIDTag uniquely identifies an object in the global scope.\ntype RealmIDTag struct {\n\tRealm string `json:\"realm\"`\n\tID string `json:\"id\"`\n\tTag Tag `json:\"tag\"`\n}\n\n// Hash produces a zero-alloc hash of the RealmIDTag.\nfunc (rit RealmIDTag) Hash() uint64 {\n\th := xxhash.Sum64String(rit.Realm)\n\th ^= xxhash.Sum64String(rit.ID)\n\th ^= xxhash.Sum64String(string(rit.Tag))\n\treturn h\n}\n\n// Raw is the object atom which is operated-on by the infrastructure.\n// It must be encrypted before being transmit or stored.\ntype Raw struct {\n\tRealmIDTag\n\tPayload []byte `json:\"payload\"`\n}\n\n// Tag enumerates object types.\ntype Tag string\n\n// Tags for each implemented object.\nconst (\n\tTagGCounter Tag = \"GC\"\n\tTagDCounter Tag = \"DC\"\n\tTagLWWRegister Tag = \"LWWR\"\n\tTagMVRegister Tag = \"MVR\"\n\tTagHyperLogLog Tag = \"HLL\"\n\tTagBloomFilter Tag = \"BF\"\n\tTagMultiMap Tag = \"MMAP\"\n)\n\n// Merge two raw objects together, based on tag.\n// This dumb function courtesy Go's dumb type system.\nfunc (r *Raw) Merge(other Raw) error {\n\tif r.Tag != other.Tag {\n\t\treturn TagMismatchError{Want: r.Tag, Have: other.Tag}\n\t}\n\n\tswitch r.Tag {\n\tcase TagGCounter:\n\t\tvar a, b GCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagDCounter:\n\t\tvar a, b DCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagLWWRegister:\n\t\tvar a, b LWWRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMVRegister:\n\t\tvar a, b MVRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagHyperLogLog:\n\t\tvar a, b HyperLogLog\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagBloomFilter:\n\t\tvar a, b BloomFilter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter src payload\")\n\t\t}\n\t\tif err := a.Merge(b); err != nil {\n\t\t\treturn errors.Wrap(err, \"error merging BloomFilter\")\n\t\t}\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMultiMap:\n\t\tvar a, b MultiMap\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tdefault:\n\t\treturn errors.Errorf(\"unknown tag: %q\", r.Tag)\n\t}\n}\n\n// Equals returns true if the two raw objects are identical.\nfunc (r *Raw) Equals(other Raw) bool {\n\treturn r.Realm == other.Realm &&\n\t\tr.ID == other.ID &&\n\t\tr.Tag == other.Tag &&\n\t\tbytes.Equal(r.Payload, other.Payload)\n}\n"}}
[Trace - 2:31:42 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go"}}
[Trace - 2:31:43 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"failed to run analyses for file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go: context canceled"}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/hyperloglog.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:31:43 PM] Sending request 'textDocument/hover - (352)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received response 'textDocument/hover - (352)' in 332ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar object.ErrNotFound errors.Error\n```"},"range":{"start":{"line":356,"character":37},"end":{"line":356,"character":48}}}
[Trace - 2:31:43 PM] Sending notification '$/cancelRequest'.
Params: {"id":352}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:43 PM] Sending request 'textDocument/hover - (353)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/internal.go","diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","diagnostics":[{"range":{"start":{"line":528,"character":18},"end":{"line":528,"character":19}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *http.Request) as *invalid type value in argument to mux.Vars"},{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:31:43 PM] Received response 'textDocument/hover - (353)' in 175ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar object.ErrNotFound errors.Error\n```"},"range":{"start":{"line":356,"character":37},"end":{"line":356,"character":48}}}
[Trace - 2:31:43 PM] Sending request 'textDocument/codeAction - (354)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"context":{"diagnostics":[{"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"message":"cannot use object.ErrNotFound (variable with invalid type) as errors.Error value in argument to errors.SomewhatEqual","severity":1,"source":"LSP"}]}}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/middlewares.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/hyperloglog.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/tls.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/debug.go","diagnostics":[{"range":{"start":{"line":43,"character":13},"end":{"line":43,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter_gen.go","diagnostics":[]}
[Trace - 2:31:43 PM] Received response 'textDocument/codeAction - (354)' in 31ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:43 PM] Sending request 'textDocument/codeAction - (355)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"context":{"diagnostics":[{"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"message":"cannot use object.ErrNotFound (variable with invalid type) as errors.Error value in argument to errors.SomewhatEqual","severity":1,"source":"LSP"}]}}
[Trace - 2:31:43 PM] Received response 'textDocument/codeAction - (355)' in 8ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:49 PM] Sending request 'textDocument/definition - (356)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:31:49 PM] Received response 'textDocument/definition - (356)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","range":{"start":{"line":12,"character":4},"end":{"line":12,"character":15}}}]
[Trace - 2:31:49 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","languageId":"go","version":1,"text":"package object\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/cespare/xxhash\"\n\t\"github.com/fastly/REDACTED/pkg/errors\"\n)\n\n// ErrNotFound is a general-purpose error.\nvar ErrNotFound = errors.NewCode(http.StatusNotFound, \"object not found\")\n\n// TagMismatchError should be returned by Deserialize methods\n// when the raw object tag doesn't match their expectation.\ntype TagMismatchError struct {\n\tWant Tag\n\tHave Tag\n}\n\nfunc (e TagMismatchError) Error() string {\n\treturn fmt.Sprintf(\"tag mismatch error: want %s, have %s\", e.Want, e.Have)\n}\n\n// RealmIDTag uniquely identifies an object in the global scope.\ntype RealmIDTag struct {\n\tRealm string `json:\"realm\"`\n\tID string `json:\"id\"`\n\tTag Tag `json:\"tag\"`\n}\n\n// Hash produces a zero-alloc hash of the RealmIDTag.\nfunc (rit RealmIDTag) Hash() uint64 {\n\th := xxhash.Sum64String(rit.Realm)\n\th ^= xxhash.Sum64String(rit.ID)\n\th ^= xxhash.Sum64String(string(rit.Tag))\n\treturn h\n}\n\n// Raw is the object atom which is operated-on by the infrastructure.\n// It must be encrypted before being transmit or stored.\ntype Raw struct {\n\tRealmIDTag\n\tPayload []byte `json:\"payload\"`\n}\n\n// Tag enumerates object types.\ntype Tag string\n\n// Tags for each implemented object.\nconst (\n\tTagGCounter Tag = \"GC\"\n\tTagDCounter Tag = \"DC\"\n\tTagLWWRegister Tag = \"LWWR\"\n\tTagMVRegister Tag = \"MVR\"\n\tTagHyperLogLog Tag = \"HLL\"\n\tTagBloomFilter Tag = \"BF\"\n\tTagMultiMap Tag = \"MMAP\"\n)\n\n// Merge two raw objects together, based on tag.\n// This dumb function courtesy Go's dumb type system.\nfunc (r *Raw) Merge(other Raw) error {\n\tif r.Tag != other.Tag {\n\t\treturn TagMismatchError{Want: r.Tag, Have: other.Tag}\n\t}\n\n\tswitch r.Tag {\n\tcase TagGCounter:\n\t\tvar a, b GCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagDCounter:\n\t\tvar a, b DCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagLWWRegister:\n\t\tvar a, b LWWRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMVRegister:\n\t\tvar a, b MVRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagHyperLogLog:\n\t\tvar a, b HyperLogLog\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagBloomFilter:\n\t\tvar a, b BloomFilter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter src payload\")\n\t\t}\n\t\tif err := a.Merge(b); err != nil {\n\t\t\treturn errors.Wrap(err, \"error merging BloomFilter\")\n\t\t}\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMultiMap:\n\t\tvar a, b MultiMap\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tdefault:\n\t\treturn errors.Errorf(\"unknown tag: %q\", r.Tag)\n\t}\n}\n\n// Equals returns true if the two raw objects are identical.\nfunc (r *Raw) Equals(other Raw) bool {\n\treturn r.Realm == other.Realm &&\n\t\tr.ID == other.ID &&\n\t\tr.Tag == other.Tag &&\n\t\tbytes.Equal(r.Payload, other.Payload)\n}\n"}}
[Trace - 2:31:49 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go"}}
[Trace - 2:31:49 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"failed to run analyses for file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go: context canceled"}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/hyperloglog.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:31:49 PM] Sending request 'textDocument/hover - (357)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:31:49 PM] Received response 'textDocument/hover - (357)' in 305ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar object.ErrNotFound errors.Error\n```"},"range":{"start":{"line":356,"character":37},"end":{"line":356,"character":48}}}
[Trace - 2:31:49 PM] Sending request 'textDocument/codeAction - (358)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"context":{"diagnostics":[{"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"message":"cannot use object.ErrNotFound (variable with invalid type) as errors.Error value in argument to errors.SomewhatEqual","severity":1,"source":"LSP"}]}}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/middlewares.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/tls.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/hyperloglog.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap_gen.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","diagnostics":[{"range":{"start":{"line":528,"character":18},"end":{"line":528,"character":19}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *http.Request) as *invalid type value in argument to mux.Vars"},{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/debug.go","diagnostics":[{"range":{"start":{"line":43,"character":13},"end":{"line":43,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/internal.go","diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:31:49 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go","diagnostics":[]}
[Trace - 2:31:49 PM] Sending request 'textDocument/codeAction - (359)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"context":{"diagnostics":[{"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"message":"cannot use object.ErrNotFound (variable with invalid type) as errors.Error value in argument to errors.SomewhatEqual","severity":1,"source":"LSP"}]}}
[Trace - 2:31:49 PM] Received response 'textDocument/codeAction - (358)' in 147ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:31:49 PM] Received response 'textDocument/codeAction - (359)' in 7ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:32:33 PM] Sending request 'textDocument/hover - (360)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":41}}
[Trace - 2:32:33 PM] Received response 'textDocument/hover - (360)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar object.ErrNotFound errors.Error\n```"},"range":{"start":{"line":356,"character":37},"end":{"line":356,"character":48}}}
[Trace - 2:32:33 PM] Sending request 'textDocument/codeAction - (361)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"context":{"diagnostics":[{"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":48}},"message":"cannot use object.ErrNotFound (variable with invalid type) as errors.Error value in argument to errors.SomewhatEqual","severity":1,"source":"LSP"}]}}
[Trace - 2:32:33 PM] Received response 'textDocument/codeAction - (361)' in 13ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:32:34 PM] Sending request 'textDocument/hover - (362)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":361,"character":7}}
[Trace - 2:32:34 PM] Received response 'textDocument/hover - (362)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\npackage errors (\"github.com/fastly/REDACTED/pkg/errors\")\n```"},"range":{"start":{"line":361,"character":2},"end":{"line":361,"character":8}}}
[Trace - 2:32:34 PM] Sending request 'textDocument/hover - (363)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":361,"character":8}}
[Trace - 2:32:34 PM] Received response 'textDocument/hover - (363)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"Encode an error (hopefully but not necessarily an errors.Error) to an http.ResponseWriter as JSON, in a way that can be later Decoded.\n```go\nfunc errors.Encode(w invalid type, err error)\n```"},"range":{"start":{"line":361,"character":9},"end":{"line":361,"character":15}}}
[Trace - 2:33:06 PM] Sending request 'textDocument/hover - (364)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":35}}
[Trace - 2:33:06 PM] Received response 'textDocument/hover - (364)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\npackage object (\"github.com/fastly/REDACTED/pkg/object\")\n```"},"range":{"start":{"line":356,"character":30},"end":{"line":356,"character":36}}}
[Trace - 2:33:09 PM] Sending request 'textDocument/codeAction - (365)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":369,"character":2},"end":{"line":369,"character":2}},"context":{"diagnostics":[]}}
[Trace - 2:33:09 PM] Received response 'textDocument/codeAction - (365)' in 12ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:33:09 PM] Sending request 'textDocument/definition - (366)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":36}}
[Trace - 2:33:09 PM] Received response 'textDocument/definition - (366)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","range":{"start":{"line":12,"character":4},"end":{"line":12,"character":15}}}]
[Trace - 2:33:09 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","languageId":"go","version":1,"text":"package object\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/cespare/xxhash\"\n\t\"github.com/fastly/REDACTED/pkg/errors\"\n)\n\n// ErrNotFound is a general-purpose error.\nvar ErrNotFound = errors.NewCode(http.StatusNotFound, \"object not found\")\n\n// TagMismatchError should be returned by Deserialize methods\n// when the raw object tag doesn't match their expectation.\ntype TagMismatchError struct {\n\tWant Tag\n\tHave Tag\n}\n\nfunc (e TagMismatchError) Error() string {\n\treturn fmt.Sprintf(\"tag mismatch error: want %s, have %s\", e.Want, e.Have)\n}\n\n// RealmIDTag uniquely identifies an object in the global scope.\ntype RealmIDTag struct {\n\tRealm string `json:\"realm\"`\n\tID string `json:\"id\"`\n\tTag Tag `json:\"tag\"`\n}\n\n// Hash produces a zero-alloc hash of the RealmIDTag.\nfunc (rit RealmIDTag) Hash() uint64 {\n\th := xxhash.Sum64String(rit.Realm)\n\th ^= xxhash.Sum64String(rit.ID)\n\th ^= xxhash.Sum64String(string(rit.Tag))\n\treturn h\n}\n\n// Raw is the object atom which is operated-on by the infrastructure.\n// It must be encrypted before being transmit or stored.\ntype Raw struct {\n\tRealmIDTag\n\tPayload []byte `json:\"payload\"`\n}\n\n// Tag enumerates object types.\ntype Tag string\n\n// Tags for each implemented object.\nconst (\n\tTagGCounter Tag = \"GC\"\n\tTagDCounter Tag = \"DC\"\n\tTagLWWRegister Tag = \"LWWR\"\n\tTagMVRegister Tag = \"MVR\"\n\tTagHyperLogLog Tag = \"HLL\"\n\tTagBloomFilter Tag = \"BF\"\n\tTagMultiMap Tag = \"MMAP\"\n)\n\n// Merge two raw objects together, based on tag.\n// This dumb function courtesy Go's dumb type system.\nfunc (r *Raw) Merge(other Raw) error {\n\tif r.Tag != other.Tag {\n\t\treturn TagMismatchError{Want: r.Tag, Have: other.Tag}\n\t}\n\n\tswitch r.Tag {\n\tcase TagGCounter:\n\t\tvar a, b GCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagDCounter:\n\t\tvar a, b DCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagLWWRegister:\n\t\tvar a, b LWWRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMVRegister:\n\t\tvar a, b MVRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagHyperLogLog:\n\t\tvar a, b HyperLogLog\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagBloomFilter:\n\t\tvar a, b BloomFilter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter src payload\")\n\t\t}\n\t\tif err := a.Merge(b); err != nil {\n\t\t\treturn errors.Wrap(err, \"error merging BloomFilter\")\n\t\t}\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMultiMap:\n\t\tvar a, b MultiMap\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tdefault:\n\t\treturn errors.Errorf(\"unknown tag: %q\", r.Tag)\n\t}\n}\n\n// Equals returns true if the two raw objects are identical.\nfunc (r *Raw) Equals(other Raw) bool {\n\treturn r.Realm == other.Realm &&\n\t\tr.ID == other.ID &&\n\t\tr.Tag == other.Tag &&\n\t\tbytes.Equal(r.Payload, other.Payload)\n}\n"}}
[Trace - 2:33:09 PM] Sending notification 'textDocument/didClose'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go"}}
[Trace - 2:33:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"failed to run analyses for file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go: context canceled"}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/hyperloglog.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:33:10 PM] Sending request 'textDocument/definition - (367)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":39}}
[Trace - 2:33:10 PM] Sending request 'textDocument/hover - (368)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":42}}
[Trace - 2:33:10 PM] Received response 'textDocument/definition - (367)' in 409ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","range":{"start":{"line":12,"character":4},"end":{"line":12,"character":15}}}]
[Trace - 2:33:10 PM] Sending request 'textDocument/documentHighlight - (369)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":42}}
[Trace - 2:33:10 PM] Received response 'textDocument/documentHighlight - (369)' in 46ms.
Params: []
[Trace - 2:33:10 PM] Sending notification '$/cancelRequest'.
Params: {"id":368}
[Trace - 2:33:10 PM] Received response 'textDocument/hover - (368)' in 165ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar object.ErrNotFound errors.Error\n```"},"range":{"start":{"line":356,"character":37},"end":{"line":356,"character":48}}}
[Trace - 2:33:10 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"context canceled"}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/internal.go","diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/hyperloglog.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","diagnostics":[{"range":{"start":{"line":528,"character":18},"end":{"line":528,"character":19}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *http.Request) as *invalid type value in argument to mux.Vars"},{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/debug.go","diagnostics":[{"range":{"start":{"line":43,"character":13},"end":{"line":43,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/middlewares.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/tls.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:33:10 PM] Sending request 'textDocument/definition - (370)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":356,"character":42}}
[Trace - 2:33:10 PM] Received response 'textDocument/definition - (370)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","range":{"start":{"line":12,"character":4},"end":{"line":12,"character":15}}}]
[Trace - 2:33:10 PM] Sending notification 'textDocument/didOpen'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","languageId":"go","version":1,"text":"package object\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"github.com/cespare/xxhash\"\n\t\"github.com/fastly/REDACTED/pkg/errors\"\n)\n\n// ErrNotFound is a general-purpose error.\nvar ErrNotFound = errors.NewCode(http.StatusNotFound, \"object not found\")\n\n// TagMismatchError should be returned by Deserialize methods\n// when the raw object tag doesn't match their expectation.\ntype TagMismatchError struct {\n\tWant Tag\n\tHave Tag\n}\n\nfunc (e TagMismatchError) Error() string {\n\treturn fmt.Sprintf(\"tag mismatch error: want %s, have %s\", e.Want, e.Have)\n}\n\n// RealmIDTag uniquely identifies an object in the global scope.\ntype RealmIDTag struct {\n\tRealm string `json:\"realm\"`\n\tID string `json:\"id\"`\n\tTag Tag `json:\"tag\"`\n}\n\n// Hash produces a zero-alloc hash of the RealmIDTag.\nfunc (rit RealmIDTag) Hash() uint64 {\n\th := xxhash.Sum64String(rit.Realm)\n\th ^= xxhash.Sum64String(rit.ID)\n\th ^= xxhash.Sum64String(string(rit.Tag))\n\treturn h\n}\n\n// Raw is the object atom which is operated-on by the infrastructure.\n// It must be encrypted before being transmit or stored.\ntype Raw struct {\n\tRealmIDTag\n\tPayload []byte `json:\"payload\"`\n}\n\n// Tag enumerates object types.\ntype Tag string\n\n// Tags for each implemented object.\nconst (\n\tTagGCounter Tag = \"GC\"\n\tTagDCounter Tag = \"DC\"\n\tTagLWWRegister Tag = \"LWWR\"\n\tTagMVRegister Tag = \"MVR\"\n\tTagHyperLogLog Tag = \"HLL\"\n\tTagBloomFilter Tag = \"BF\"\n\tTagMultiMap Tag = \"MMAP\"\n)\n\n// Merge two raw objects together, based on tag.\n// This dumb function courtesy Go's dumb type system.\nfunc (r *Raw) Merge(other Raw) error {\n\tif r.Tag != other.Tag {\n\t\treturn TagMismatchError{Want: r.Tag, Have: other.Tag}\n\t}\n\n\tswitch r.Tag {\n\tcase TagGCounter:\n\t\tvar a, b GCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing GCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagDCounter:\n\t\tvar a, b DCounter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing DCounter src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagLWWRegister:\n\t\tvar a, b LWWRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing LWWRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMVRegister:\n\t\tvar a, b MVRegister\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MVRegister src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagHyperLogLog:\n\t\tvar a, b HyperLogLog\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing HyperLogLog src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagBloomFilter:\n\t\tvar a, b BloomFilter\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing BloomFilter src payload\")\n\t\t}\n\t\tif err := a.Merge(b); err != nil {\n\t\t\treturn errors.Wrap(err, \"error merging BloomFilter\")\n\t\t}\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tcase TagMultiMap:\n\t\tvar a, b MultiMap\n\t\tif err := a.Deserialize(*r); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap dst payload\")\n\t\t}\n\t\tif err := b.Deserialize(other); err != nil {\n\t\t\treturn errors.Wrap(err, \"error deserializing MultiMap src payload\")\n\t\t}\n\t\ta.Merge(b)\n\t\tr.Payload = a.Serialize()\n\t\treturn nil\n\n\tdefault:\n\t\treturn errors.Errorf(\"unknown tag: %q\", r.Tag)\n\t}\n}\n\n// Equals returns true if the two raw objects are identical.\nfunc (r *Raw) Equals(other Raw) bool {\n\treturn r.Realm == other.Realm &&\n\t\tr.ID == other.ID &&\n\t\tr.Tag == other.Tag &&\n\t\tbytes.Equal(r.Payload, other.Payload)\n}\n"}}
[Trace - 2:33:10 PM] Sending request 'textDocument/documentLink - (371)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go"}}
[Trace - 2:33:10 PM] Sending request 'textDocument/codeAction - (372)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:33:10 PM] Received response 'textDocument/documentLink - (371)' in 446ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":8}},"target":"https://godoc.org/bytes"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":28}},"target":"https://godoc.org/github.com/cespare/xxhash"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/errors"}]
[Trace - 2:33:10 PM] Received response 'textDocument/codeAction - (372)' in 449ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go":[]}}}]
[Trace - 2:33:10 PM] Sending request 'textDocument/documentSymbol - (373)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go"}}
[Trace - 2:33:10 PM] Received response 'textDocument/documentSymbol - (373)' in 453ms.
Params: [{"name":"ErrNotFound","detail":"errors.Error","kind":13,"range":{"start":{"line":12,"character":0},"end":{"line":12,"character":73}},"selectionRange":{"start":{"line":12,"character":4},"end":{"line":12,"character":15}}},{"name":"TagMismatchError","detail":"struct{...}","kind":23,"range":{"start":{"line":16,"character":5},"end":{"line":19,"character":1}},"selectionRange":{"start":{"line":16,"character":5},"end":{"line":16,"character":21}},"children":[{"name":"Want","detail":"string","kind":8,"range":{"start":{"line":17,"character":1},"end":{"line":17,"character":9}},"selectionRange":{"start":{"line":17,"character":1},"end":{"line":17,"character":5}}},{"name":"Have","detail":"string","kind":8,"range":{"start":{"line":18,"character":1},"end":{"line":18,"character":9}},"selectionRange":{"start":{"line":18,"character":1},"end":{"line":18,"character":5}}},{"name":"Error","detail":"()","kind":6,"range":{"start":{"line":21,"character":0},"end":{"line":23,"character":1}},"selectionRange":{"start":{"line":21,"character":26},"end":{"line":21,"character":31}}}]},{"name":"RealmIDTag","detail":"struct{...}","kind":23,"range":{"start":{"line":26,"character":5},"end":{"line":30,"character":1}},"selectionRange":{"start":{"line":26,"character":5},"end":{"line":26,"character":15}},"children":[{"name":"Realm","detail":"string","kind":8,"range":{"start":{"line":27,"character":1},"end":{"line":27,"character":28}},"selectionRange":{"start":{"line":27,"character":1},"end":{"line":27,"character":6}}},{"name":"ID","detail":"string","kind":8,"range":{"start":{"line":28,"character":1},"end":{"line":28,"character":25}},"selectionRange":{"start":{"line":28,"character":1},"end":{"line":28,"character":3}}},{"name":"Tag","detail":"string","kind":8,"range":{"start":{"line":29,"character":1},"end":{"line":29,"character":26}},"selectionRange":{"start":{"line":29,"character":1},"end":{"line":29,"character":4}}},{"name":"Hash","detail":"()","kind":6,"range":{"start":{"line":33,"character":0},"end":{"line":38,"character":1}},"selectionRange":{"start":{"line":33,"character":22},"end":{"line":33,"character":26}}}]},{"name":"Raw","detail":"struct{...}","kind":23,"range":{"start":{"line":42,"character":5},"end":{"line":45,"character":1}},"selectionRange":{"start":{"line":42,"character":5},"end":{"line":42,"character":8}},"children":[{"name":"RealmIDTag","detail":"struct{...}","kind":8,"range":{"start":{"line":43,"character":1},"end":{"line":43,"character":11}},"selectionRange":{"start":{"line":43,"character":1},"end":{"line":43,"character":11}}},{"name":"Payload","detail":"[]byte","kind":8,"range":{"start":{"line":44,"character":1},"end":{"line":44,"character":32}},"selectionRange":{"start":{"line":44,"character":1},"end":{"line":44,"character":8}}},{"name":"Merge","detail":"(other Raw)","kind":6,"range":{"start":{"line":63,"character":0},"end":{"line":158,"character":1}},"selectionRange":{"start":{"line":63,"character":14},"end":{"line":63,"character":19}}},{"name":"Equals","detail":"(other Raw)","kind":6,"range":{"start":{"line":161,"character":0},"end":{"line":166,"character":1}},"selectionRange":{"start":{"line":161,"character":14},"end":{"line":161,"character":20}}}]},{"name":"Tag","detail":"string","kind":15,"range":{"start":{"line":48,"character":5},"end":{"line":48,"character":15}},"selectionRange":{"start":{"line":48,"character":5},"end":{"line":48,"character":8}}},{"name":"TagGCounter","detail":"Tag","kind":14,"range":{"start":{"line":51,"character":0},"end":{"line":59,"character":1}},"selectionRange":{"start":{"line":52,"character":1},"end":{"line":52,"character":12}}},{"name":"TagDCounter","detail":"Tag","kind":14,"range":{"start":{"line":51,"character":0},"end":{"line":59,"character":1}},"selectionRange":{"start":{"line":53,"character":1},"end":{"line":53,"character":12}}},{"name":"TagLWWRegister","detail":"Tag","kind":14,"range":{"start":{"line":51,"character":0},"end":{"line":59,"character":1}},"selectionRange":{"start":{"line":54,"character":1},"end":{"line":54,"character":15}}},{"name":"TagMVRegister","detail":"Tag","kind":14,"range":{"start":{"line":51,"character":0},"end":{"line":59,"character":1}},"selectionRange":{"start":{"line":55,"character":1},"end":{"line":55,"character":14}}},{"name":"TagHyperLogLog","detail":"Tag","kind":14,"range":{"start":{"line":51,"character":0},"end":{"line":59,"character":1}},"selectionRange":{"start":{"line":56,"character":1},"end":{"line":56,"character":15}}},{"name":"TagBloomFilter","detail":"Tag","kind":14,"range":{"start":{"line":51,"character":0},"end":{"line":59,"character":1}},"selectionRange":{"start":{"line":57,"character":1},"end":{"line":57,"character":15}}},{"name":"TagMultiMap","detail":"Tag","kind":14,"range":{"start":{"line":51,"character":0},"end":{"line":59,"character":1}},"selectionRange":{"start":{"line":58,"character":1},"end":{"line":58,"character":12}}}]
[Trace - 2:33:10 PM] Sending request 'textDocument/codeAction - (374)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go"},"range":{"start":{"line":12,"character":4},"end":{"line":12,"character":4}},"context":{"diagnostics":[]}}
[Trace - 2:33:10 PM] Sending notification '$/cancelRequest'.
Params: {"id":372}
[Trace - 2:33:10 PM] Received response 'textDocument/codeAction - (374)' in 13ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go":[]}}}]
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","diagnostics":[{"range":{"start":{"line":528,"character":18},"end":{"line":528,"character":19}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *http.Request) as *invalid type value in argument to mux.Vars"},{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/debug.go","diagnostics":[{"range":{"start":{"line":43,"character":13},"end":{"line":43,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/tls.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/contracts_test.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/hyperloglog.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/lwwregister_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/mvregister.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/raw.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/dcounter.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/gcounter_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/middlewares.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/doc.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/internal.go","diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"severity":1,"source":"LSP","message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP"}]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/util.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/bloomfilter_gen.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap.go","diagnostics":[]}
[Trace - 2:33:10 PM] Received notification 'textDocument/publishDiagnostics'.
Params: {"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/multimap_gen.go","diagnostics":[]}
[Trace - 2:33:46 PM] Sending request 'textDocument/documentLink - (375)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"}}
[Trace - 2:33:46 PM] Received response 'textDocument/documentLink - (375)' in 4ms.
Params: [{"range":{"start":{"line":3,"character":1},"end":{"line":3,"character":8}},"target":"https://godoc.org/bytes"},{"range":{"start":{"line":4,"character":1},"end":{"line":4,"character":10}},"target":"https://godoc.org/context"},{"range":{"start":{"line":5,"character":1},"end":{"line":5,"character":18}},"target":"https://godoc.org/encoding/base64"},{"range":{"start":{"line":6,"character":1},"end":{"line":6,"character":16}},"target":"https://godoc.org/encoding/json"},{"range":{"start":{"line":7,"character":1},"end":{"line":7,"character":6}},"target":"https://godoc.org/fmt"},{"range":{"start":{"line":8,"character":1},"end":{"line":8,"character":12}},"target":"https://godoc.org/io/ioutil"},{"range":{"start":{"line":9,"character":1},"end":{"line":9,"character":7}},"target":"https://godoc.org/mime"},{"range":{"start":{"line":10,"character":1},"end":{"line":10,"character":17}},"target":"https://godoc.org/mime/multipart"},{"range":{"start":{"line":11,"character":1},"end":{"line":11,"character":11}},"target":"https://godoc.org/net/http"},{"range":{"start":{"line":12,"character":1},"end":{"line":12,"character":10}},"target":"https://godoc.org/strconv"},{"range":{"start":{"line":13,"character":1},"end":{"line":13,"character":10}},"target":"https://godoc.org/strings"},{"range":{"start":{"line":14,"character":1},"end":{"line":14,"character":7}},"target":"https://godoc.org/time"},{"range":{"start":{"line":16,"character":1},"end":{"line":16,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/auth"},{"range":{"start":{"line":17,"character":1},"end":{"line":17,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/errors"},{"range":{"start":{"line":18,"character":1},"end":{"line":18,"character":38}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/object"},{"range":{"start":{"line":19,"character":1},"end":{"line":19,"character":39}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/replica"},{"range":{"start":{"line":20,"character":1},"end":{"line":20,"character":36}},"target":"https://godoc.org/github.com/fastly/REDACTED/pkg/ring"},{"range":{"start":{"line":21,"character":1},"end":{"line":21,"character":25}},"target":"https://godoc.org/github.com/gorilla/mux"}]
[Trace - 2:33:46 PM] Sending request 'textDocument/codeAction - (376)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"context":{"diagnostics":[]}}
[Trace - 2:33:46 PM] Received response 'textDocument/codeAction - (376)' in 21ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:33:46 PM] Sending request 'textDocument/codeAction - (377)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":356,"character":42},"end":{"line":356,"character":42}},"context":{"diagnostics":[]}}
[Trace - 2:33:46 PM] Received response 'textDocument/codeAction - (377)' in 11ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:33:53 PM] Sending request 'textDocument/documentHighlight - (378)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":77,"character":24}}
[Trace - 2:33:53 PM] Received notification 'window/logMessage'.
Params: {"type":1,"message":"no highlight for /Users/peter/mod/REDACTED/pkg/REDACTED/public.go:78:25: /Users/peter/mod/REDACTED/pkg/REDACTED/public.go:78:25 is not an identifier"}
[Error - 2:33:53 PM] no highlight for /Users/peter/mod/REDACTED/pkg/REDACTED/public.go:78:25: /Users/peter/mod/REDACTED/pkg/REDACTED/public.go:78:25 is not an identifier
[Trace - 2:33:53 PM] Received response 'textDocument/documentHighlight - (378)' in 0ms.
Params: []
[Trace - 2:33:53 PM] Sending request 'textDocument/codeAction - (379)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":77,"character":22},"end":{"line":77,"character":24}},"context":{"diagnostics":[]}}
[Trace - 2:33:53 PM] Received response 'textDocument/codeAction - (379)' in 10ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:33:54 PM] Sending request 'textDocument/hover - (380)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":12}}
[Error - 2:33:54 PM] send textDocument/hover#380 no identifier found
[Error - 2:33:54 PM] Request textDocument/hover failed.
Message: no identifier found
Code: 0
[Trace - 2:33:55 PM] Sending request 'textDocument/hover - (381)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:33:55 PM] Received response 'textDocument/hover - (381)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:33:55 PM] Sending request 'textDocument/codeAction - (382)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:33:55 PM] Received response 'textDocument/codeAction - (382)' in 22ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:34:00 PM] Sending request 'textDocument/definition - (383)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:34:00 PM] Received response 'textDocument/definition - (383)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:34:01 PM] Sending request 'textDocument/hover - (384)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:34:01 PM] Received response 'textDocument/hover - (384)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:34:01 PM] Sending request 'textDocument/codeAction - (385)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:34:01 PM] Received response 'textDocument/codeAction - (385)' in 11ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:34:20 PM] Sending request 'textDocument/hover - (386)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:34:20 PM] Received response 'textDocument/hover - (386)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:34:21 PM] Sending request 'textDocument/codeAction - (387)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:34:21 PM] Received response 'textDocument/codeAction - (387)' in 10ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:34:50 PM] Sending request 'textDocument/definition - (388)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:34:50 PM] Received response 'textDocument/definition - (388)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:34:50 PM] Sending request 'textDocument/hover - (389)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:34:50 PM] Received response 'textDocument/hover - (389)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:34:50 PM] Sending request 'textDocument/codeAction - (390)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:34:50 PM] Received response 'textDocument/codeAction - (390)' in 10ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:36:08 PM] Sending request 'textDocument/hover - (391)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":73,"character":15}}
[Trace - 2:36:08 PM] Received response 'textDocument/hover - (391)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nconst true untyped bool\n```"},"range":{"start":{"line":73,"character":15},"end":{"line":73,"character":19}}}
[Trace - 2:36:09 PM] Sending request 'textDocument/hover - (392)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":72,"character":16}}
[Trace - 2:36:09 PM] Received response 'textDocument/hover - (392)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"NewRouter returns a new router instance.\n```go\nfunc mux.NewRouter() *mux.Router\n```"},"range":{"start":{"line":72,"character":10},"end":{"line":72,"character":19}}}
[Trace - 2:36:09 PM] Sending request 'textDocument/hover - (393)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":72,"character":19}}
[Trace - 2:36:09 PM] Received response 'textDocument/hover - (393)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"NewRouter returns a new router instance.\n```go\nfunc mux.NewRouter() *mux.Router\n```"},"range":{"start":{"line":72,"character":10},"end":{"line":72,"character":19}}}
[Trace - 2:36:10 PM] Sending request 'textDocument/hover - (394)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:36:10 PM] Received response 'textDocument/hover - (394)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:36:10 PM] Sending request 'textDocument/codeAction - (395)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:36:10 PM] Received response 'textDocument/codeAction - (395)' in 10ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:36:19 PM] Sending request 'textDocument/definition - (396)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:36:19 PM] Received response 'textDocument/definition - (396)' in 0ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:36:19 PM] Sending request 'textDocument/hover - (397)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:36:19 PM] Received response 'textDocument/hover - (397)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:36:19 PM] Sending request 'textDocument/hover - (398)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:36:19 PM] Received response 'textDocument/hover - (398)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:36:19 PM] Sending request 'textDocument/codeAction - (399)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:36:19 PM] Received response 'textDocument/codeAction - (399)' in 11ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:36:21 PM] Sending request 'textDocument/hover - (400)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:36:21 PM] Received response 'textDocument/hover - (400)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:36:22 PM] Sending request 'textDocument/codeAction - (401)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:36:22 PM] Received response 'textDocument/codeAction - (401)' in 11ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:36:22 PM] Sending request 'textDocument/definition - (402)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":14}}
[Trace - 2:36:22 PM] Received response 'textDocument/definition - (402)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:36:22 PM] Sending request 'textDocument/hover - (403)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:36:22 PM] Received response 'textDocument/hover - (403)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:36:23 PM] Sending request 'textDocument/codeAction - (404)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:36:23 PM] Received response 'textDocument/codeAction - (404)' in 23ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:36:23 PM] Sending request 'textDocument/hover - (405)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:36:23 PM] Received response 'textDocument/hover - (405)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:36:23 PM] Sending request 'textDocument/codeAction - (406)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:36:23 PM] Received response 'textDocument/codeAction - (406)' in 7ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:37:13 PM] Sending request 'textDocument/definition - (407)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":14}}
[Trace - 2:37:13 PM] Received response 'textDocument/definition - (407)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:37:13 PM] Sending request 'textDocument/hover - (408)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:37:13 PM] Received response 'textDocument/hover - (408)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:37:14 PM] Sending request 'textDocument/hover - (409)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:37:14 PM] Received response 'textDocument/hover - (409)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:37:14 PM] Sending request 'textDocument/codeAction - (410)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:37:14 PM] Received response 'textDocument/codeAction - (410)' in 12ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:37:24 PM] Sending request 'textDocument/definition - (411)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":14}}
[Trace - 2:37:24 PM] Received response 'textDocument/definition - (411)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:37:25 PM] Sending request 'textDocument/hover - (412)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:37:25 PM] Received response 'textDocument/hover - (412)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:37:25 PM] Sending request 'textDocument/codeAction - (413)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:37:25 PM] Received response 'textDocument/codeAction - (413)' in 12ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:37:57 PM] Sending request 'textDocument/hover - (414)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:37:57 PM] Received response 'textDocument/hover - (414)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:37:57 PM] Sending request 'textDocument/codeAction - (415)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:37:57 PM] Received response 'textDocument/codeAction - (415)' in 10ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:37:58 PM] Sending request 'textDocument/definition - (416)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":14}}
[Trace - 2:37:58 PM] Received response 'textDocument/definition - (416)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:37:58 PM] Sending request 'textDocument/hover - (417)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:37:58 PM] Received response 'textDocument/hover - (417)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:37:58 PM] Sending request 'textDocument/hover - (418)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:37:58 PM] Received response 'textDocument/hover - (418)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:37:58 PM] Sending request 'textDocument/codeAction - (419)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:37:58 PM] Received response 'textDocument/codeAction - (419)' in 10ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:38:04 PM] Sending request 'textDocument/definition - (420)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":14}}
[Trace - 2:38:04 PM] Received response 'textDocument/definition - (420)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:38:04 PM] Sending request 'textDocument/hover - (421)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:38:04 PM] Received response 'textDocument/hover - (421)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:38:04 PM] Sending request 'textDocument/hover - (422)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:38:04 PM] Received response 'textDocument/hover - (422)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:38:04 PM] Sending request 'textDocument/codeAction - (423)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:38:04 PM] Received response 'textDocument/codeAction - (423)' in 11ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:38:09 PM] Sending request 'textDocument/definition - (424)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":14}}
[Trace - 2:38:09 PM] Received response 'textDocument/definition - (424)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:38:09 PM] Sending request 'textDocument/hover - (425)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:38:09 PM] Received response 'textDocument/hover - (425)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:38:09 PM] Sending request 'textDocument/codeAction - (426)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:38:09 PM] Received response 'textDocument/codeAction - (426)' in 9ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:38:11 PM] Sending request 'textDocument/definition - (427)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":14}}
[Trace - 2:38:11 PM] Received response 'textDocument/definition - (427)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:38:11 PM] Sending request 'textDocument/hover - (428)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:38:11 PM] Received response 'textDocument/hover - (428)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:38:12 PM] Sending request 'textDocument/codeAction - (429)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:38:12 PM] Received response 'textDocument/codeAction - (429)' in 12ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:38:12 PM] Sending request 'textDocument/hover - (430)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:38:12 PM] Received response 'textDocument/hover - (430)' in 0ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:38:12 PM] Sending request 'textDocument/codeAction - (431)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:38:12 PM] Received response 'textDocument/codeAction - (431)' in 9ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
[Trace - 2:38:16 PM] Sending request 'textDocument/definition - (432)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":14}}
[Trace - 2:38:16 PM] Received response 'textDocument/definition - (432)' in 1ms.
Params: [{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go","range":{"start":{"line":72,"character":1},"end":{"line":72,"character":2}}}]
[Trace - 2:38:16 PM] Sending request 'textDocument/hover - (433)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:38:16 PM] Received response 'textDocument/hover - (433)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:38:16 PM] Sending request 'textDocument/hover - (434)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"position":{"line":83,"character":13}}
[Trace - 2:38:16 PM] Received response 'textDocument/hover - (434)' in 1ms.
Params: {"contents":{"kind":"markdown","value":"```go\nvar r *mux.Router\n```"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}}}
[Trace - 2:38:16 PM] Sending request 'textDocument/codeAction - (435)'.
Params: {"textDocument":{"uri":"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go"},"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"context":{"diagnostics":[{"range":{"start":{"line":83,"character":13},"end":{"line":83,"character":14}},"message":"cannot use r (variable of type *mux.Router) as http.Handler value in assignment: wrong type for method ServeHTTP","severity":1,"source":"LSP"}]}}
[Trace - 2:38:16 PM] Received response 'textDocument/codeAction - (435)' in 17ms.
Params: [{"title":"Organize Imports","kind":"source.organizeImports","edit":{"changes":{"file:///Users/peter/mod/REDACTED/pkg/REDACTED/public.go":[]}}}]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment