summaryrefslogtreecommitdiffstats
path: root/dependencies/pkg/mod/golang.org/x/exp@v0.0.0-20220613132600-b0d781184e0d/cmd/gorelease/testdata/internalcompat/README.txt
blob: e3de7e553ba7a3c355aaa641678778ad4014f491 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Modules example.com/internalcompat/{a,b} are copies. One could be a fork
of the other. An external package p exposes a type from a package q
within the same module.

gorelease should not report differences between these packages. The types
are distinct, but they correspond (in apidiff terminology), which is the
important property when considering differences between modules.

There are three use cases to consider:

1. One module substitutes for the other via a `replace` directive.
   Only the replacement module is used, and the package paths are effectively
   identical, so the types are not distinct.
2. One module subsititutes for the other by rewriting `import` statements
   globally. All references to the original type become references to the
   new type, so there is no conflict.
3. One module substitutes for the other by rewriting some `import` statements
   but not others (for example, those within a specific consumer package).
   In this case, the types are distinct, and even if there are no changes,
   the types are not compatible.