-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Breaking changes in dependencies of a package can transitively cause breaking changes in that package.
Consider a dependency foo which defines:
data A = MkAAnd the package bar itself uses it in a definition:
bar :: A
bar = MkAThen print-api -p bar should report:
bar :: ABut now imagine foo releases a new version which changes the definition of A to:
data A = MkA | MkBThen print-api -b bar will probably still report:
bar :: ABut this is a different A, so it misses a breaking change!
I haven't been able to test this due to #40, but I think this is an important issue.
One way to prevent this is to also print out all versions of dependencies that are used and make sure those don't change. But sometimes versions of dependencies must be updated at the same time.
For example, I wanted to compare Cabal-3.12.0.0 to Cabal-3.14.0.0, but those depend on Cabal-syntax-3.12.* and Cabal-syntax-3.14.* respectively. So I can't be sure I'm catching all breaking changes (and #14 causes many false positives).
I think the only way to do this properly is to recursively compare all the changed dependencies for API changes.