Files

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