ndmitchell / weeder

Detect dead exports or package imports
BSD 3-Clause "New" or "Revised" License
124 stars 8 forks source link

Detect definitions used but not reexported #48

Open pjljvandelaar opened 5 years ago

pjljvandelaar commented 5 years ago

When working in a large project, I don't want to duplicate the dependencies of files/packages I use. In other words, I would like my abstraction to be complete: no other imports are needed to work with it.

For example, assume a package defines X. Another package defines a Producer and Consumer of X (and thus depends on the package defining X). A third package, which wants to use the Producer and Consumer in a decoupled way needs to store the results in buffer of type X. When the package of the Producer and Consumer does NOT re-export X, the third package must also depends on the package defining X. I consider this dependency unwanted: you must be able to use an interface as is, i.e., in a context where Producer is defined also X must be defined.

However, I was unable to find any tool, including weeder, that performs such a check!

So my question: can weeder check that all necessary definitions are include in the export of a file / package?

ndmitchell commented 5 years ago

I don't know if the .hi files contain sufficient information or not - someone needs to verify that.

pjljvandelaar commented 5 years ago

About the title: For me Detect definitions used but not reexported sounds more understandable than Detect definitions used by not reexported

ndmitchell commented 5 years ago

@pjljvandelaar the title was a typo :)

ndmitchell commented 4 years ago

Weeder 2.0 is being developed at https://github.com/ocharles/weeder so I suggest you go see if that fixes your issues.