Fir2IrLazyClass: generate enum values() / valueOf() properly
This commit is contained in:
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.resolve.buildUseSiteMemberScope
|
||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrClassSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.isNullableAny
|
||||
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
@@ -131,12 +132,20 @@ class Fir2IrLazyClass(
|
||||
is FirSimpleFunction -> {
|
||||
if (declaration.name !in processedNames) {
|
||||
processedNames += declaration.name
|
||||
scope.processFunctionsByName(declaration.name) {
|
||||
if (it is FirNamedFunctionSymbol && it.callableId.classId == fir.symbol.classId) {
|
||||
if (it.isAbstractMethodOfAny()) {
|
||||
return@processFunctionsByName
|
||||
if (fir.classKind == ClassKind.ENUM_CLASS && declaration.isStatic &&
|
||||
declaration.returnTypeRef is FirResolvedTypeRef
|
||||
) {
|
||||
// Handle values() / valueOf() separately
|
||||
// TODO: handle other static functions / properties properly
|
||||
result += declarationStorage.getIrFunctionSymbol(declaration.symbol).owner
|
||||
} else {
|
||||
scope.processFunctionsByName(declaration.name) {
|
||||
if (it is FirNamedFunctionSymbol && it.callableId.classId == fir.symbol.classId) {
|
||||
if (it.isAbstractMethodOfAny()) {
|
||||
return@processFunctionsByName
|
||||
}
|
||||
result += declarationStorage.getIrFunctionSymbol(it).owner
|
||||
}
|
||||
result += declarationStorage.getIrFunctionSymbol(it).owner
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user