Experimental Kotlin plugin to support Lombok annotations in the same compilation unit with kotlin
Features support:
[~] Config files
- [x] Basic support - single config file. Need to be specified explicitly by plugin config
- [ ] Import other config files
- [ ] Config files discovery and bubbling
[~] @Getter/@Setter
- [x] Basic support
- [x] Class-level
- [x] @Accessors config support: chain and fluent
- [~] Config support
- [x] lombok.getter.noIsPrefix
- [x] lombok.accessors.fluent
- [x] lombok.accessors.chain
- [x] 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
- [x] Strip defined prefixes - in config and @Accessors
- [x] Skip generation with AccessLevel.NONE
- [x] Strip 'is' prefix for boolean fields
[~] @With
- [x] Basic support
- [ ] Copy annotations (probably don't need it, because annotations don't affect members' resolution)
[x] @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
- [x] @NoArgsConstructor
- [x] @AllArgsConstructor
- [x] @RequiredArgsConstructor
[x] @Data
[~] @Value
- [x] generate getters and constructors
- [ ] make class final, make fields private and final
[ ] @Builder - will not be supported in the current prototype.
Other todos:
- [x] Generic classes
- [x] Actually run compiled code
- [x] Don't generate members that already exist (if having a duplicate is a problem)
- [x] Gradle integration (as subplugin or just a way to enable lombok support)
- [x] Gradle plugin integration test
- [x] Maven integration (as subplugin or just a way to enable lombok support)
- [x] Nullability from annotations. Check if it is inherited from variable definition