Fix false-positive by-name implicit warnings with -Wmacros#10781
Merged
Conversation
lrytz
reviewed
May 21, 2024
| t match { | ||
| case Apply(coercion, _) if t.isInstanceOf[ApplyImplicitView] => | ||
| coercion.symbol.paramLists match { | ||
| case (p :: Nil) :: _ if p.isByNameParam => refchecksWarning(t.pos, s"Block result was adapted via implicit conversion (${coercion.symbol}) taking a by-name parameter", WarningCategory.LintBynameImplicit) |
Member
There was a problem hiding this comment.
Suggested change
| case (p :: Nil) :: _ if p.isByNameParam => refchecksWarning(t.pos, s"Block result was adapted via implicit conversion (${coercion.symbol}) taking a by-name parameter", WarningCategory.LintBynameImplicit) | |
| case (p :: Nil) :: _ if p.isByNameParam => refchecksWarning(t.pos, s"Block result was adapted via implicit conversion (${coercion.symbol}) taking a by-name parameter; statements are not evaluated eagerly", WarningCategory.LintBynameImplicit) |
or something like that?
Contributor
Author
There was a problem hiding this comment.
Or just the opposite. This is the opposite where only the result expression is adapted. I'll upgrade both messages!
9e4b360 to
baa66b2
Compare
Contributor
Author
|
I pushed messages for the two cases that are less cryptic. The OP confusing case is that if a block is converted, the conversion applies only to the result expression. This matters if the method parameter is by-name. The related confusing case is that if the method is overloaded, the conversion applies to the whole block, the opposite of the first case. |
-Wmacros
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Only warn about a block arg passed into the by-name param of an implicit method if it was an implicit view.
Fixes scala/bug#12072
This implements lrytz's suggestion on the ticket.
scala/bug#12072 (comment)
Confirmed that the Shapeless 2 solutions to the guide exercises now compile cleanly.
Since Shapeless is not relying on conversions, this PR ignores the ticket title as a red herring.