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

Full support for "desugared" lambdas #523

Open
3 of 5 tasks
skylot opened this issue Mar 27, 2019 · 0 comments
Open
3 of 5 tasks

Full support for "desugared" lambdas #523

skylot opened this issue Mar 27, 2019 · 0 comments
Labels
Core Issues in jadx-core module new feature
Milestone

Comments

@skylot
Copy link
Owner

skylot commented Mar 27, 2019

New d8 android compiler allows to use Java 8 lambdas, but to make it work on old Android versions d8 convert (desugar) lambdas to synthetic classes and methods.
This issue continues work on lambda inlining started in #467.
Known issues:

  • Lambda classes inlined
  • Some lambda classes used by INSTANCE static field
  • Not all arguments inlined and synthetic fields in inlined classes not removed
  • lambda$* methods must be inlined
  • lambdas initialized at fields declaration (with anonymous class as a field type)

Note: Inlining Kotlin lambdas change code semantic by removing extend of kotlin.jvm.internal.Lambda. To disable such inlines use flag --no-inline-kotlin-lambda in jadx-cli and option Allow to inline Kotlin Lambdas in jadx-gui.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Core Issues in jadx-core module new feature
Projects
None yet
Development

No branches or pull requests

1 participant