Allow data classes to inherit from other classes

#KT-10330 Fixed
This commit is contained in:
Alexander Udalov
2016-06-20 16:45:28 +03:00
parent 065c4e19ec
commit e68de436bb
9 changed files with 109 additions and 20 deletions
@@ -25,7 +25,8 @@ enum class LanguageFeature(val sinceVersion: LanguageVersion) {
LocalDelegatedProperties(KOTLIN_1_1),
TopLevelSealedInheritance(KOTLIN_1_1),
Coroutines(KOTLIN_1_1),
AdditionalBuiltInsMembers(KOTLIN_1_1)
AdditionalBuiltInsMembers(KOTLIN_1_1),
DataClassInheritance(KOTLIN_1_1),
;
companion object {
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.builtins.FunctionTypesKt;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.config.LanguageFeature;
import org.jetbrains.kotlin.config.LanguageFeatureSettings;
import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor;
@@ -475,7 +476,8 @@ public class BodyResolver {
trace.report(INTERFACE_WITH_SUPERCLASS.on(typeReference));
addSupertype = false;
}
else if (ktClassOrObject.hasModifier(KtTokens.DATA_KEYWORD)) {
else if (ktClassOrObject.hasModifier(KtTokens.DATA_KEYWORD) &&
!languageFeatureSettings.supportsFeature(LanguageFeature.DataClassInheritance)) {
trace.report(DATA_CLASS_CANNOT_HAVE_CLASS_SUPERTYPES.on(typeReference));
addSupertype = false;
}