Files
kotlin-fork/plugins/lombok
Dmitriy Novozhilov 6783621eb0 [FIR] Change API for generating nested classes from plugins
`FirDeclarationGenerationExtension.generateClassLikeDeclaration` was split
  into two functions: one for generating top level classes, and one for
  nested classes. Such change reduces verbosity and error-proness of
  this extension and also allows to smoothly run plugins on local classes

^KT-55248 Fixed
2023-01-12 17:45:39 +00:00
..

Experimental Kotlin plugin to support Lombok annotations in the same compilation unit with kotlin

Features support:

[~] Config files

  • Basic support - single config file. Need to be specified explicitly by plugin config
  • Import other config files
  • Config files discovery and bubbling

[~] @Getter/@Setter

  • Basic support
  • Class-level
  • @Accessors config support: chain and fluent
  • [~] Config support
    • lombok.getter.noIsPrefix
    • lombok.accessors.fluent
    • lombok.accessors.chain
    • lombok.accessors.prefix
    • lombok.noArgsConstructor.extraPrivate (probably we don't need to support it - it is private after all)
    • lombok.copyableAnnotations (probably don't need it)
  • Copy annotations
  • Strip defined prefixes - in config and @Accessors
  • Skip generation with AccessLevel.NONE
  • Strip 'is' prefix for boolean fields

[~] @With

  • Basic support
  • Copy annotations (probably don't need it, because annotations don't affect members' resolution)

[x] @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor

  • @NoArgsConstructor
  • @AllArgsConstructor
  • @RequiredArgsConstructor

[x] @Data

[~] @Value

  • generate getters and constructors
  • make class final, make fields private and final

[ ] @Builder - will not be supported in the current prototype.

Other todos:

  • Generic classes
  • Actually run compiled code
  • Don't generate members that already exist (if having a duplicate is a problem)
  • Gradle integration (as subplugin or just a way to enable lombok support)
  • Gradle plugin integration test
  • Maven integration (as subplugin or just a way to enable lombok support)
  • Nullability from annotations. Check if it is inherited from variable definition