8f79e833a8
Review: https://jetbrains.team/p/kt/reviews/6753 All redundant I managed to find, of course. Why: I'm going to process all reflect dependencies in the next commits. Cleanup reflect dependency before processing. They are redundant because: 1. if `compileOnly` then compilation didn't break after dropping the dependency 2. if `test*` then tests didn't break after dropping the dependency. 3. `analysis/analysis-api-fir/analysis-api-fir-generator/build.gradle.kts` `compiler/fir/checkers/checkers-component-generator/build.gradle.kts` Drop `implementation(project(":kotlin-reflect-api"))` because the module already depends on `implementation(project(":kotlin-reflect"))` 4. `compiler/daemon/daemon-client/build.gradle.kts`. Drop `runtimeOnly` because after dropping `compileOnly` compilation didn't break (so `runtimeOnly` looks suspicious). Less safe than 1-3
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