[ULC] Fix NPE on generating data class ctor parameters

This commit is contained in:
Igor Yakovlev
2020-11-09 10:22:41 +03:00
parent f43899086a
commit 1ee0892f73
@@ -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<KtLightMethod>) {
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))