- 
                Notifications
    You must be signed in to change notification settings 
- Fork 110
Open
Labels
Priority: MediumMedium priorityMedium prioritySubsystem: PluginsAnything concerning the plugins system or plugin codeAnything concerning the plugins system or plugin codeSubsystem: Plugins/KotlinAnything specifically concerning the Kotlin pluginAnything specifically concerning the Kotlin pluginSubsystem: Statement StructureAnything concerning how statements are structured in a methodAnything concerning how statements are structured in a methodSubsystem: VariablesAnything concerning variables, types, assignments, and castingAnything concerning variables, types, assignments, and castingSubsystem: WritingAnything concerning how expressions are writtenAnything concerning how expressions are writtenType: Tracking IssueTracks multiple problems in an issueTracks multiple problems in an issue
Description
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
- Field declarations (Kotlin property decompilation #275)
-  data classsupport (flag indicated via 8b8c86d)
-  annotation classsupport (6ca6edb)
- Primary constructors (Class, method, and constructor declarations #307)
- Other constructors (Class, method, and constructor declarations #307)
-  extends/implementsclauses (8b8c86d)
- Anonymous classes
-  Annotation arrays should use [](6ca6edb)
-  Other explicit arrays should use arrayOfor the equivalent primitive type
- All known-to-have-generic types must specify generics
- Higher level functions not based on SAM interfaces
- Top-level declarations (8e2283e)
- Type aliases
- Nullable types in generics (type creation via 0a4b157)
Method fixes
- Remove unnecessary semicolons (Delegate semicolons to plugins when possible #471)
-  Remove newfrom constructor calls
- Destructuring declarations
- String interpolation
- Smart Casts
-  Receiver types (should decompile as thisor asthis@...)
- SAM lambda decompilation
- Non-SAM lambda decompilation
-  forloops andifconditions on ranges (Most backing work on this done in Handle Kotlin's statements and their frequent sugar #472)-  repeat(Handle Kotlin's statements and their frequent sugar #472)
-  rangeTo(Handle Kotlin's statements and their frequent sugar #472)
-  untiland later KotlinrangeUntil(Handle Kotlin's statements and their frequent sugar #472, recognized but not decompiled to this)
-  downTo(Handle Kotlin's statements and their frequent sugar #472)
-  step
 
-  
- Infix functions
- Operator functions
-  tailrecfunctions
-  whenstatements (Handle Kotlin's statements and their frequent sugar #472, partial)
- Inline uninlining
AraCodersAraCodersjs6pak, mantikafasi, TymanWasTaken, TheKodeToad, alikindsys and 2 more
Metadata
Metadata
Assignees
Labels
Priority: MediumMedium priorityMedium prioritySubsystem: PluginsAnything concerning the plugins system or plugin codeAnything concerning the plugins system or plugin codeSubsystem: Plugins/KotlinAnything specifically concerning the Kotlin pluginAnything specifically concerning the Kotlin pluginSubsystem: Statement StructureAnything concerning how statements are structured in a methodAnything concerning how statements are structured in a methodSubsystem: VariablesAnything concerning variables, types, assignments, and castingAnything concerning variables, types, assignments, and castingSubsystem: WritingAnything concerning how expressions are writtenAnything concerning how expressions are writtenType: Tracking IssueTracks multiple problems in an issueTracks multiple problems in an issue