[lombok] Skip generation with AccessLevel.NONE
This commit is contained in:
committed by
TeamCityServer
parent
be4a518a25
commit
9ebce7849c
@@ -22,7 +22,7 @@ Features support:
|
||||
- [ ] lombok.copyableAnnotations
|
||||
- [ ] Copy annotations
|
||||
- [x] Strip defined prefixes - in config and @Accessors
|
||||
- [ ] Skip generation with AccessLevel.NONE
|
||||
- [x] Skip generation with AccessLevel.NONE
|
||||
- [x] Strip 'is' prefix for boolean fields
|
||||
|
||||
[~] [@With](https://projectlombok.org/features/With)
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ class LombokSyntheticJavaPartsProvider(private val config: LombokConfig) : Synth
|
||||
listOf(
|
||||
GetterProcessor(config),
|
||||
SetterProcessor(config),
|
||||
WithProcessor(config),
|
||||
WithProcessor(),
|
||||
NoArgsConstructorProcessor(),
|
||||
AllArgsConstructorProcessor(),
|
||||
RequiredArgsConstructorProcessor()
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.lombok.config
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.java.JavaVisibilities
|
||||
import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
|
||||
|
||||
|
||||
enum class AccessLevel {
|
||||
PUBLIC, MODULE, PROTECTED, PACKAGE, PRIVATE,
|
||||
|
||||
/** Represents not generating anything or the complete lack of a method. */
|
||||
NONE;
|
||||
|
||||
fun toDescriptorVisibility(): DescriptorVisibility = toDescriptorVisibility(this)
|
||||
|
||||
companion object {
|
||||
fun toDescriptorVisibility(v: AccessLevel): DescriptorVisibility {
|
||||
val visibility = when (v) {
|
||||
PUBLIC -> Visibilities.Public
|
||||
PROTECTED -> Visibilities.Protected
|
||||
PRIVATE -> Visibilities.Private
|
||||
PACKAGE -> JavaVisibilities.PackageVisibility
|
||||
MODULE -> Visibilities.Internal
|
||||
NONE -> Visibilities.Private
|
||||
}
|
||||
return JavaDescriptorVisibilities.toDescriptorVisibility(visibility)
|
||||
}
|
||||
}
|
||||
}
|
||||
+6
-6
@@ -83,35 +83,35 @@ data class Accessors(
|
||||
}
|
||||
}
|
||||
|
||||
data class Getter(val visibility: DescriptorVisibility = DescriptorVisibilities.PUBLIC) {
|
||||
data class Getter(val visibility: AccessLevel = AccessLevel.PUBLIC) {
|
||||
companion object : AnnotationCompanion<Getter>() {
|
||||
override val name: FqName = LombokNames.GETTER
|
||||
|
||||
override fun extract(annotation: AnnotationDescriptor): Getter =
|
||||
Getter(
|
||||
visibility = getVisibility(annotation)
|
||||
visibility = getAccessLevel(annotation)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
data class Setter(val visibility: DescriptorVisibility = DescriptorVisibilities.PUBLIC) {
|
||||
data class Setter(val visibility: AccessLevel = AccessLevel.PUBLIC) {
|
||||
companion object : AnnotationCompanion<Setter>() {
|
||||
override val name: FqName = LombokNames.SETTER
|
||||
|
||||
override fun extract(annotation: AnnotationDescriptor): Setter =
|
||||
Setter(
|
||||
visibility = getVisibility(annotation)
|
||||
visibility = getAccessLevel(annotation)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
data class With(val visibility: DescriptorVisibility) {
|
||||
data class With(val visibility: AccessLevel = AccessLevel.PUBLIC) {
|
||||
companion object : AnnotationCompanion<With>() {
|
||||
override val name: FqName = LombokNames.WITH
|
||||
|
||||
override fun extract(annotation: AnnotationDescriptor): With =
|
||||
With(
|
||||
visibility = getVisibility(annotation)
|
||||
visibility = getAccessLevel(annotation)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -36,6 +36,8 @@ class GetterProcessor(private val config: LombokConfig) : Processor {
|
||||
getter: Getter,
|
||||
globalAccessors: Accessors
|
||||
): SimpleFunctionDescriptor? {
|
||||
if (getter.visibility == AccessLevel.NONE) return null
|
||||
|
||||
val accessors = Accessors.getIfAnnotated(field, config) ?: globalAccessors
|
||||
return field.toPropertyName(accessors)?.let { propertyName ->
|
||||
val functionName =
|
||||
@@ -49,7 +51,7 @@ class GetterProcessor(private val config: LombokConfig) : Processor {
|
||||
Name.identifier(functionName),
|
||||
emptyList(),
|
||||
field.returnType,
|
||||
visibility = getter.visibility
|
||||
visibility = getter.visibility.toDescriptorVisibility()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+4
-5
@@ -7,10 +7,7 @@ package org.jetbrains.kotlin.lombok.processor
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
||||
import org.jetbrains.kotlin.lombok.config.Accessors
|
||||
import org.jetbrains.kotlin.lombok.config.Data
|
||||
import org.jetbrains.kotlin.lombok.config.LombokConfig
|
||||
import org.jetbrains.kotlin.lombok.config.Setter
|
||||
import org.jetbrains.kotlin.lombok.config.*
|
||||
import org.jetbrains.kotlin.lombok.utils.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||
@@ -37,6 +34,8 @@ class SetterProcessor(private val config: LombokConfig) : Processor {
|
||||
getter: Setter,
|
||||
globalAccessors: Accessors
|
||||
): SimpleFunctionDescriptor? {
|
||||
if (getter.visibility == AccessLevel.NONE) return null
|
||||
|
||||
val accessors = Accessors.getIfAnnotated(field, config) ?: globalAccessors
|
||||
return field.toPropertyName(accessors)?.let { propertyName ->
|
||||
val functionName =
|
||||
@@ -49,7 +48,7 @@ class SetterProcessor(private val config: LombokConfig) : Processor {
|
||||
Name.identifier(functionName),
|
||||
listOf(ValueParameter(field.name, field.type)),
|
||||
returnType,
|
||||
visibility = getter.visibility
|
||||
visibility = getter.visibility.toDescriptorVisibility()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+4
-3
@@ -9,12 +9,12 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
||||
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
|
||||
import org.jetbrains.kotlin.lombok.config.LombokConfig
|
||||
import org.jetbrains.kotlin.lombok.config.AccessLevel
|
||||
import org.jetbrains.kotlin.lombok.config.With
|
||||
import org.jetbrains.kotlin.lombok.utils.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
class WithProcessor(private val config: LombokConfig) : Processor {
|
||||
class WithProcessor : Processor {
|
||||
override fun contribute(classDescriptor: ClassDescriptor, jClass: JavaClassImpl): Parts {
|
||||
|
||||
val clWith = With.getOrNull(classDescriptor)
|
||||
@@ -32,6 +32,7 @@ class WithProcessor(private val config: LombokConfig) : Processor {
|
||||
field: PropertyDescriptor,
|
||||
with: With
|
||||
): SimpleFunctionDescriptor? {
|
||||
if (with.visibility == AccessLevel.NONE) return null
|
||||
|
||||
val functionName = "with" + toPropertyNameCapitalized(field.name.identifier)
|
||||
|
||||
@@ -39,7 +40,7 @@ class WithProcessor(private val config: LombokConfig) : Processor {
|
||||
Name.identifier(functionName),
|
||||
listOf(ValueParameter(field.name, field.type)),
|
||||
classDescriptor.defaultType,
|
||||
visibility = with.visibility
|
||||
visibility = with.visibility.toDescriptorVisibility()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
+7
-14
@@ -5,25 +5,18 @@
|
||||
|
||||
package org.jetbrains.kotlin.lombok.utils
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
|
||||
import org.jetbrains.kotlin.descriptors.DescriptorVisibility
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.java.JavaVisibilities
|
||||
import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
|
||||
import org.jetbrains.kotlin.lombok.config.AccessLevel
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.constants.*
|
||||
|
||||
fun getVisibility(annotation: AnnotationDescriptor, field: String = "value"): DescriptorVisibility {
|
||||
val value = annotation.getStringArgument(field) ?: "PUBLIC"
|
||||
val visibility = when (value) {
|
||||
"PUBLIC" -> Visibilities.Public
|
||||
"PROTECTED" -> Visibilities.Protected
|
||||
"PRIVATE" -> Visibilities.Private
|
||||
"PACKAGE" -> JavaVisibilities.PackageVisibility
|
||||
else -> Visibilities.Public
|
||||
}
|
||||
return JavaDescriptorVisibilities.toDescriptorVisibility(visibility)
|
||||
fun getVisibility(annotation: AnnotationDescriptor, field: String = "value"): DescriptorVisibility =
|
||||
getAccessLevel(annotation, field).toDescriptorVisibility()
|
||||
|
||||
fun getAccessLevel(annotation: AnnotationDescriptor, field: String = "value"): AccessLevel {
|
||||
val value = annotation.getStringArgument(field) ?: return AccessLevel.PUBLIC
|
||||
return AccessLevel.valueOf(value)
|
||||
}
|
||||
|
||||
fun AnnotationDescriptor.getStringArgument(argumentName: String): String? {
|
||||
|
||||
@@ -12,9 +12,12 @@ public class GetterTest {
|
||||
|
||||
@Getter private Boolean boxedBoolean;
|
||||
|
||||
@Getter(AccessLevel.NONE) private Boolean invisible;
|
||||
|
||||
void test() {
|
||||
getAge();
|
||||
isPrimitiveBoolean();
|
||||
// getInvisible();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -38,6 +41,8 @@ class Test {
|
||||
//shouldn't be accesible from here
|
||||
// obj.getName()
|
||||
|
||||
// obj.getInvisible()
|
||||
|
||||
OverridenGetterTest().usage()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user