[FIR] Report properties from java methods in Fir2IrLazyClass.

This shows up in annotation instantiation tests where we need
to make sure to generate a property on the annotation implementation
class for such properties.
This commit is contained in:
Mads Ager
2021-11-03 14:30:15 +01:00
committed by TeamCityServer
parent b79ca7d7df
commit 604f217360
2 changed files with 11 additions and 4 deletions
@@ -7,8 +7,10 @@ package org.jetbrains.kotlin.fir.lazy
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.fir.backend.*
import org.jetbrains.kotlin.fir.backend.declareThisReceiverParameter
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
import org.jetbrains.kotlin.fir.declarations.FirProperty
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.dispatchReceiverClassOrNull
import org.jetbrains.kotlin.fir.scopes.unsubstitutedScope
@@ -160,6 +162,13 @@ class Fir2IrLazyClass(
// Handle values() / valueOf() separately
// TODO: handle other static functions / properties properly
result += declarationStorage.getIrFunctionSymbol(declaration.symbol).owner
} else if (fir.classKind == ClassKind.ANNOTATION_CLASS && declaration.origin == FirDeclarationOrigin.Java) {
// Java annotation values are exposed as properties.
scope.processPropertiesByName(declaration.name) {
if (it is FirPropertySymbol && it.dispatchReceiverClassOrNull() == fir.symbol.toLookupTag()) {
result += declarationStorage.getIrPropertySymbol(it).owner as IrProperty
}
}
} else {
scope.processFunctionsByName(declaration.name) {
if (it.dispatchReceiverClassOrNull() == fir.symbol.toLookupTag()) {
@@ -1,5 +1,3 @@
// Fir2IrLazyClass does not handle methods from java dependencies in declarations.
// IGNORE_BACKEND_FIR: JVM_IR
// TARGET_BACKEND: JVM_IR
// WITH_RUNTIME