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

Big Kotlin Work List #262

Open
7 of 36 tasks
sschr15 opened this issue Apr 16, 2023 · 2 comments
Open
7 of 36 tasks

Big Kotlin Work List #262

sschr15 opened this issue Apr 16, 2023 · 2 comments
Assignees
Labels
Priority: Medium Medium priority Subsystem: Plugins/Kotlin Anything specifically concerning the Kotlin plugin Subsystem: Plugins Anything concerning the plugins system or plugin code Subsystem: Statement Structure Anything concerning how statements are structured in a method Subsystem: Variables Anything concerning variables, types, assignments, and casting Subsystem: Writing Anything concerning how expressions are written Type: Tracking Issue Tracks multiple problems in an issue

Comments

@sschr15
Copy link
Member

sschr15 commented Apr 16, 2023

A bunch of things to get Kotlin to be (mostly) decompiling Kotlin and not a Kotlin-Java hybrid, split into a few main categories.

Technical Backend

  • Publish Kotlin metadata to Kotlin-targeting code (partially in 4891bff)
  • Kotlin exprent equivalents
  • Other special Kotlin construct handling code

Non-method fixes

Method fixes

  • Remove unnecessary semicolons (which should be all of them if decompiling reasonably)
  • Remove new from constructor calls
  • Destructuring declarations
  • String interpolation
  • Smart Casts
  • Receiver types (should decompile as this or as this@...)
  • SAM lambda decompilation
  • Non-SAM lambda decompilation
  • for loops and if conditions on ranges (Experimental work done in https://github.com/Vineflower/vineflower/tree/feature/kotlin/loop-changes)
    • repeat
    • rangeTo
    • until and later Kotlin rangeUntil
    • downTo
    • step
  • Infix functions
  • Operator functions
  • tailrec functions
  • when statements
  • Inline uninlining
@jaskarth jaskarth added Subsystem: Statement Structure Anything concerning how statements are structured in a method Subsystem: Writing Anything concerning how expressions are written Priority: High High priority Subsystem: Variables Anything concerning variables, types, assignments, and casting Type: Tracking Issue Tracks multiple problems in an issue labels Apr 16, 2023
@Kroppeb
Copy link
Contributor

Kroppeb commented Apr 27, 2023

lateinit var

@LlamaLad7
Copy link

Inline function call decompilation would be cool. It should be possible from the source map.

@jaskarth jaskarth added Priority: Medium Medium priority and removed Priority: High High priority labels Sep 4, 2023
@sschr15 sschr15 added the Subsystem: Plugins Anything concerning the plugins system or plugin code label Sep 5, 2023
@zml2008 zml2008 added the Subsystem: Plugins/Kotlin Anything specifically concerning the Kotlin plugin label Aug 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: Medium Medium priority Subsystem: Plugins/Kotlin Anything specifically concerning the Kotlin plugin Subsystem: Plugins Anything concerning the plugins system or plugin code Subsystem: Statement Structure Anything concerning how statements are structured in a method Subsystem: Variables Anything concerning variables, types, assignments, and casting Subsystem: Writing Anything concerning how expressions are written Type: Tracking Issue Tracks multiple problems in an issue
Projects
None yet
Development

No branches or pull requests

5 participants