internal/lsp: rename CheckPackageHandle to PackageHandle

Change-Id: I4ea5fed9fcb71b77da4a15c9d85792bda815ddf5
Reviewed-on: https://go-review.googlesource.com/c/tools/+/209419
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Cottrell <iancottrell@google.com>
diff --git a/internal/lsp/cache/analysis.go b/internal/lsp/cache/analysis.go
index b38ebd2..ff50289 100644
--- a/internal/lsp/cache/analysis.go
+++ b/internal/lsp/cache/analysis.go
@@ -80,14 +80,14 @@
 	if act != nil {
 		return act, nil
 	}
-	cph := s.getPackage(id, mode)
-	if cph == nil {
+	ph := s.getPackage(id, mode)
+	if ph == nil {
 		return nil, errors.Errorf("no CheckPackageHandle for %s:%v", id, mode == source.ParseExported)
 	}
-	if len(cph.key) == 0 {
+	if len(ph.key) == 0 {
 		return nil, errors.Errorf("no key for CheckPackageHandle %s", id)
 	}
-	pkg, err := cph.check(ctx)
+	pkg, err := ph.check(ctx)
 	if err != nil {
 		return nil, err
 	}
@@ -112,8 +112,8 @@
 		// An analysis that consumes/produces facts
 		// must run on the package's dependencies too.
 		if len(a.FactTypes) > 0 {
-			importIDs := make([]string, 0, len(cph.m.deps))
-			for _, importID := range cph.m.deps {
+			importIDs := make([]string, 0, len(ph.m.deps))
+			for _, importID := range ph.m.deps {
 				importIDs = append(importIDs, string(importID))
 			}
 			sort.Strings(importIDs) // for determinism
@@ -129,7 +129,7 @@
 
 	fset := s.view.session.cache.fset
 
-	h := s.view.session.cache.store.Bind(buildActionKey(a, cph), func(ctx context.Context) interface{} {
+	h := s.view.session.cache.store.Bind(buildActionKey(a, ph), func(ctx context.Context) interface{} {
 		// Analyze dependencies first.
 		results, err := execAll(ctx, fset, deps)
 		if err != nil {
@@ -175,8 +175,8 @@
 	return data.diagnostics, data.result, data.err
 }
 
-func buildActionKey(a *analysis.Analyzer, cph *checkPackageHandle) string {
-	return hashContents([]byte(fmt.Sprintf("%p %s", a, string(cph.key))))
+func buildActionKey(a *analysis.Analyzer, ph *packageHandle) string {
+	return hashContents([]byte(fmt.Sprintf("%p %s", a, string(ph.key))))
 }
 
 func (act *actionHandle) String() string {
diff --git a/internal/lsp/cache/check.go b/internal/lsp/cache/check.go
index 96bd72d..e544274 100644
--- a/internal/lsp/cache/check.go
+++ b/internal/lsp/cache/check.go
@@ -24,8 +24,8 @@
 	errors "golang.org/x/xerrors"
 )
 
-// checkPackageHandle implements source.CheckPackageHandle.
-type checkPackageHandle struct {
+// packageHandle implements source.CheckPackageHandle.
+type packageHandle struct {
 	handle *memoize.Handle
 
 	goFiles []source.ParseGoHandle
@@ -43,69 +43,69 @@
 	key []byte
 }
 
-func (cph *checkPackageHandle) packageKey() packageKey {
+func (ph *packageHandle) packageKey() packageKey {
 	return packageKey{
-		id:   cph.m.id,
-		mode: cph.mode,
+		id:   ph.m.id,
+		mode: ph.mode,
 	}
 }
 
-// checkPackageData contains the data produced by type-checking a package.
-type checkPackageData struct {
+// packageData contains the data produced by type-checking a package.
+type packageData struct {
 	memoize.NoCopy
 
 	pkg *pkg
 	err error
 }
 
-// checkPackageHandle returns a source.CheckPackageHandle for a given package and config.
-func (s *snapshot) checkPackageHandle(ctx context.Context, id packageID, mode source.ParseMode) (*checkPackageHandle, error) {
+// packageHandle returns a source.CheckPackageHandle for a given package and config.
+func (s *snapshot) packageHandle(ctx context.Context, id packageID, mode source.ParseMode) (*packageHandle, error) {
 	// Check if we already have this CheckPackageHandle cached.
-	if cph := s.getPackage(id, mode); cph != nil {
-		return cph, nil
+	if ph := s.getPackage(id, mode); ph != nil {
+		return ph, nil
 	}
 
 	// Build the CheckPackageHandle for this ID and its dependencies.
-	cph, deps, err := s.buildKey(ctx, id, mode)
+	ph, deps, err := s.buildKey(ctx, id, mode)
 	if err != nil {
 		return nil, err
 	}
 
-	// Do not close over the checkPackageHandle or the snapshot in the Bind function.
+	// Do not close over the packageHandle or the snapshot in the Bind function.
 	// This creates a cycle, which causes the finalizers to never run on the handles.
 	// The possible cycles are:
 	//
-	//     checkPackageHandle.h.function -> checkPackageHandle
-	//     checkPackageHandle.h.function -> snapshot -> checkPackageHandle
+	//     packageHandle.h.function -> packageHandle
+	//     packageHandle.h.function -> snapshot -> packageHandle
 	//
 
-	m := cph.m
-	goFiles := cph.goFiles
-	compiledGoFiles := cph.compiledGoFiles
-	key := cph.key
+	m := ph.m
+	goFiles := ph.goFiles
+	compiledGoFiles := ph.compiledGoFiles
+	key := ph.key
 	fset := s.view.session.cache.fset
 
 	h := s.view.session.cache.store.Bind(string(key), func(ctx context.Context) interface{} {
 		// Begin loading the direct dependencies, in parallel.
 		for _, dep := range deps {
-			go func(dep *checkPackageHandle) {
+			go func(dep *packageHandle) {
 				dep.check(ctx)
 			}(dep)
 		}
-		data := &checkPackageData{}
+		data := &packageData{}
 		data.pkg, data.err = typeCheck(ctx, fset, m, mode, goFiles, compiledGoFiles, deps)
 		return data
 	})
-	cph.handle = h
+	ph.handle = h
 
 	// Cache the CheckPackageHandle in the snapshot.
-	s.addPackage(cph)
+	s.addPackage(ph)
 
-	return cph, nil
+	return ph, nil
 }
 
 // buildKey computes the checkPackageKey for a given checkPackageHandle.
-func (s *snapshot) buildKey(ctx context.Context, id packageID, mode source.ParseMode) (*checkPackageHandle, map[packagePath]*checkPackageHandle, error) {
+func (s *snapshot) buildKey(ctx context.Context, id packageID, mode source.ParseMode) (*packageHandle, map[packagePath]*packageHandle, error) {
 	m := s.getMetadata(id)
 	if m == nil {
 		return nil, nil, errors.Errorf("no metadata for %s", id)
@@ -118,7 +118,7 @@
 	if err != nil {
 		return nil, nil, err
 	}
-	cph := &checkPackageHandle{
+	ph := &packageHandle{
 		m:               m,
 		goFiles:         goFiles,
 		compiledGoFiles: compiledGoFiles,
@@ -131,12 +131,12 @@
 		return depList[i] < depList[j]
 	})
 
-	deps := make(map[packagePath]*checkPackageHandle)
+	deps := make(map[packagePath]*packageHandle)
 
 	// Begin computing the key by getting the depKeys for all dependencies.
 	var depKeys [][]byte
 	for _, depID := range depList {
-		depHandle, err := s.checkPackageHandle(ctx, depID, source.ParseExported)
+		depHandle, err := s.packageHandle(ctx, depID, source.ParseExported)
 		if err != nil {
 			log.Error(ctx, "no dep handle", err, telemetry.Package.Of(depID))
 
@@ -148,12 +148,12 @@
 		deps[depHandle.m.pkgPath] = depHandle
 		depKeys = append(depKeys, depHandle.key)
 	}
-	cph.key = checkPackageKey(cph.m.id, cph.compiledGoFiles, m.config, depKeys)
-	return cph, deps, nil
+	ph.key = checkPackageKey(ph.m.id, ph.compiledGoFiles, m.config, depKeys)
+	return ph, deps, nil
 }
 
-func checkPackageKey(id packageID, phs []source.ParseGoHandle, cfg *packages.Config, deps [][]byte) []byte {
-	return []byte(hashContents([]byte(fmt.Sprintf("%s%s%s%s", id, hashParseKeys(phs), hashConfig(cfg), hashContents(bytes.Join(deps, nil))))))
+func checkPackageKey(id packageID, pghs []source.ParseGoHandle, cfg *packages.Config, deps [][]byte) []byte {
+	return []byte(hashContents([]byte(fmt.Sprintf("%s%s%s%s", id, hashParseKeys(pghs), hashConfig(cfg), hashContents(bytes.Join(deps, nil))))))
 }
 
 // hashConfig returns the hash for the *packages.Config.
@@ -173,45 +173,45 @@
 	return hashContents(b.Bytes())
 }
 
-func (cph *checkPackageHandle) Check(ctx context.Context) (source.Package, error) {
-	return cph.check(ctx)
+func (ph *packageHandle) Check(ctx context.Context) (source.Package, error) {
+	return ph.check(ctx)
 }
 
-func (cph *checkPackageHandle) check(ctx context.Context) (*pkg, error) {
-	v := cph.handle.Get(ctx)
+func (ph *packageHandle) check(ctx context.Context) (*pkg, error) {
+	v := ph.handle.Get(ctx)
 	if v == nil {
-		return nil, errors.Errorf("no package for %s", cph.m.id)
+		return nil, errors.Errorf("no package for %s", ph.m.id)
 	}
-	data := v.(*checkPackageData)
+	data := v.(*packageData)
 	return data.pkg, data.err
 }
 
-func (cph *checkPackageHandle) CompiledGoFiles() []source.ParseGoHandle {
-	return cph.compiledGoFiles
+func (ph *packageHandle) CompiledGoFiles() []source.ParseGoHandle {
+	return ph.compiledGoFiles
 }
 
-func (cph *checkPackageHandle) ID() string {
-	return string(cph.m.id)
+func (ph *packageHandle) ID() string {
+	return string(ph.m.id)
 }
 
-func (cph *checkPackageHandle) MissingDependencies() []string {
+func (ph *packageHandle) MissingDependencies() []string {
 	var md []string
-	for i := range cph.m.missingDeps {
+	for i := range ph.m.missingDeps {
 		md = append(md, string(i))
 	}
 	return md
 }
 
-func (cph *checkPackageHandle) Cached() (source.Package, error) {
-	return cph.cached()
+func (ph *packageHandle) Cached() (source.Package, error) {
+	return ph.cached()
 }
 
-func (cph *checkPackageHandle) cached() (*pkg, error) {
-	v := cph.handle.Cached()
+func (ph *packageHandle) cached() (*pkg, error) {
+	v := ph.handle.Cached()
 	if v == nil {
-		return nil, errors.Errorf("no cached type information for %s", cph.m.pkgPath)
+		return nil, errors.Errorf("no cached type information for %s", ph.m.pkgPath)
 	}
-	data := v.(*checkPackageData)
+	data := v.(*packageData)
 	return data.pkg, data.err
 }
 
@@ -228,7 +228,7 @@
 	return phs, nil
 }
 
-func typeCheck(ctx context.Context, fset *token.FileSet, m *metadata, mode source.ParseMode, goFiles []source.ParseGoHandle, compiledGoFiles []source.ParseGoHandle, deps map[packagePath]*checkPackageHandle) (*pkg, error) {
+func typeCheck(ctx context.Context, fset *token.FileSet, m *metadata, mode source.ParseMode, goFiles []source.ParseGoHandle, compiledGoFiles []source.ParseGoHandle, deps map[packagePath]*packageHandle) (*pkg, error) {
 	ctx, done := trace.StartSpan(ctx, "cache.importer.typeCheck", telemetry.Package.Of(m.id))
 	defer done()
 
diff --git a/internal/lsp/cache/session.go b/internal/lsp/cache/session.go
index 81f350b..677ae56 100644
--- a/internal/lsp/cache/session.go
+++ b/internal/lsp/cache/session.go
@@ -76,20 +76,20 @@
 	return s.cache
 }
 
-func (s *session) NewView(ctx context.Context, name string, folder span.URI, options source.Options) (source.View, []source.CheckPackageHandle, error) {
+func (s *session) NewView(ctx context.Context, name string, folder span.URI, options source.Options) (source.View, []source.PackageHandle, error) {
 	s.viewMu.Lock()
 	defer s.viewMu.Unlock()
-	v, cphs, err := s.createView(ctx, name, folder, options)
+	v, phs, err := s.createView(ctx, name, folder, options)
 	if err != nil {
 		return nil, nil, err
 	}
 	s.views = append(s.views, v)
 	// we always need to drop the view map
 	s.viewMap = make(map[span.URI]source.View)
-	return v, cphs, nil
+	return v, phs, nil
 }
 
-func (s *session) createView(ctx context.Context, name string, folder span.URI, options source.Options) (*view, []source.CheckPackageHandle, error) {
+func (s *session) createView(ctx context.Context, name string, folder span.URI, options source.Options) (*view, []source.PackageHandle, error) {
 	index := atomic.AddInt64(&viewIndex, 1)
 	// We want a true background context and not a detached context here
 	// the spans need to be unrelated and no tag values should pollute it.
@@ -107,7 +107,7 @@
 		filesByURI:    make(map[span.URI]viewFile),
 		filesByBase:   make(map[string][]viewFile),
 		snapshot: &snapshot{
-			packages:          make(map[packageKey]*checkPackageHandle),
+			packages:          make(map[packageKey]*packageHandle),
 			ids:               make(map[span.URI][]packageID),
 			metadata:          make(map[packageID]*metadata),
 			files:             make(map[span.URI]source.FileHandle),
@@ -144,13 +144,13 @@
 	// Prepare CheckPackageHandles for every package that's been loaded.
 	// (*snapshot).CheckPackageHandle makes the assumption that every package that's
 	// been loaded has an existing checkPackageHandle.
-	cphs, err := v.snapshot.checkWorkspacePackages(ctx, m)
+	phs, err := v.snapshot.checkWorkspacePackages(ctx, m)
 	if err != nil {
 		return nil, nil, err
 	}
 
 	debug.AddView(debugView{v})
-	return v, cphs, loadErr
+	return v, phs, loadErr
 }
 
 // View returns the view by name.
@@ -245,14 +245,14 @@
 	return nil
 }
 
-func (s *session) updateView(ctx context.Context, view *view, options source.Options) (*view, []source.CheckPackageHandle, error) {
+func (s *session) updateView(ctx context.Context, view *view, options source.Options) (*view, []source.PackageHandle, error) {
 	s.viewMu.Lock()
 	defer s.viewMu.Unlock()
 	i, err := s.dropView(ctx, view)
 	if err != nil {
 		return nil, nil, err
 	}
-	v, cphs, err := s.createView(ctx, view.name, view.folder, options)
+	v, phs, err := s.createView(ctx, view.name, view.folder, options)
 	if err != nil {
 		// we have dropped the old view, but could not create the new one
 		// this should not happen and is very bad, but we still need to clean
@@ -263,7 +263,7 @@
 	}
 	// substitute the new view into the array where the old view was
 	s.views[i] = v
-	return v, cphs, nil
+	return v, phs, nil
 }
 
 func (s *session) dropView(ctx context.Context, view *view) (int, error) {
diff --git a/internal/lsp/cache/snapshot.go b/internal/lsp/cache/snapshot.go
index 2df1406..d8c2723 100644
--- a/internal/lsp/cache/snapshot.go
+++ b/internal/lsp/cache/snapshot.go
@@ -37,7 +37,7 @@
 
 	// packages maps a packageKey to a set of CheckPackageHandles to which that file belongs.
 	// It may be invalidated when a file's content changes.
-	packages map[packageKey]*checkPackageHandle
+	packages map[packageKey]*packageHandle
 
 	// actions maps an actionkey to its actionHandle.
 	actions map[actionKey]*actionHandle
@@ -61,13 +61,13 @@
 	return s.view
 }
 
-func (s *snapshot) PackageHandles(ctx context.Context, fh source.FileHandle) ([]source.CheckPackageHandle, error) {
+func (s *snapshot) PackageHandles(ctx context.Context, fh source.FileHandle) ([]source.PackageHandle, error) {
 	ctx = telemetry.File.With(ctx, fh.Identity().URI)
 
 	metadata := s.getMetadataForURI(fh.Identity().URI)
 
 	// Determine if we need to type-check the package.
-	cphs, load, check := s.shouldCheck(metadata)
+	phs, load, check := s.shouldCheck(metadata)
 
 	// We may need to re-load package metadata.
 	// We only need to this if it has been invalidated, and is therefore unvailable.
@@ -83,23 +83,23 @@
 		}
 	}
 	if check {
-		var results []source.CheckPackageHandle
+		var results []source.PackageHandle
 		for _, m := range metadata {
-			cph, err := s.checkPackageHandle(ctx, m.id, source.ParseFull)
+			ph, err := s.packageHandle(ctx, m.id, source.ParseFull)
 			if err != nil {
 				return nil, err
 			}
-			results = append(results, cph)
+			results = append(results, ph)
 		}
-		cphs = results
+		phs = results
 	}
-	if len(cphs) == 0 {
+	if len(phs) == 0 {
 		return nil, errors.Errorf("no CheckPackageHandles for %s", fh.Identity().URI)
 	}
-	return cphs, nil
+	return phs, nil
 }
 
-func (s *snapshot) PackageHandle(ctx context.Context, id string) (source.CheckPackageHandle, error) {
+func (s *snapshot) PackageHandle(ctx context.Context, id string) (source.PackageHandle, error) {
 	ctx = telemetry.Package.With(ctx, id)
 
 	m := s.getMetadata(packageID(id))
@@ -107,25 +107,25 @@
 		return nil, errors.Errorf("no known metadata for %s", id)
 	}
 	// Determine if we need to type-check the package.
-	cphs, load, check := s.shouldCheck([]*metadata{m})
+	phs, load, check := s.shouldCheck([]*metadata{m})
 	if load {
 		return nil, errors.Errorf("outdated metadata for %s, needs re-load", id)
 	}
 	if check {
-		return s.checkPackageHandle(ctx, m.id, source.ParseFull)
+		return s.packageHandle(ctx, m.id, source.ParseFull)
 	}
-	if len(cphs) == 0 {
+	if len(phs) == 0 {
 		return nil, errors.Errorf("no check package handle for %s", id)
 	}
-	if len(cphs) > 1 {
+	if len(phs) > 1 {
 		return nil, errors.Errorf("multiple check package handles for a single id: %s", id)
 	}
-	return cphs[0], nil
+	return phs[0], nil
 }
 
 // shouldCheck determines if the packages provided by the metadata
 // need to be re-loaded or re-type-checked.
-func (s *snapshot) shouldCheck(m []*metadata) (cphs []source.CheckPackageHandle, load, check bool) {
+func (s *snapshot) shouldCheck(m []*metadata) (phs []source.PackageHandle, load, check bool) {
 	// No metadata. Re-load and re-check.
 	if len(m) == 0 {
 		return nil, true, true
@@ -135,23 +135,23 @@
 	// If a single CheckPackageHandle is missing, re-check all of them.
 	// TODO: Optimize this by only checking the necessary packages.
 	for _, metadata := range m {
-		cph := s.getPackage(metadata.id, source.ParseFull)
-		if cph == nil {
+		ph := s.getPackage(metadata.id, source.ParseFull)
+		if ph == nil {
 			return nil, false, true
 		}
-		cphs = append(cphs, cph)
+		phs = append(phs, ph)
 	}
 	// If the metadata for the package had missing dependencies,
 	// we _may_ need to re-check. If the missing dependencies haven't changed
 	// since previous load, we will not check again.
-	if len(cphs) < len(m) {
+	if len(phs) < len(m) {
 		for _, m := range m {
 			if len(m.missingDeps) != 0 {
 				return nil, true, true
 			}
 		}
 	}
-	return cphs, false, false
+	return phs, false, false
 }
 
 func (s *snapshot) GetReverseDependencies(id string) []string {
@@ -197,34 +197,34 @@
 	return s.importedBy[id]
 }
 
-func (s *snapshot) addPackage(cph *checkPackageHandle) {
+func (s *snapshot) addPackage(ph *packageHandle) {
 	s.mu.Lock()
 	defer s.mu.Unlock()
 
 	// TODO: We should make sure not to compute duplicate CheckPackageHandles,
 	// and instead panic here. This will be hard to do because we may encounter
 	// the same package multiple times in the dependency tree.
-	if _, ok := s.packages[cph.packageKey()]; ok {
+	if _, ok := s.packages[ph.packageKey()]; ok {
 		return
 	}
-	s.packages[cph.packageKey()] = cph
+	s.packages[ph.packageKey()] = ph
 }
 
 // checkWorkspacePackages checks the initial set of packages loaded when
 // the view is created. This is needed because
 // (*snapshot).CheckPackageHandle makes the assumption that every package that's
 // been loaded has an existing checkPackageHandle.
-func (s *snapshot) checkWorkspacePackages(ctx context.Context, m []*metadata) ([]source.CheckPackageHandle, error) {
-	var cphs []source.CheckPackageHandle
+func (s *snapshot) checkWorkspacePackages(ctx context.Context, m []*metadata) ([]source.PackageHandle, error) {
+	var phs []source.PackageHandle
 	for _, m := range m {
-		cph, err := s.checkPackageHandle(ctx, m.id, source.ParseFull)
+		ph, err := s.packageHandle(ctx, m.id, source.ParseFull)
 		if err != nil {
 			return nil, err
 		}
 		s.workspacePackages[m.id] = true
-		cphs = append(cphs, cph)
+		phs = append(phs, ph)
 	}
-	return cphs, nil
+	return phs, nil
 }
 
 func (s *snapshot) KnownPackages(ctx context.Context) []source.Package {
@@ -251,14 +251,14 @@
 			// Any package in our workspace should be loaded with ParseFull.
 			mode = source.ParseFull
 		}
-		cph, err := s.checkPackageHandle(ctx, pkgID, mode)
+		ph, err := s.packageHandle(ctx, pkgID, mode)
 		if err != nil {
 			log.Error(ctx, "failed to create CheckPackageHandle", err, telemetry.Package.Of(pkgID))
 			continue
 		}
 		// Check the package now if it's not checked yet.
 		// TODO(matloob): is this too slow?
-		pkg, err := cph.check(ctx)
+		pkg, err := ph.check(ctx)
 		if err != nil {
 			log.Error(ctx, "failed to check package", err, telemetry.Package.Of(pkgID))
 			continue
@@ -274,8 +274,8 @@
 	defer s.mu.Unlock()
 
 	results := map[string]source.Package{}
-	for _, cph := range s.packages {
-		cachedPkg, err := cph.cached()
+	for _, ph := range s.packages {
+		cachedPkg, err := ph.cached()
 		if err != nil {
 			continue
 		}
@@ -293,7 +293,7 @@
 	return results
 }
 
-func (s *snapshot) getPackage(id packageID, m source.ParseMode) *checkPackageHandle {
+func (s *snapshot) getPackage(id packageID, m source.ParseMode) *packageHandle {
 	s.mu.Lock()
 	defer s.mu.Unlock()
 
@@ -418,7 +418,7 @@
 		ids:               make(map[span.URI][]packageID),
 		importedBy:        make(map[packageID][]packageID),
 		metadata:          make(map[packageID]*metadata),
-		packages:          make(map[packageKey]*checkPackageHandle),
+		packages:          make(map[packageKey]*packageHandle),
 		actions:           make(map[actionKey]*actionHandle),
 		files:             make(map[span.URI]source.FileHandle),
 		workspacePackages: make(map[packageID]bool),
diff --git a/internal/lsp/code_action.go b/internal/lsp/code_action.go
index 1422b2a..f78b903 100644
--- a/internal/lsp/code_action.go
+++ b/internal/lsp/code_action.go
@@ -207,20 +207,20 @@
 	var codeActions []protocol.CodeAction
 
 	fh := snapshot.Handle(ctx, f)
-	cphs, err := snapshot.PackageHandles(ctx, fh)
+	phs, err := snapshot.PackageHandles(ctx, fh)
 	if err != nil {
 		return nil, err
 	}
 	// We get the package that source.Diagnostics would've used. This is hack.
 	// TODO(golang/go#32443): The correct solution will be to cache diagnostics per-file per-snapshot.
-	cph, err := source.WidestCheckPackageHandle(cphs)
+	ph, err := source.WidestCheckPackageHandle(phs)
 	if err != nil {
 		return nil, err
 	}
 	for _, diag := range diagnostics {
 		// This code assumes that the analyzer name is the Source of the diagnostic.
 		// If this ever changes, this will need to be addressed.
-		srcErr, err := snapshot.FindAnalysisError(ctx, cph.ID(), diag.Source, diag.Message, diag.Range)
+		srcErr, err := snapshot.FindAnalysisError(ctx, ph.ID(), diag.Source, diag.Message, diag.Range)
 		if err != nil {
 			continue
 		}
diff --git a/internal/lsp/diagnostics.go b/internal/lsp/diagnostics.go
index f339d77..62a0511 100644
--- a/internal/lsp/diagnostics.go
+++ b/internal/lsp/diagnostics.go
@@ -16,17 +16,17 @@
 	"golang.org/x/tools/internal/telemetry/trace"
 )
 
-func (s *Server) diagnoseSnapshot(snapshot source.Snapshot, cphs []source.CheckPackageHandle) {
+func (s *Server) diagnoseSnapshot(snapshot source.Snapshot, phs []source.PackageHandle) {
 	ctx := snapshot.View().BackgroundContext()
 	ctx, done := trace.StartSpan(ctx, "lsp:background-worker")
 	defer done()
 
-	for _, cph := range cphs {
-		if len(cph.CompiledGoFiles()) == 0 {
+	for _, ph := range phs {
+		if len(ph.CompiledGoFiles()) == 0 {
 			continue
 		}
 		// Find a file on which to call diagnostics.
-		uri := cph.CompiledGoFiles()[0].File().Identity().URI
+		uri := ph.CompiledGoFiles()[0].File().Identity().URI
 		f, err := snapshot.View().GetFile(ctx, uri)
 		if err != nil {
 			log.Error(ctx, "no file", err, telemetry.URI.Of(uri))
diff --git a/internal/lsp/source/completion.go b/internal/lsp/source/completion.go
index 85aae3c..d5bcf0f 100644
--- a/internal/lsp/source/completion.go
+++ b/internal/lsp/source/completion.go
@@ -395,23 +395,23 @@
 	startTime := time.Now()
 
 	fh := snapshot.Handle(ctx, f)
-	cphs, err := snapshot.PackageHandles(ctx, fh)
+	phs, err := snapshot.PackageHandles(ctx, fh)
 	if err != nil {
 		return nil, nil, err
 	}
-	cph, err := NarrowestCheckPackageHandle(cphs)
+	ph, err := NarrowestCheckPackageHandle(phs)
 	if err != nil {
 		return nil, nil, err
 	}
-	pkg, err := cph.Check(ctx)
+	pkg, err := ph.Check(ctx)
 	if err != nil {
 		return nil, nil, err
 	}
-	ph, err := pkg.File(f.URI())
+	pgh, err := pkg.File(f.URI())
 	if err != nil {
 		return nil, nil, err
 	}
-	file, m, _, err := ph.Cached()
+	file, m, _, err := pgh.Cached()
 	if err != nil {
 		return nil, nil, err
 	}
diff --git a/internal/lsp/source/diagnostics.go b/internal/lsp/source/diagnostics.go
index 9a58a03..9f2d7b7 100644
--- a/internal/lsp/source/diagnostics.go
+++ b/internal/lsp/source/diagnostics.go
@@ -44,24 +44,24 @@
 	defer done()
 
 	fh := snapshot.Handle(ctx, f)
-	cphs, err := snapshot.PackageHandles(ctx, fh)
+	phs, err := snapshot.PackageHandles(ctx, fh)
 	if err != nil {
 		return nil, "", err
 	}
-	cph, err := WidestCheckPackageHandle(cphs)
+	ph, err := WidestCheckPackageHandle(phs)
 	if err != nil {
 		return nil, "", err
 	}
 	// If we are missing dependencies, it may because the user's workspace is
 	// not correctly configured. Report errors, if possible.
 	var warningMsg string
-	if len(cph.MissingDependencies()) > 0 {
+	if len(ph.MissingDependencies()) > 0 {
 		warningMsg, err = checkCommonErrors(ctx, snapshot.View(), f.URI())
 		if err != nil {
 			log.Error(ctx, "error checking common errors", err, telemetry.File.Of(f.URI))
 		}
 	}
-	pkg, err := cph.Check(ctx)
+	pkg, err := ph.Check(ctx)
 	if err != nil {
 		log.Error(ctx, "no package for file", err)
 		return singleDiagnostic(fh.Identity(), "%s is not part of a package", f.URI()), "", nil
@@ -81,17 +81,17 @@
 	// Run diagnostics for the package that this URI belongs to.
 	if !diagnostics(ctx, snapshot, pkg, reports) && withAnalysis {
 		// If we don't have any list, parse, or type errors, run analyses.
-		if err := analyses(ctx, snapshot, cph, disabledAnalyses, reports); err != nil {
+		if err := analyses(ctx, snapshot, ph, disabledAnalyses, reports); err != nil {
 			log.Error(ctx, "failed to run analyses", err, telemetry.File.Of(f.URI()))
 		}
 	}
 	// Updates to the diagnostics for this package may need to be propagated.
 	for _, id := range snapshot.GetReverseDependencies(pkg.ID()) {
-		cph, err := snapshot.PackageHandle(ctx, id)
+		ph, err := snapshot.PackageHandle(ctx, id)
 		if err != nil {
 			return nil, warningMsg, err
 		}
-		pkg, err := cph.Check(ctx)
+		pkg, err := ph.Check(ctx)
 		if err != nil {
 			return nil, warningMsg, err
 		}
@@ -153,7 +153,7 @@
 	return nonEmptyDiagnostics
 }
 
-func analyses(ctx context.Context, snapshot Snapshot, cph CheckPackageHandle, disabledAnalyses map[string]struct{}, reports map[FileIdentity][]Diagnostic) error {
+func analyses(ctx context.Context, snapshot Snapshot, ph PackageHandle, disabledAnalyses map[string]struct{}, reports map[FileIdentity][]Diagnostic) error {
 	var analyzers []*analysis.Analyzer
 	for _, a := range snapshot.View().Options().Analyzers {
 		if _, ok := disabledAnalyses[a.Name]; ok {
@@ -162,7 +162,7 @@
 		analyzers = append(analyzers, a)
 	}
 
-	diagnostics, err := snapshot.Analyze(ctx, cph.ID(), analyzers)
+	diagnostics, err := snapshot.Analyze(ctx, ph.ID(), analyzers)
 	if err != nil {
 		return err
 	}
diff --git a/internal/lsp/source/folding_range.go b/internal/lsp/source/folding_range.go
index ee0d3c1..c01139c 100644
--- a/internal/lsp/source/folding_range.go
+++ b/internal/lsp/source/folding_range.go
@@ -19,8 +19,8 @@
 	// TODO(suzmue): consider limiting the number of folding ranges returned, and
 	// implement a way to prioritize folding ranges in that case.
 	fh := snapshot.Handle(ctx, f)
-	ph := snapshot.View().Session().Cache().ParseGoHandle(fh, ParseFull)
-	file, m, _, err := ph.Parse(ctx)
+	pgh := snapshot.View().Session().Cache().ParseGoHandle(fh, ParseFull)
+	file, m, _, err := pgh.Parse(ctx)
 	if err != nil {
 		return nil, err
 	}
diff --git a/internal/lsp/source/format.go b/internal/lsp/source/format.go
index 8b47756..797b093 100644
--- a/internal/lsp/source/format.go
+++ b/internal/lsp/source/format.go
@@ -28,28 +28,28 @@
 	defer done()
 
 	fh := snapshot.Handle(ctx, f)
-	cphs, err := snapshot.PackageHandles(ctx, fh)
+	phs, err := snapshot.PackageHandles(ctx, fh)
 	if err != nil {
 		return nil, err
 	}
-	cph, err := NarrowestCheckPackageHandle(cphs)
+	ph, err := NarrowestCheckPackageHandle(phs)
 	if err != nil {
 		return nil, err
 	}
-	pkg, err := cph.Check(ctx)
+	pkg, err := ph.Check(ctx)
 	if err != nil {
 		return nil, err
 	}
-	ph, err := pkg.File(f.URI())
+	pgh, err := pkg.File(f.URI())
 	if err != nil {
 		return nil, err
 	}
 	// Be extra careful that the file's ParseMode is correct,
 	// otherwise we might replace the user's code with a trimmed AST.
-	if ph.Mode() != ParseFull {
-		return nil, errors.Errorf("%s was parsed in the incorrect mode", ph.File().Identity().URI)
+	if pgh.Mode() != ParseFull {
+		return nil, errors.Errorf("%s was parsed in the incorrect mode", pgh.File().Identity().URI)
 	}
-	file, m, _, err := ph.Parse(ctx)
+	file, m, _, err := pgh.Parse(ctx)
 	if err != nil {
 		return nil, err
 	}
@@ -62,7 +62,7 @@
 		if err != nil {
 			return nil, err
 		}
-		return computeTextEdits(ctx, snapshot.View(), ph.File(), m, string(formatted))
+		return computeTextEdits(ctx, snapshot.View(), pgh.File(), m, string(formatted))
 	}
 
 	fset := snapshot.View().Session().Cache().FileSet()
@@ -75,7 +75,7 @@
 	if err := format.Node(buf, fset, file); err != nil {
 		return nil, err
 	}
-	return computeTextEdits(ctx, snapshot.View(), ph.File(), m, buf.String())
+	return computeTextEdits(ctx, snapshot.View(), pgh.File(), m, buf.String())
 }
 
 func formatSource(ctx context.Context, s Snapshot, f File) ([]byte, error) {
@@ -103,31 +103,25 @@
 	defer done()
 
 	fh := snapshot.Handle(ctx, f)
-	cphs, err := snapshot.PackageHandles(ctx, fh)
+	phs, err := snapshot.PackageHandles(ctx, fh)
 	if err != nil {
 		return nil, nil, err
 	}
-	cph, err := NarrowestCheckPackageHandle(cphs)
+	ph, err := NarrowestCheckPackageHandle(phs)
 	if err != nil {
 		return nil, nil, err
 	}
-	pkg, err := cph.Check(ctx)
+	pkg, err := ph.Check(ctx)
 	if err != nil {
 		return nil, nil, err
 	}
 	if hasListErrors(pkg) {
 		return nil, nil, errors.Errorf("%s has list errors, not running goimports", f.URI())
 	}
-	var ph ParseGoHandle
-	for _, h := range pkg.CompiledGoFiles() {
-		if h.File().Identity().URI == f.URI() {
-			ph = h
-		}
+	pgh, err := pkg.File(f.URI())
+	if err != nil {
+		return nil, nil, err
 	}
-	if ph == nil {
-		return nil, nil, errors.Errorf("no ParseGoHandle for %s", f.URI())
-	}
-
 	options := &imports.Options{
 		// Defaults.
 		AllErrors:  true,
@@ -138,7 +132,7 @@
 		TabWidth:   8,
 	}
 	err = snapshot.View().RunProcessEnvFunc(ctx, func(opts *imports.Options) error {
-		allFixEdits, editsPerFix, err = computeImportEdits(ctx, snapshot.View(), ph, opts)
+		allFixEdits, editsPerFix, err = computeImportEdits(ctx, snapshot.View(), pgh, opts)
 		return err
 	}, options)
 	if err != nil {
diff --git a/internal/lsp/source/highlight.go b/internal/lsp/source/highlight.go
index 1a3d2e9..38ba428 100644
--- a/internal/lsp/source/highlight.go
+++ b/internal/lsp/source/highlight.go
@@ -20,28 +20,23 @@
 	defer done()
 
 	fh := snapshot.Handle(ctx, f)
-	cphs, err := snapshot.PackageHandles(ctx, fh)
+	phs, err := snapshot.PackageHandles(ctx, fh)
 	if err != nil {
 		return nil, err
 	}
-	cph, err := WidestCheckPackageHandle(cphs)
+	ph, err := WidestCheckPackageHandle(phs)
 	if err != nil {
 		return nil, err
 	}
-	pkg, err := cph.Check(ctx)
+	pkg, err := ph.Check(ctx)
 	if err != nil {
 		return nil, err
 	}
-	var ph ParseGoHandle
-	for _, file := range pkg.CompiledGoFiles() {
-		if file.File().Identity().URI == f.URI() {
-			ph = file
-		}
+	pgh, err := pkg.File(f.URI())
+	if err != nil {
+		return nil, err
 	}
-	if ph == nil {
-		return nil, errors.Errorf("no ParseGoHandle for %s", f.URI())
-	}
-	file, m, _, err := ph.Parse(ctx)
+	file, m, _, err := pgh.Parse(ctx)
 	if err != nil {
 		return nil, err
 	}
diff --git a/internal/lsp/source/identifier.go b/internal/lsp/source/identifier.go
index 9df36f3..dc91d05 100644
--- a/internal/lsp/source/identifier.go
+++ b/internal/lsp/source/identifier.go
@@ -51,23 +51,23 @@
 	defer done()
 
 	fh := snapshot.Handle(ctx, f)
-	cphs, err := snapshot.PackageHandles(ctx, fh)
+	phs, err := snapshot.PackageHandles(ctx, fh)
 	if err != nil {
 		return nil, err
 	}
-	cph, err := WidestCheckPackageHandle(cphs)
+	ph, err := WidestCheckPackageHandle(phs)
 	if err != nil {
 		return nil, err
 	}
-	pkg, err := cph.Check(ctx)
+	pkg, err := ph.Check(ctx)
 	if err != nil {
 		return nil, err
 	}
-	ph, err := pkg.File(f.URI())
+	pgh, err := pkg.File(f.URI())
 	if err != nil {
 		return nil, err
 	}
-	file, m, _, err := ph.Cached()
+	file, m, _, err := pgh.Cached()
 	if err != nil {
 		return nil, err
 	}
diff --git a/internal/lsp/source/references.go b/internal/lsp/source/references.go
index 88ecf11..5539f5f 100644
--- a/internal/lsp/source/references.go
+++ b/internal/lsp/source/references.go
@@ -76,12 +76,12 @@
 	if i.Declaration.obj.Exported() {
 		// Only search all packages if the identifier is exported.
 		for _, id := range i.Snapshot.GetReverseDependencies(i.pkg.ID()) {
-			cph, err := i.Snapshot.PackageHandle(ctx, id)
+			ph, err := i.Snapshot.PackageHandle(ctx, id)
 			if err != nil {
 				log.Error(ctx, "References: no CheckPackageHandle", err, telemetry.Package.Of(id))
 				continue
 			}
-			pkg, err := cph.Check(ctx)
+			pkg, err := ph.Check(ctx)
 			if err != nil {
 				log.Error(ctx, "References: no Package", err, telemetry.Package.Of(id))
 				continue
diff --git a/internal/lsp/source/signature_help.go b/internal/lsp/source/signature_help.go
index fc3eaf8..471d1e5 100644
--- a/internal/lsp/source/signature_help.go
+++ b/internal/lsp/source/signature_help.go
@@ -32,23 +32,23 @@
 	defer done()
 
 	fh := snapshot.Handle(ctx, f)
-	cphs, err := snapshot.PackageHandles(ctx, fh)
+	phs, err := snapshot.PackageHandles(ctx, fh)
 	if err != nil {
 		return nil, err
 	}
-	cph, err := NarrowestCheckPackageHandle(cphs)
+	ph, err := NarrowestCheckPackageHandle(phs)
 	if err != nil {
 		return nil, err
 	}
-	pkg, err := cph.Check(ctx)
+	pkg, err := ph.Check(ctx)
 	if err != nil {
 		return nil, err
 	}
-	ph, err := pkg.File(f.URI())
+	pgh, err := pkg.File(f.URI())
 	if err != nil {
 		return nil, err
 	}
-	file, m, _, err := ph.Cached()
+	file, m, _, err := pgh.Cached()
 	if err != nil {
 		return nil, err
 	}
diff --git a/internal/lsp/source/symbols.go b/internal/lsp/source/symbols.go
index c812e6e..0124b6f 100644
--- a/internal/lsp/source/symbols.go
+++ b/internal/lsp/source/symbols.go
@@ -19,23 +19,23 @@
 	defer done()
 
 	fh := snapshot.Handle(ctx, f)
-	cphs, err := snapshot.PackageHandles(ctx, fh)
+	phs, err := snapshot.PackageHandles(ctx, fh)
 	if err != nil {
 		return nil, err
 	}
-	cph, err := NarrowestCheckPackageHandle(cphs)
+	ph, err := NarrowestCheckPackageHandle(phs)
 	if err != nil {
 		return nil, err
 	}
-	pkg, err := cph.Check(ctx)
+	pkg, err := ph.Check(ctx)
 	if err != nil {
 		return nil, err
 	}
-	ph, err := pkg.File(f.URI())
+	pgh, err := pkg.File(f.URI())
 	if err != nil {
 		return nil, err
 	}
-	file, m, _, err := ph.Cached()
+	file, m, _, err := pgh.Cached()
 	if err != nil {
 		return nil, err
 	}
diff --git a/internal/lsp/source/util.go b/internal/lsp/source/util.go
index e6accf4..6ff1f5d 100644
--- a/internal/lsp/source/util.go
+++ b/internal/lsp/source/util.go
@@ -70,7 +70,7 @@
 // By "narrowest" package, we mean the package with the fewest number of files
 // that includes the given file. This solves the problem of test variants,
 // as the test will have more files than the non-test package.
-func NarrowestCheckPackageHandle(handles []CheckPackageHandle) (CheckPackageHandle, error) {
+func NarrowestCheckPackageHandle(handles []PackageHandle) (PackageHandle, error) {
 	if len(handles) < 1 {
 		return nil, errors.Errorf("no CheckPackageHandles")
 	}
@@ -90,7 +90,7 @@
 //
 // This is useful for something like diagnostics, where we'd prefer to offer diagnostics
 // for as many files as possible.
-func WidestCheckPackageHandle(handles []CheckPackageHandle) (CheckPackageHandle, error) {
+func WidestCheckPackageHandle(handles []PackageHandle) (PackageHandle, error) {
 	if len(handles) < 1 {
 		return nil, errors.Errorf("no CheckPackageHandles")
 	}
diff --git a/internal/lsp/source/view.go b/internal/lsp/source/view.go
index ba7a15d..56e2419 100644
--- a/internal/lsp/source/view.go
+++ b/internal/lsp/source/view.go
@@ -34,11 +34,11 @@
 	FindAnalysisError(ctx context.Context, pkgID, analyzerName, msg string, rng protocol.Range) (*Error, error)
 
 	// PackageHandle returns the CheckPackageHandle for the given package ID.
-	PackageHandle(ctx context.Context, id string) (CheckPackageHandle, error)
+	PackageHandle(ctx context.Context, id string) (PackageHandle, error)
 
 	// PackageHandles returns the CheckPackageHandles for the packages
 	// that this file belongs to.
-	PackageHandles(ctx context.Context, fh FileHandle) ([]CheckPackageHandle, error)
+	PackageHandles(ctx context.Context, fh FileHandle) ([]PackageHandle, error)
 
 	// GetActiveReverseDeps returns the active files belonging to the reverse
 	// dependencies of this file's package.
@@ -52,13 +52,13 @@
 	KnownPackages(ctx context.Context) []Package
 }
 
-// CheckPackageHandle represents a handle to a specific version of a package.
+// PackageHandle represents a handle to a specific version of a package.
 // It is uniquely defined by the file handles that make up the package.
-type CheckPackageHandle interface {
+type PackageHandle interface {
 	// ID returns the ID of the package associated with the CheckPackageHandle.
 	ID() string
 
-	// ParseGoHandle returns a ParseGoHandle for which to get the package.
+	// CompiledGoFiles returns the ParseGoHandles composing the package.
 	CompiledGoFiles() []ParseGoHandle
 
 	// Check returns the type-checked Package for the CheckPackageHandle.
@@ -140,7 +140,7 @@
 // A session may have many active views at any given time.
 type Session interface {
 	// NewView creates a new View and returns it.
-	NewView(ctx context.Context, name string, folder span.URI, options Options) (View, []CheckPackageHandle, error)
+	NewView(ctx context.Context, name string, folder span.URI, options Options) (View, []PackageHandle, error)
 
 	// Cache returns the cache that created this session.
 	Cache() Cache
diff --git a/internal/lsp/watched_files.go b/internal/lsp/watched_files.go
index 7571279..d708bd0 100644
--- a/internal/lsp/watched_files.go
+++ b/internal/lsp/watched_files.go
@@ -44,12 +44,12 @@
 				}
 				snapshot := view.Snapshot()
 				fh := snapshot.Handle(ctx, f)
-				cphs, err := snapshot.PackageHandles(ctx, fh)
+				phs, err := snapshot.PackageHandles(ctx, fh)
 				if err != nil {
 					log.Error(ctx, "didChangeWatchedFiles: CheckPackageHandles", err, telemetry.File)
 					continue
 				}
-				cph, err := source.WidestCheckPackageHandle(cphs)
+				ph, err := source.WidestCheckPackageHandle(phs)
 				if err != nil {
 					log.Error(ctx, "didChangeWatchedFiles: WidestCheckPackageHandle", err, telemetry.File)
 					continue
@@ -57,11 +57,11 @@
 				// Find a different file in the same package we can use to trigger diagnostics.
 				// TODO(rstambler): Allow diagnostics to be called per-package to avoid this.
 				var otherFile source.File
-				for _, ph := range cph.CompiledGoFiles() {
-					if ph.File().Identity().URI == f.URI() {
+				for _, pgh := range ph.CompiledGoFiles() {
+					if pgh.File().Identity().URI == f.URI() {
 						continue
 					}
-					if f := view.FindFile(ctx, ph.File().Identity().URI); f != nil && s.session.IsOpen(f.URI()) {
+					if f := view.FindFile(ctx, pgh.File().Identity().URI); f != nil && s.session.IsOpen(f.URI()) {
 						otherFile = f
 						break
 					}
diff --git a/internal/lsp/workspace.go b/internal/lsp/workspace.go
index 9ade18a..87e6bb9 100644
--- a/internal/lsp/workspace.go
+++ b/internal/lsp/workspace.go
@@ -26,7 +26,7 @@
 	return nil
 }
 
-func (s *Server) addView(ctx context.Context, name string, uri span.URI) (source.View, []source.CheckPackageHandle, error) {
+func (s *Server) addView(ctx context.Context, name string, uri span.URI) (source.View, []source.PackageHandle, error) {
 	s.stateMu.Lock()
 	state := s.state
 	s.stateMu.Unlock()