K1/K2: add Enum.entries unconditionally and filter them out in tower
Before this commit, we added Enum.entries only in case when LanguageFeature.EnumEntries was ON (with an exception in K1/Java case). In this commit we add Enum.entries unconditionally, and in case the language feature is OFF we filter them out during tower resolve.
This commit is contained in:
+12
-1
@@ -5,6 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.resolve.calls.tower
|
||||
|
||||
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||
import org.jetbrains.kotlin.builtins.StandardNames
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.declarations.ContextReceiverGroup
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
@@ -207,7 +210,15 @@ class MemberScopeTowerLevel(
|
||||
return processMembers(info, processor) { consumer ->
|
||||
withMemberCallLookup(lookupTracker, info) { lookupCtx ->
|
||||
lookupTracker?.recordCallLookup(info, dispatchReceiverValue.type)
|
||||
this.processPropertiesByName(info.name) {
|
||||
this.processPropertiesByName(info.name) processor@{
|
||||
if (info.name == StandardNames.ENUM_ENTRIES &&
|
||||
!session.languageVersionSettings.supportsFeature(LanguageFeature.EnumEntries) &&
|
||||
it is FirPropertySymbol &&
|
||||
it.callableId.callableName == StandardNames.ENUM_ENTRIES &&
|
||||
it.source?.kind == KtFakeSourceElementKind.EnumGeneratedDeclaration
|
||||
) {
|
||||
return@processor
|
||||
}
|
||||
lookupCtx.recordCallableMemberLookup(it)
|
||||
consumer(it)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user