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:
-2
@@ -25,6 +25,4 @@ class CompilerDeserializationConfiguration(languageVersionSettings: LanguageVers
|
||||
override val isJvmPackageNameSupported = languageVersionSettings.supportsFeature(LanguageFeature.JvmPackageName)
|
||||
|
||||
override val readDeserializedContracts: Boolean = languageVersionSettings.supportsFeature(LanguageFeature.ReadDeserializedContracts)
|
||||
|
||||
override val supportEnumEntries: Boolean = languageVersionSettings.supportsFeature(LanguageFeature.EnumEntries)
|
||||
}
|
||||
|
||||
@@ -481,10 +481,10 @@ class PSICallResolver(
|
||||
if (name != StandardNames.ENUM_ENTRIES || languageVersionSettings.supportsFeature(LanguageFeature.EnumEntries)) {
|
||||
return result
|
||||
}
|
||||
return result.filter {
|
||||
it !is PropertyDescriptor || !it.isSynthesized ||
|
||||
it.dispatchReceiverParameter != null || it.extensionReceiverParameter != null ||
|
||||
(it.containingDeclaration as? ClassDescriptor)?.kind != ClassKind.ENUM_CLASS
|
||||
return result.filterNot {
|
||||
it is PropertyDescriptor && it.isSynthesized &&
|
||||
it.dispatchReceiverParameter == null && it.extensionReceiverParameter == null &&
|
||||
(it.containingDeclaration as? ClassDescriptor)?.kind == ClassKind.ENUM_CLASS
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -134,7 +134,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
this.kind = classLikeInfo.getClassKind();
|
||||
this.staticScope = kind == ClassKind.ENUM_CLASS ?
|
||||
new StaticScopeForKotlinEnum(
|
||||
storageManager, this, c.getLanguageVersionSettings().supportsFeature(LanguageFeature.EnumEntries)
|
||||
storageManager, this
|
||||
) : MemberScope.Empty.INSTANCE;
|
||||
|
||||
this.typeConstructor = new LazyClassTypeConstructor();
|
||||
|
||||
Reference in New Issue
Block a user