Skip to content

Commit 9dfac01

Browse files
committed
internal/lsp/cache: add missing error checks
I wrote this code as if there was going to be a final error check after all the type checking attempts, but ended up using the result inside the attempts, errors would likely have resulted in panics. Just do normal, non-clever error checking. Change-Id: I665f34f7e6d1a2c3465543cbdc39a723a22a1095 Reviewed-on: https://go-review.googlesource.com/c/tools/+/319371 Trust: Heschi Kreinick <heschi@google.com> Run-TryBot: Heschi Kreinick <heschi@google.com> gopls-CI: kokoro <noreply+kokoro@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
1 parent be4aaae commit 9dfac01

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

internal/lsp/cache/check.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -302,14 +302,11 @@ func (s *snapshot) parseGoHandles(ctx context.Context, files []span.URI, mode so
302302
}
303303

304304
func typeCheck(ctx context.Context, snapshot *snapshot, m *metadata, mode source.ParseMode, deps map[packagePath]*packageHandle) (*pkg, error) {
305-
var pkg *pkg
306-
var err error
307-
308305
var filter *unexportedFilter
309306
if mode == source.ParseExported {
310307
filter = &unexportedFilter{uses: map[string]bool{}}
311308
}
312-
pkg, err = doTypeCheck(ctx, snapshot, m, mode, deps, filter)
309+
pkg, err := doTypeCheck(ctx, snapshot, m, mode, deps, filter)
313310
if err != nil {
314311
return nil, err
315312
}
@@ -322,11 +319,17 @@ func typeCheck(ctx context.Context, snapshot *snapshot, m *metadata, mode source
322319
if len(unexpected) == 0 && len(missing) != 0 {
323320
event.Log(ctx, fmt.Sprintf("discovered missing identifiers: %v", missing), tag.Package.Of(string(m.id)))
324321
pkg, err = doTypeCheck(ctx, snapshot, m, mode, deps, filter)
322+
if err != nil {
323+
return nil, err
324+
}
325325
missing, unexpected = filter.ProcessErrors(pkg.typeErrors)
326326
}
327327
if len(unexpected) != 0 || len(missing) != 0 {
328328
event.Log(ctx, fmt.Sprintf("falling back to safe trimming due to type errors: %v or still-missing identifiers: %v", unexpected, missing), tag.Package.Of(string(m.id)))
329329
pkg, err = doTypeCheck(ctx, snapshot, m, mode, deps, nil)
330+
if err != nil {
331+
return nil, err
332+
}
330333
}
331334
}
332335

0 commit comments

Comments
 (0)