[Lombok] Add implementation of plugin for FIR
This commit is contained in:
committed by
teamcity
parent
e58e86932c
commit
a84ece7233
@@ -13,6 +13,8 @@ import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||
import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull
|
||||
import org.jetbrains.kotlin.fir.isNewPlaceForBodyGeneration
|
||||
import org.jetbrains.kotlin.fir.isSubstitutionOrIntersectionOverride
|
||||
import org.jetbrains.kotlin.fir.scopes.getDeclaredConstructors
|
||||
import org.jetbrains.kotlin.fir.scopes.impl.declaredMemberScope
|
||||
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
|
||||
@@ -8,8 +8,7 @@ package org.jetbrains.kotlin.fir.java
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||
import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter
|
||||
|
||||
internal class JavaTypeParameterStack {
|
||||
|
||||
class JavaTypeParameterStack : Iterable<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> {
|
||||
private val typeParameterMap = mutableMapOf<JavaTypeParameter, FirTypeParameterSymbol>()
|
||||
|
||||
fun addParameter(javaTypeParameter: JavaTypeParameter, symbol: FirTypeParameterSymbol) {
|
||||
@@ -25,6 +24,10 @@ internal class JavaTypeParameterStack {
|
||||
?: throw IllegalArgumentException("Cannot find Java type parameter $javaTypeParameter in stack")
|
||||
}
|
||||
|
||||
override operator fun iterator(): Iterator<Map.Entry<JavaTypeParameter, FirTypeParameterSymbol>> {
|
||||
return typeParameterMap.iterator()
|
||||
}
|
||||
|
||||
companion object {
|
||||
val EMPTY: JavaTypeParameterStack = JavaTypeParameterStack()
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ class FirJavaClass @FirImplementationDetail internal constructor(
|
||||
override val superTypeRefs: MutableList<FirTypeRef>,
|
||||
override val typeParameters: MutableList<FirTypeParameterRef>,
|
||||
internal val javaPackage: JavaPackage?,
|
||||
internal val javaTypeParameterStack: JavaTypeParameterStack,
|
||||
val javaTypeParameterStack: JavaTypeParameterStack,
|
||||
internal val existingNestedClassifierNames: List<Name>
|
||||
) : FirRegularClass() {
|
||||
override val hasLazyNestedClassifiers: Boolean get() = true
|
||||
|
||||
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.types.ConeSimpleKotlinType
|
||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.jvm.FirJavaTypeRef
|
||||
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.fir.visitors.transformInplace
|
||||
@@ -240,7 +239,7 @@ class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder,
|
||||
origin = javaOrigin(isFromSource),
|
||||
resolvePhase,
|
||||
attributes,
|
||||
returnTypeRef as FirJavaTypeRef,
|
||||
returnTypeRef,
|
||||
typeParameters,
|
||||
valueParameters,
|
||||
name,
|
||||
|
||||
+12
-4
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
private fun FirAnnotation.toAnnotationLookupTag(): ConeClassLikeLookupTag? =
|
||||
// this cast fails when we have generic-typed annotations @T
|
||||
@@ -159,10 +158,19 @@ fun FirAnnotation.findArgumentByName(name: Name): FirExpression? {
|
||||
return arguments.singleOrNull()
|
||||
}
|
||||
|
||||
fun FirAnnotation.getStringArgument(name: Name): String? =
|
||||
findArgumentByName(name)?.let { expression ->
|
||||
expression.safeAs<FirConstExpression<*>>()?.value as? String
|
||||
fun FirAnnotation.getBooleanArgument(name: Name): Boolean? = getPrimitiveArgumentValue(name)
|
||||
fun FirAnnotation.getStringArgument(name: Name): String? = getPrimitiveArgumentValue(name)
|
||||
fun FirAnnotation.getIntArgument(name: Name): Int? = getPrimitiveArgumentValue(name)
|
||||
fun FirAnnotation.getStringArrayArgument(name: Name): List<String>? {
|
||||
val argument = findArgumentByName(name) as? FirArrayOfCall ?: return null
|
||||
return argument.arguments.mapNotNull { (it as? FirConstExpression<*>)?.value as? String }
|
||||
}
|
||||
|
||||
private inline fun <reified T> FirAnnotation.getPrimitiveArgumentValue(name: Name): T? {
|
||||
return findArgumentByName(name)?.let { expression ->
|
||||
(expression as? FirConstExpression<*>)?.value as? T
|
||||
}
|
||||
}
|
||||
|
||||
fun FirAnnotationContainer.getJvmNameFromAnnotation(target: AnnotationUseSiteTarget? = null): String? {
|
||||
val annotationCalls = getAnnotationsByClassId(StandardClassIds.Annotations.JvmName)
|
||||
|
||||
-1
@@ -53,7 +53,6 @@ object FirGeneratedElementsValidator : FirDefaultVisitor<Unit, Any?>() {
|
||||
}
|
||||
|
||||
override fun visitTypeRef(typeRef: FirTypeRef, data: Any?) {
|
||||
require(typeRef is FirResolvedTypeRef)
|
||||
typeRef.acceptChildren(this, null)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user