You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Warn on inline given aliases with functions as RHS (#16499)
```scala
inline given a: Conversion[String, Item] = Item(_)
```
will now produce this warning:
```
5 | inline given a: Conversion[String, Item] = Item(_)
| ^^^^^^^
|An inline given alias with a function value as right-hand side can significantly increase
|generated code size. You should either drop the `inline` or rewrite the given with an
|explicit `apply` method.
|----------------------------------------------------------------------------
| Explanation (enabled by `-explain`)
|- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| A function value on the right-hand side of an inline given alias expands to
| an anonymous class. Each application of the inline given will then create a
| fresh copy of that class, which can increase code size in surprising ways.
| For that reason, functions are discouraged as right hand sides of inline given aliases.
| You should either drop `inline` or rewrite to an explicit `apply` method. E.g.
|
| inline given Conversion[A, B] = x => x.toB
|
| should be re-formulated as
|
| inline given Conversion[A, B] with
| def apply(x: A) = x.toB
|
```
Fixes#16497
Alternative to #16498
0 commit comments