FIR: support callable symbols in dependencies provider
This breaks mppFakeOverrides test because of bug in FIR fake overrides
This commit is contained in:
+11
-5
@@ -17,11 +17,6 @@ import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
class FirDependenciesSymbolProviderImpl(val session: FirSession) : AbstractFirSymbolProvider() {
|
||||
override fun getCallableSymbols(callableId: CallableId): List<ConeCallableSymbol> {
|
||||
// TODO
|
||||
return emptyList()
|
||||
}
|
||||
|
||||
private val dependencyProviders by lazy {
|
||||
val moduleInfo = session.moduleInfo ?: return@lazy emptyList()
|
||||
moduleInfo.dependenciesWithoutSelf().mapNotNull {
|
||||
@@ -29,6 +24,17 @@ class FirDependenciesSymbolProviderImpl(val session: FirSession) : AbstractFirSy
|
||||
}.toList()
|
||||
}
|
||||
|
||||
override fun getCallableSymbols(callableId: CallableId): List<ConeCallableSymbol> {
|
||||
return callableCache.lookupCacheOrCalculate(callableId) {
|
||||
for (provider in dependencyProviders) {
|
||||
provider.getCallableSymbols(callableId).let {
|
||||
if (it.isNotEmpty()) return@lookupCacheOrCalculate it
|
||||
}
|
||||
}
|
||||
emptyList()
|
||||
}.orEmpty()
|
||||
}
|
||||
|
||||
override fun getClassLikeSymbolByFqName(classId: ClassId): ConeClassLikeSymbol? {
|
||||
return classCache.lookupCacheOrCalculate(classId) {
|
||||
for (provider in dependencyProviders) {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
@R|java/lang/annotation/Documented|() @R|javax/annotation/meta/TypeQualifierNickname|() @R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.NEVER>#()) @R|java/lang/annotation/Retention|(<Strange Java enum value: java/lang/annotation/RetentionPolicy.RUNTIME>#()) public abstract annotation class MyNullable : R|java/lang/annotation/Annotation| {
|
||||
@R|java/lang/annotation/Documented|() @R|javax/annotation/meta/TypeQualifierNickname|() @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) public abstract annotation class MyNullable : R|java/lang/annotation/Annotation| {
|
||||
}
|
||||
public open class NonNullNever : R|java/lang/Object| {
|
||||
@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.NEVER>#()) public open property field(var): R|ft<kotlin/String, kotlin/String>|
|
||||
public get(): R|ft<kotlin/String, kotlin/String>|
|
||||
public set(value: R|ft<kotlin/String, kotlin/String>|): kotlin/Unit
|
||||
@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) public open property field(var): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
public get(): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
public set(value: R|ft<kotlin/String?, kotlin/String?>|?): kotlin/Unit
|
||||
|
||||
@R|MyNullable|() public open operator function foo(@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.NEVER>#()) x: R|ft<kotlin/String, kotlin/String>|, @R|MyNullable|() y: R|ft<kotlin/CharSequence, kotlin/CharSequence>|): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|MyNullable|() public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) x: R|ft<kotlin/String?, kotlin/String?>|?, @R|MyNullable|() y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
public open class Strange : R|java/lang/Object| {
|
||||
@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.UNKNOWN>#()) public open property field(var): R|ft<kotlin/String, kotlin/String>|
|
||||
public get(): R|ft<kotlin/String, kotlin/String>|
|
||||
public set(value: R|ft<kotlin/String, kotlin/String>|): kotlin/Unit
|
||||
@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.UNKNOWN|()) public open property field(var): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public get(): R|ft<kotlin/String, kotlin/String?>|!
|
||||
public set(value: R|ft<kotlin/String, kotlin/String?>|!): kotlin/Unit
|
||||
|
||||
@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.MAYBE>#()) public open operator function foo(@R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.ALWAYS>#()) x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/Nonnull|(<Strange Java enum value: javax/annotation/meta/When.NEVER>#()) y: R|ft<kotlin/CharSequence, kotlin/CharSequence>|): R|ft<kotlin/String, kotlin/String>|
|
||||
@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.MAYBE|()) public open operator function foo(@R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.ALWAYS|()) x: R|ft<kotlin/String, kotlin/String>|, @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) y: R|ft<kotlin/CharSequence?, kotlin/CharSequence?>|?): R|ft<kotlin/String?, kotlin/String?>|?
|
||||
|
||||
@R|javax/annotation/Nonnull|() public open operator function bar(): R|ft<kotlin/String, kotlin/String>|
|
||||
|
||||
|
||||
@@ -15,4 +15,6 @@ public final enum class StaticMembersInEnum : R|java/lang/Enum<test/StaticMember
|
||||
|
||||
public open static operator function valueOf(x: R|kotlin/Int|): R|kotlin/Unit|
|
||||
|
||||
public open static operator function valueOf(<anonymous Java parameter>: R|ft<java/lang/Class<ft<T, T?>>, java/lang/Class<ft<T, T?>>?>|!, <anonymous Java parameter>: R|ft<kotlin/String, kotlin/String?>|!): R|ft<T, T?>|!
|
||||
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ FILE: jvm.kt
|
||||
|
||||
public final function test(): R|kotlin/Unit| {
|
||||
R|FakeOverride</A.foo: R|kotlin/Unit|>|(String())
|
||||
R|FakeOverride</A.bar: R|T|>|(String())
|
||||
<Ambiguity: bar, [/C.bar, /A.bar]>#(String())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -27,8 +27,8 @@ FILE: jvm.kt
|
||||
public constructor(): super<R|Wrapper|>()
|
||||
|
||||
public final function use(): R|kotlin/Unit| {
|
||||
<Unresolved name: list>#.<Unresolved name: get>#(Int(1))
|
||||
<Unresolved name: list>#.<Unresolved name: set>#(Int(2), Int(3))
|
||||
R|/Wrapper.list|.<Unresolved name: get>#(Int(1))
|
||||
R|/Wrapper.list|.<Unresolved name: set>#(Int(2), Int(3))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user