FIR: refactoring, move class Java class building to separate fun
This commit is contained in:
@@ -186,7 +186,33 @@ class JavaSymbolProvider(
|
|||||||
javaTypeParameterStack.addStack(parentStack)
|
javaTypeParameterStack.addStack(parentStack)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val firJavaClass = buildJavaClass {
|
parentClassTypeParameterStackCache[classSymbol] = javaTypeParameterStack
|
||||||
|
val firJavaClass = createFirJavaClass(javaClass, classSymbol, outerClassId, parentClassSymbol, classId, javaTypeParameterStack)
|
||||||
|
parentClassTypeParameterStackCache.remove(classSymbol)
|
||||||
|
firJavaClass.convertSuperTypes(javaClass, javaTypeParameterStack)
|
||||||
|
firJavaClass.addAnnotationsFrom(this@JavaSymbolProvider.session, javaClass, javaTypeParameterStack)
|
||||||
|
return firJavaClass
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun FirJavaClass.convertSuperTypes(
|
||||||
|
javaClass: JavaClass,
|
||||||
|
javaTypeParameterStack: JavaTypeParameterStack
|
||||||
|
) {
|
||||||
|
replaceSuperTypeRefs(
|
||||||
|
javaClass.supertypes.map { supertype ->
|
||||||
|
supertype.toFirResolvedTypeRef(session, javaTypeParameterStack, isForSupertypes = true, forTypeParameterBounds = false)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun createFirJavaClass(
|
||||||
|
javaClass: JavaClass,
|
||||||
|
classSymbol: FirRegularClassSymbol,
|
||||||
|
outerClassId: ClassId?,
|
||||||
|
parentClassSymbol: FirRegularClassSymbol?,
|
||||||
|
classId: ClassId,
|
||||||
|
javaTypeParameterStack: JavaTypeParameterStack,
|
||||||
|
): FirJavaClass = buildJavaClass {
|
||||||
source = (javaClass as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
|
source = (javaClass as? JavaElementImpl<*>)?.psi?.toFirPsiSourceElement()
|
||||||
session = this@JavaSymbolProvider.session
|
session = this@JavaSymbolProvider.session
|
||||||
symbol = classSymbol
|
symbol = classSymbol
|
||||||
@@ -197,7 +223,6 @@ class JavaSymbolProvider(
|
|||||||
this.isTopLevel = outerClassId == null
|
this.isTopLevel = outerClassId == null
|
||||||
isStatic = javaClass.isStatic
|
isStatic = javaClass.isStatic
|
||||||
this.javaTypeParameterStack = javaTypeParameterStack
|
this.javaTypeParameterStack = javaTypeParameterStack
|
||||||
parentClassTypeParameterStackCache[classSymbol] = javaTypeParameterStack
|
|
||||||
existingNestedClassifierNames += javaClass.innerClassNames
|
existingNestedClassifierNames += javaClass.innerClassNames
|
||||||
scopeProvider = this@JavaSymbolProvider.scopeProvider
|
scopeProvider = this@JavaSymbolProvider.scopeProvider
|
||||||
val classTypeParameters = javaClass.typeParameters.convertTypeParameters(javaTypeParameterStack)
|
val classTypeParameters = javaClass.typeParameters.convertTypeParameters(javaTypeParameterStack)
|
||||||
@@ -278,17 +303,6 @@ class JavaSymbolProvider(
|
|||||||
declarations +=
|
declarations +=
|
||||||
buildConstructorForAnnotationClass(constructorId, this, valueParametersForAnnotationConstructor)
|
buildConstructorForAnnotationClass(constructorId, this, valueParametersForAnnotationConstructor)
|
||||||
}
|
}
|
||||||
parentClassTypeParameterStackCache.remove(classSymbol)
|
|
||||||
}
|
|
||||||
firJavaClass.replaceSuperTypeRefs(
|
|
||||||
javaClass.supertypes.map { supertype ->
|
|
||||||
supertype.toFirResolvedTypeRef(
|
|
||||||
this@JavaSymbolProvider.session, javaTypeParameterStack, isForSupertypes = true, forTypeParameterBounds = false
|
|
||||||
)
|
|
||||||
}
|
|
||||||
)
|
|
||||||
firJavaClass.addAnnotationsFrom(this@JavaSymbolProvider.session, javaClass, javaTypeParameterStack)
|
|
||||||
return firJavaClass
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun convertJavaFieldToFir(
|
private fun convertJavaFieldToFir(
|
||||||
|
|||||||
Reference in New Issue
Block a user