diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightClass.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightClass.kt index e368530dba6..c870ac26212 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightClass.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightClass.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.load.java.JvmAbi import org.jetbrains.kotlin.load.kotlin.TypeMappingMode import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.DelegationResolver import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME @@ -334,12 +335,19 @@ open class KtUltraLightClass(classOrObject: KtClassOrObject, internal val suppor private fun addMethodsFromDataClass(result: MutableList) { if (!classOrObject.hasModifier(DATA_KEYWORD)) return + val ktClass = classOrObject as? KtClass ?: return val descriptor = classOrObject.resolve() as? ClassDescriptor ?: return val bindingContext = classOrObject.analyze() // Force resolving data class members set descriptor.unsubstitutedMemberScope.getContributedDescriptors() + val areCtorParametersAreAnalyzed = ktClass.primaryConstructorParameters + .filter { it.hasValOrVar() } + .all { bindingContext.get(BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER, it) != null } + + if (!areCtorParametersAreAnalyzed) return + object : DataClassMethodGenerator(classOrObject, bindingContext) { private fun addFunction(descriptor: FunctionDescriptor, declarationForOrigin: KtDeclaration? = null) { result.add(createGeneratedMethodFromDescriptor(descriptor, JvmDeclarationOriginKind.OTHER, declarationForOrigin))