diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/VarianceChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/VarianceChecker.kt index 341e0340734..970c7fb2256 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/VarianceChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/VarianceChecker.kt @@ -71,9 +71,13 @@ class VarianceCheckerCore( if (klass is KtClass) { if (!checkClassHeader(klass)) return false } - for (member in klass.declarations) { + for (member in klass.declarations + klass.getPrimaryConstructorParameters()) { member as? KtCallableDeclaration ?: continue - val descriptor = context.get(BindingContext.DECLARATION_TO_DESCRIPTOR, member) as? CallableMemberDescriptor ?: continue + val descriptor = when (member) { + is KtParameter -> context.get(BindingContext.PRIMARY_CONSTRUCTOR_PARAMETER, member) + is KtCallableDeclaration -> context.get(BindingContext.DECLARATION_TO_DESCRIPTOR, member) + else -> null + } as? CallableMemberDescriptor ?: continue if (!checkMember(member, descriptor)) return false } return true diff --git a/idea/testData/inspections/addVarianceModifier/test.kt b/idea/testData/inspections/addVarianceModifier/test.kt index 7c34367a60b..12b0cdde047 100644 --- a/idea/testData/inspections/addVarianceModifier/test.kt +++ b/idea/testData/inspections/addVarianceModifier/test.kt @@ -21,4 +21,8 @@ abstract class AbstractOut { abstract class AbstractIn(private val foo: T) { fun bar(arg: T) = foo == arg } -interface Empty \ No newline at end of file +interface Empty + +abstract class AbstractInv(var foo: T) + +class InvUser(val user: AbstractInv) \ No newline at end of file