type go.pact.im/x/plumb/internal/discover.Provider
92 uses
go.pact.im/x/plumb/internal/discover (current package)
discover.go#L101: func Analyze(pkgs []*Package, destPath, outputBase string) ([]*Provider, *diag.Error) {
discover.go#L102: var providers []*Provider
discover.go#L141: func scanFile(pkg *Package, file *ast.File) ([]*Provider, *diag.Error) {
discover.go#L142: var out []*Provider
discover.go#L145: var ps []*Provider
discover.go#L258: func scanFunc(pkg *Package, fd *ast.FuncDecl) ([]*Provider, *diag.Error) {
discover.go#L290: var out []*Provider
discover.go#L292: p := &Provider{
discover.go#L339: func scanGenDecl(pkg *Package, gd *ast.GenDecl) ([]*Provider, *diag.Error) {
discover.go#L361: var out []*Provider
discover.go#L381: func scanValueSpec(pkg *Package, gd *ast.GenDecl, s *ast.ValueSpec) ([]*Provider, *diag.Error) {
discover.go#L395: func scanVar(pkg *Package, s *ast.ValueSpec, names []string) ([]*Provider, *diag.Error) {
discover.go#L412: var out []*Provider
discover.go#L424: out = append(out, &Provider{
discover.go#L437: func scanConversion(pkg *Package, s *ast.ValueSpec, ident *ast.Ident, names []string) ([]*Provider, *diag.Error) {
discover.go#L488: var out []*Provider
discover.go#L490: out = append(out, &Provider{
discover.go#L503: func scanConst(pkg *Package, s *ast.ValueSpec, names []string) ([]*Provider, *diag.Error) {
discover.go#L507: var out []*Provider
discover.go#L522: out = append(out, &Provider{
discover.go#L535: func scanTypeSpec(pkg *Package, gd *ast.GenDecl, s *ast.TypeSpec) ([]*Provider, *diag.Error) {
discover.go#L536: var out []*Provider
discover.go#L572: var members []*Provider
discover.go#L622: func structProviders(pkg *Package, s *ast.TypeSpec, tn *types.TypeName, names []string) ([]*Provider, *diag.Error) {
discover.go#L637: var out []*Provider
discover.go#L639: out = append(out, &Provider{
discover.go#L656: func scanStructFields(pkg *Package, st *ast.StructType, owner types.Type) ([]*Provider, *diag.Error) {
discover.go#L657: var out []*Provider
discover.go#L690: out = append(out, &Provider{
discover.go#L710: func scanInterfaceMethods(pkg *Package, it *ast.InterfaceType, owner types.Type) ([]*Provider, *diag.Error) {
discover.go#L711: var out []*Provider
discover.go#L736: out = append(out, &Provider{
provider.go#L70: type Provider struct {
provider.go#L91: func (p *Provider) Generic() bool {
go.pact.im/x/plumb/internal/emit
report.go#L69: func kindLabel(p *discover.Provider) string {
go.pact.im/x/plumb/internal/gen
gen.go#L65: bySet := map[string][]*discover.Provider{}
go.pact.im/x/plumb/internal/solve
checks.go#L98: func crossBoundarySymbol(p *discover.Provider) types.Object {
instance.go#L50: Prov *discover.Provider // the source provider this instantiates
instance.go#L87: func instantiate(p *discover.Provider, ctxt *types.Context, targs []types.Type) (in *Instance, err *diag.Error, miss error) {
instance.go#L156: func methodSignature(p *discover.Provider, ctxt *types.Context, targs []types.Type) (recvType types.Type, sig *types.Signature, _ error) {
instance.go#L185: func fieldTypes(p *discover.Provider, ctxt *types.Context, targs []types.Type) (types.Type, types.Type, error) {
instance.go#L211: func structFields(p *discover.Provider, ctxt *types.Context, targs []types.Type) (declared types.Type, fields []*types.Var, _ error) {
instance.go#L245: func classifyResults(p *discover.Provider, in *Instance, sig *types.Signature) *diag.Error {
joint.go#L70: func (s *solver) jointClusters(p *discover.Provider) []map[*types.TypeParam]types.Type {
joint.go#L162: func (s *solver) jointClusterDone(p *discover.Provider, bind map[*types.TypeParam]types.Type) bool {
joint.go#L167: func (s *solver) markJointClusterDone(p *discover.Provider, bind map[*types.TypeParam]types.Type) {
joint.go#L183: func jointBindKey(p *discover.Provider, bind map[*types.TypeParam]types.Type) *types.Tuple {
lift.go#L18: func (s *solver) liftAll(p *discover.Provider) []types.Type {
lift.go#L37: func (s *solver) setLiftedConstraints(p *discover.Provider, targs []types.Type, fresh []int) {
lift.go#L54: func (s *solver) liftOne(orig *types.TypeParam, p *discover.Provider) *types.TypeParam {
revision.go#L37: func (s *solver) applyCommitment(p *discover.Provider, bind map[*types.TypeParam]types.Type) map[*types.TypeParam]types.Type {
revision.go#L56: func (s *solver) reviseOrSplit(p *discover.Provider, bind map[*types.TypeParam]types.Type) *diag.Error {
revision.go#L107: func (s *solver) unionRefused(p *discover.Provider, union map[*types.TypeParam]types.Type) bool {
revision.go#L112: func (s *solver) markUnionRefused(p *discover.Provider, union map[*types.TypeParam]types.Type) {
solve.go#L153: provs []*discover.Provider
solve.go#L160: anchors []*discover.Provider
solve.go#L161: resGen []*discover.Provider
solve.go#L167: done map[*discover.Provider]*gotypes.Set[*types.Tuple] // provider → set of instantiated type-arg lists (keyed by ListKey)
solve.go#L168: jointDone map[*discover.Provider]*gotypes.Set[*types.Tuple] // provider → set of joint-cluster pinnings (keyed by jointBindKey)
solve.go#L169: nearMissDone map[*discover.Provider]*gotypes.Set[*types.Tuple] // provider → set of bindings that failed to instantiate (constraint near-miss)
solve.go#L170: skel map[*discover.Provider]*Instance // provider → memoized own-params skeleton
solve.go#L171: resGenUsed map[*discover.Provider]bool
solve.go#L172: nearMiss map[*discover.Provider]error // template → the type-checker error a structural match failed to instantiate with
solve.go#L184: commitments map[*discover.Provider][]map[*types.TypeParam]types.Type
solve.go#L185: refusedUnions map[*discover.Provider]*gotypes.Set[*types.Tuple]
solve.go#L205: func Set(name string, provs []*discover.Provider, destPath, outputBase string, dest *DestInfo, ctxt *types.Context) (*Plan, *diag.Error) {
solve.go#L207: provs = slices.SortedStableFunc(slices.Values(provs), func(a, b *discover.Provider) int {
solve.go#L214: commitments := map[*discover.Provider][]map[*types.TypeParam]types.Type{}
solve.go#L215: refused := map[*discover.Provider]*gotypes.Set[*types.Tuple]{}
solve.go#L224: done: map[*discover.Provider]*gotypes.Set[*types.Tuple]{},
solve.go#L225: jointDone: map[*discover.Provider]*gotypes.Set[*types.Tuple]{},
solve.go#L226: nearMissDone: map[*discover.Provider]*gotypes.Set[*types.Tuple]{},
solve.go#L227: skel: map[*discover.Provider]*Instance{},
solve.go#L228: resGenUsed: map[*discover.Provider]bool{},
solve.go#L229: nearMiss: map[*discover.Provider]error{},
solve.go#L459: func (s *solver) skeleton(p *discover.Provider) *Instance {
solve.go#L486: func (s *solver) bindInstantiates(p *discover.Provider, bind map[*types.TypeParam]types.Type) bool {
solve.go#L515: func (s *solver) instantiateTemplate(p *discover.Provider, bind map[*types.TypeParam]types.Type) (bool, *diag.Error) {
solve.go#L578: func (s *solver) nearMissDoneAt(p *discover.Provider, bind map[*types.TypeParam]types.Type) bool {
solve.go#L583: func (s *solver) markNearMissDone(p *discover.Provider, bind map[*types.TypeParam]types.Type) {
solve.go#L596: func (s *solver) instanceDone(p *discover.Provider, targs []types.Type) bool {
solve.go#L601: func (s *solver) markInstanceDone(p *discover.Provider, targs []types.Type) {
solve.go#L674: func (s *solver) shadowedDemand(p *discover.Provider) (types.Type, *Instance, types.Type) {
solve.go#L701: func (s *solver) templateServes(p *discover.Provider, skel *Instance, params map[*types.TypeParam]bool, d types.Type) bool {
solve.go#L758: prov *discover.Provider
solve.go#L797: func (s *solver) viableProducers(d types.Type) (ps []*discover.Provider, matched bool) {
solve.go#L816: func ambiguousTemplatesFor(ps []*discover.Provider, d types.Type) *diag.Error {
solve.go#L817: slices.SortFunc(ps, func(a, b *discover.Provider) int { return diag.CmpPos(a.Pos, b.Pos) })
solve.go#L833: func ownParams(p *discover.Provider) []types.Type {
solve.go#L844: func paramSet(p *discover.Provider) map[*types.TypeParam]bool {
solve.go#L857: func (s *solver) coversPinnable(p *discover.Provider, bind map[*types.TypeParam]types.Type) bool {
solve.go#L884: return slices.MinFunc(s.provs, func(a, b *discover.Provider) int {