Package satisfy
Overview ▹
Index ▹
type Constraint ¶
A Constraint records the fact that the RHS type does and must satisify the LHS type, which is an interface. The names are suggestive of an assignment statement LHS = RHS.
type Constraint struct { LHS, RHS types.Type }
type Finder ¶
A Finder inspects the type-checked ASTs of Go packages and accumulates the set of type constraints (x, y) such that x is assignable to y, y is an interface, and both x and y have methods.
In other words, it returns the subset of the "implements" relation that is checked during compilation of a package. Refactoring tools will need to preserve at least this part of the relation to ensure continued compilation.
type Finder struct {
Result map[Constraint]bool
// contains filtered or unexported fields
}
func (*Finder) Find ¶
func (f *Finder) Find(info *types.Info, files []*ast.File)
Find inspects a single package, populating Result with its pairs of constrained types.
The result is non-canonical and thus may contain duplicates (but this tends to preserves names of interface types better).
The package must be free of type errors, and info.{Defs,Uses,Selections,Types} must have been populated by the type-checker.