Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Warn on inline given aliases with functions as RHS #16499

Merged
merged 2 commits into from
Dec 15, 2022

Commits on Dec 10, 2022

  1. Warn on inline given aliases with functions as RHS

    ```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 scala#16497
    odersky committed Dec 10, 2022
    Configuration menu
    Copy the full SHA
    f749561 View commit details
    Browse the repository at this point in the history

Commits on Dec 14, 2022

  1. Update compiler/src/dotty/tools/dotc/reporting/messages.scala

    Co-authored-by: Guillaume Martres <[email protected]>
    odersky and smarter authored Dec 14, 2022
    Configuration menu
    Copy the full SHA
    8274b10 View commit details
    Browse the repository at this point in the history