typelevel / typelevel-scalafix

Scalafix rules for Typelevel projects
Apache License 2.0
21 stars 6 forks source link

Try to warn on `Resource` leak #76

Open BalmungSan opened 1 year ago

BalmungSan commented 1 year ago

Since I don't know much about scalafix not sure how hard, or even impossible, this will be... But, it would be great to warn / error if someone tries to leak a Resource using pure or delay inside use; which is a somewhat common beginner mistake.

Maybe a best effort that tries to catch common variations like ra.use(a => a.pure[F]) or ra.use(IO.apply) can be enough? Another idea would be to warn if use returns an F[A] rather than some F[B] (meaning the same type of the Resource), since on the surface it seems that would never be a good idea; but I may be being too naive.

armanbilge commented 1 year ago

Another idea would be to warn if use returns an F[A] rather than some F[B] (meaning the same type of the Resource)

FWIW I really like this idea. Whereas a "pure" based fix can probably be implemented as a syntactic rule, inspecting the inferred types will require a semantic rule.