[FE] Allow declare sealed class inheritors in different files in one module
#KT-13495
This commit is contained in:
committed by
TeamCityServer
parent
1a377069dd
commit
f5f1984a60
@@ -323,7 +323,8 @@ class FunctionDescriptorResolver(
|
||||
scope: LexicalScope,
|
||||
classDescriptor: ClassDescriptor,
|
||||
classElement: KtPureClassOrObject,
|
||||
trace: BindingTrace
|
||||
trace: BindingTrace,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
): ClassConstructorDescriptorImpl? {
|
||||
if (classDescriptor.kind == ClassKind.ENUM_ENTRY || !classElement.hasPrimaryConstructor()) return null
|
||||
return createConstructorDescriptor(
|
||||
@@ -333,7 +334,8 @@ class FunctionDescriptorResolver(
|
||||
classElement.primaryConstructorModifierList,
|
||||
classElement.primaryConstructor ?: classElement,
|
||||
classElement.primaryConstructorParameters,
|
||||
trace
|
||||
trace,
|
||||
languageVersionSettings
|
||||
)
|
||||
}
|
||||
|
||||
@@ -341,7 +343,8 @@ class FunctionDescriptorResolver(
|
||||
scope: LexicalScope,
|
||||
classDescriptor: ClassDescriptor,
|
||||
constructor: KtSecondaryConstructor,
|
||||
trace: BindingTrace
|
||||
trace: BindingTrace,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
): ClassConstructorDescriptorImpl {
|
||||
return createConstructorDescriptor(
|
||||
scope,
|
||||
@@ -350,7 +353,8 @@ class FunctionDescriptorResolver(
|
||||
constructor.modifierList,
|
||||
constructor,
|
||||
constructor.valueParameters,
|
||||
trace
|
||||
trace,
|
||||
languageVersionSettings
|
||||
)
|
||||
}
|
||||
|
||||
@@ -361,7 +365,8 @@ class FunctionDescriptorResolver(
|
||||
modifierList: KtModifierList?,
|
||||
declarationToTrace: KtPureElement,
|
||||
valueParameters: List<KtParameter>,
|
||||
trace: BindingTrace
|
||||
trace: BindingTrace,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
): ClassConstructorDescriptorImpl {
|
||||
val constructorDescriptor = ClassConstructorDescriptorImpl.create(
|
||||
classDescriptor,
|
||||
@@ -387,7 +392,7 @@ class FunctionDescriptorResolver(
|
||||
resolveValueParameters(constructorDescriptor, parameterScope, valueParameters, trace, null),
|
||||
resolveVisibilityFromModifiers(
|
||||
modifierList,
|
||||
DescriptorUtils.getDefaultConstructorVisibility(classDescriptor)
|
||||
DescriptorUtils.getDefaultConstructorVisibility(classDescriptor, languageVersionSettings.supportsFeature(LanguageFeature.FreedomForSealedClasses))
|
||||
)
|
||||
)
|
||||
constructor.returnType = classDescriptor.defaultType
|
||||
|
||||
+2
-2
@@ -488,7 +488,7 @@ open class LazyClassMemberScope(
|
||||
|
||||
if (DescriptorUtils.canHaveDeclaredConstructors(thisDescriptor) || hasPrimaryConstructor) {
|
||||
val constructor = c.functionDescriptorResolver.resolvePrimaryConstructorDescriptor(
|
||||
thisDescriptor.scopeForConstructorHeaderResolution, thisDescriptor, classOrObject, trace
|
||||
thisDescriptor.scopeForConstructorHeaderResolution, thisDescriptor, classOrObject, trace, c.languageVersionSettings
|
||||
)
|
||||
constructor ?: return null
|
||||
setDeferredReturnType(constructor)
|
||||
@@ -505,7 +505,7 @@ open class LazyClassMemberScope(
|
||||
|
||||
return classOrObject.secondaryConstructors.map { constructor ->
|
||||
val descriptor = c.functionDescriptorResolver.resolveSecondaryConstructorDescriptor(
|
||||
thisDescriptor.scopeForConstructorHeaderResolution, thisDescriptor, constructor, trace
|
||||
thisDescriptor.scopeForConstructorHeaderResolution, thisDescriptor, constructor, trace, c.languageVersionSettings
|
||||
)
|
||||
setDeferredReturnType(descriptor)
|
||||
descriptor
|
||||
|
||||
Reference in New Issue
Block a user