Files
kotlin-fork/plugins/lombok
Brian Norman 2ab1e712f8 [Lombok] Constructor can have only non-final or not initialized fields
When using the AllArgsConstructor annotation (directly or via
meta-annotation), only fields that are not final or not initialized
should be added as arguments. Previously, all fields were being included
regardless of modality or initialization, which is not consistent with
the behavior of Lombok.

^KT-54054 Fixed
2024-01-12 14:55:24 +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