scala3 icon indicating copy to clipboard operation
scala3 copied to clipboard

`-Wunused:locals` gives false positives for some calls to transparent inline functions

Open matil019 opened this issue 2 years ago • 3 comments

Compiler version

3.3.0

Minimized code

//> using option -Wunused:locals
//> using scala 3.3.0

class PartiallyApplied[A] {
  transparent inline def func[B](): Nothing = ???
}

def call[A] = new PartiallyApplied[A]

def good = call[Int].func[String]()
def bad = { call[Int].func[String]() }

Output

-- Warning: /home/...snip.../Foo.scala:11:34 -------------------
11 |def bad = { call[Int].func[String]() }
   |                                  ^
   |                                  unused local definition
1 warning found

Expectation

No warnings are issued.

Other

This affects Monocle's macros such as GenLens.

I'm not certain whether or not my example can be minimized further. Interestingly, calling a transparent inline function directly doesn't trigger any warnings.

//> using option -Wunused:locals
//> using scala 3.3.0

transparent inline def func2[A]() = ???

def good2a = func2[Int]()
def good2b = { func2[Int]() }

matil019 avatar Jun 02 '23 10:06 matil019

looks like my own lens macro suffers the same issue, and it's a bit annoying to switch off warnings where ever i construct a lens. is there a workaround i can try maybe?

ritschwumm avatar Aug 12 '23 15:08 ritschwumm

any news on this? the problem still seems to persist in 3.4.0-RC1

ritschwumm avatar Dec 21 '23 00:12 ritschwumm

It has to do with the tree representation Inlined; it must learn to ignore the bindings that are warning.

som-snytt avatar Oct 09 '24 13:10 som-snytt

looks like my own lens macro suffers the same issue

Also faced this issue in https://github.com/optics-dev/Monocle/issues/1484

jtjeferreira avatar Dec 12 '24 22:12 jtjeferreira

@jtjeferreira thanks I just returned to my PR to fix unused bugs, so I'll try out your example. Sorry I missed last release cycle. Assigned myself as a reminder.

som-snytt avatar Dec 12 '24 23:12 som-snytt