[ULC] Fix NPE on generating data class ctor parameters
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user