[FIR] Code cleanup: get rid of FirClass.buildUseSiteMemberScope()

This commit is contained in:
Mikhail Glukhikh
2020-07-23 12:19:17 +03:00
parent 8bb5488a26
commit 17b289fa00
6 changed files with 37 additions and 45 deletions
@@ -15,50 +15,46 @@ import org.jetbrains.kotlin.fir.java.declarations.FirJavaConstructor
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
import org.jetbrains.kotlin.fir.java.declarations.FirJavaMethod
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.buildUseSiteMemberScope
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
fun renderJavaClass(renderer: FirRenderer, javaClass: FirJavaClass, session: FirSession) {
val memberScope = javaClass.buildUseSiteMemberScope(session, ScopeSession())
val memberScope = javaClass.unsubstitutedScope(session, ScopeSession())
val staticScope = javaClass.scopeProvider.getStaticScope(javaClass, session, ScopeSession())
if (memberScope == null && staticScope == null) {
javaClass.accept(renderer, null)
} else {
renderer.visitMemberDeclaration(javaClass)
renderer.renderSupertypes(javaClass)
renderer.renderInBraces {
val renderedDeclarations = mutableListOf<FirDeclaration>()
renderer.visitMemberDeclaration(javaClass)
renderer.renderSupertypes(javaClass)
renderer.renderInBraces {
val renderedDeclarations = mutableListOf<FirDeclaration>()
fun renderAndCache(symbol: FirCallableSymbol<*>) {
val enhanced = symbol.fir
if (enhanced !in renderedDeclarations) {
enhanced.accept(renderer, null)
renderer.newLine()
renderedDeclarations += enhanced
}
fun renderAndCache(symbol: FirCallableSymbol<*>) {
val enhanced = symbol.fir
if (enhanced !in renderedDeclarations) {
enhanced.accept(renderer, null)
renderer.newLine()
renderedDeclarations += enhanced
}
}
for (declaration in javaClass.declarations) {
if (declaration in renderedDeclarations) continue
for (declaration in javaClass.declarations) {
if (declaration in renderedDeclarations) continue
val scopeToUse =
if (declaration is FirCallableMemberDeclaration<*> && declaration.status.isStatic)
staticScope
else
memberScope
val scopeToUse =
if (declaration is FirCallableMemberDeclaration<*> && declaration.status.isStatic)
staticScope
else
memberScope
when (declaration) {
is FirJavaConstructor -> scopeToUse!!.processDeclaredConstructors(::renderAndCache)
is FirJavaMethod -> scopeToUse!!.processFunctionsByName(declaration.name, ::renderAndCache)
is FirJavaField -> scopeToUse!!.processPropertiesByName(declaration.name, ::renderAndCache)
is FirEnumEntry -> scopeToUse!!.processPropertiesByName(declaration.name, ::renderAndCache)
else -> {
declaration.accept(renderer, null)
renderer.newLine()
renderedDeclarations += declaration
}
when (declaration) {
is FirJavaConstructor -> scopeToUse!!.processDeclaredConstructors(::renderAndCache)
is FirJavaMethod -> scopeToUse!!.processFunctionsByName(declaration.name, ::renderAndCache)
is FirJavaField -> scopeToUse!!.processPropertiesByName(declaration.name, ::renderAndCache)
is FirEnumEntry -> scopeToUse!!.processPropertiesByName(declaration.name, ::renderAndCache)
else -> {
declaration.accept(renderer, null)
renderer.newLine()
renderedDeclarations += declaration
}
}
}