mirror of https://github.com/golang/go.git
34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
// Copyright 2022 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package cache
|
|
|
|
import "golang.org/x/tools/internal/span"
|
|
|
|
// A metadataGraph holds information about a transtively closed import graph of
|
|
// Go packages, as obtained from go/packages.
|
|
//
|
|
// Currently a new metadata graph is created for each snapshot.
|
|
// TODO(rfindley): make this type immutable, so that it may be shared across
|
|
// snapshots.
|
|
type metadataGraph struct {
|
|
// ids maps file URIs to package IDs. A single file may belong to multiple
|
|
// packages due to tests packages.
|
|
ids map[span.URI][]PackageID
|
|
|
|
// metadata maps package IDs to their associated metadata.
|
|
metadata map[PackageID]*KnownMetadata
|
|
|
|
// importedBy maps package IDs to the list of packages that import them.
|
|
importedBy map[PackageID][]PackageID
|
|
}
|
|
|
|
func NewMetadataGraph() *metadataGraph {
|
|
return &metadataGraph{
|
|
ids: make(map[span.URI][]PackageID),
|
|
metadata: make(map[PackageID]*KnownMetadata),
|
|
importedBy: make(map[PackageID][]PackageID),
|
|
}
|
|
}
|