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
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
class FirDependenciesSymbolProviderImpl(val session: FirSession) : AbstractFirSymbolProvider() {
|
class FirDependenciesSymbolProviderImpl(val session: FirSession) : AbstractFirSymbolProvider() {
|
||||||
override fun getCallableSymbols(callableId: CallableId): List<ConeCallableSymbol> {
|
|
||||||
// TODO
|
|
||||||
return emptyList()
|
|
||||||
}
|
|
||||||
|
|
||||||
private val dependencyProviders by lazy {
|
private val dependencyProviders by lazy {
|
||||||
val moduleInfo = session.moduleInfo ?: return@lazy emptyList()
|
val moduleInfo = session.moduleInfo ?: return@lazy emptyList()
|
||||||
moduleInfo.dependenciesWithoutSelf().mapNotNull {
|
moduleInfo.dependenciesWithoutSelf().mapNotNull {
|
||||||
@@ -29,6 +24,17 @@ class FirDependenciesSymbolProviderImpl(val session: FirSession) : AbstractFirSy
|
|||||||
}.toList()
|
}.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? {
|
override fun getClassLikeSymbolByFqName(classId: ClassId): ConeClassLikeSymbol? {
|
||||||
return classCache.lookupCacheOrCalculate(classId) {
|
return classCache.lookupCacheOrCalculate(classId) {
|
||||||
for (provider in dependencyProviders) {
|
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| {
|
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>|
|
@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 get(): R|ft<kotlin/String?, kotlin/String?>|?
|
||||||
public set(value: R|ft<kotlin/String, kotlin/String>|): kotlin/Unit
|
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| {
|
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>|
|
@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 get(): R|ft<kotlin/String, kotlin/String?>|!
|
||||||
public set(value: R|ft<kotlin/String, kotlin/String>|): kotlin/Unit
|
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>|
|
@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(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| {
|
public final function test(): R|kotlin/Unit| {
|
||||||
R|FakeOverride</A.foo: R|kotlin/Unit|>|(String())
|
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 constructor(): super<R|Wrapper|>()
|
||||||
|
|
||||||
public final function use(): R|kotlin/Unit| {
|
public final function use(): R|kotlin/Unit| {
|
||||||
<Unresolved name: list>#.<Unresolved name: get>#(Int(1))
|
R|/Wrapper.list|.<Unresolved name: get>#(Int(1))
|
||||||
<Unresolved name: list>#.<Unresolved name: set>#(Int(2), Int(3))
|
R|/Wrapper.list|.<Unresolved name: set>#(Int(2), Int(3))
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user