Description
The api checker checks that we don't change our APIs in a backward-incompatible way.
Generics introduced the constraint comparable
which denotes the set of all types which are strictly comparable. An API may define an exported type T
which may be strictly comparable (see #56548 for terminology) and such a type T
may successfully be used as type argument for comparable
type parameters elsewhere.
It's possible to change T
without visible API change so that it's not strictly comparable anymore. For instance, given
// T is strictly comparable
type T struct {
/* exported and unexported fields which are all strictly comparable */
}
one can add a new, unexported
field that is not strictly comparable
// T is not strictly comparable anymore
type T struct {
/* exported and unexported fields which are all strictly comparable */
unexported any // not strictly comparable
}
The visible API has not changed but T
is not not strictly comparable anymore. This may prevent it's use elsewhere.
The api checker should treat such changes as API changes.
Marking for 1.20 as it would be a useful check and could be added late in the cycle.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status