It looks like the type of the expression is now inferred to Any while in 2.13.14 it was inferred correctly. This triggers a compilation failure since I am using the compilation flags -Xfatal-warnings and -Xlint. Explicitly setting the type doesn’t fix the issue.
Since I got Wordle in two, I have time to try out your project, but it’s especially helpful to minimize, to isolate the behavior from the test framework and any macros.
Of course, it’s possible a macro is implicated.
Linking to C.I. output is less helpful than summarizing.
Thanks for helping. I am rather looking for a solution that doesn’t revolve around ignoring warning or disabling compilation flags.
What I observe is that if I declare: val dyingZArrow: ZArrow[Any, Any, String, Nothing]
Or if I put any other type beside Nothing as 3rd type parameter (which is what the compiler infers), then it happily compiles.
I don’t understand how this is not a false positive? What is problematic with this expression?
I should have mentioned that @nowarn takes a filter
@nowarn("cat=lint-infer-any")
On the (locked) ticket, I commented about the fully-annotated explicit expression that does not warn. There are type args to both the method and the typeclass.
I would like to understand. Did the heuristic update introduce some regressions or is the expression with inferred types considered unsafe by -Xlint? If unsafe would you mind explaining to the mortals ? How come -Xlint considers a broader type to be safer (Any >: Nothing and ZArrow[-I, -R, +E, +A] is covariant in E which is the type argument that I need to explicitly set to Any instead of Nothing which is the inferred type)?