Report error on protected setter call from super's companion

#KT-12847 Fixed
This commit is contained in:
Alexander Udalov
2016-06-27 20:06:32 +03:00
parent 77bb691d4e
commit ff72348105
3 changed files with 17 additions and 1 deletions
@@ -17,7 +17,9 @@
package org.jetbrains.kotlin.resolve.jvm.checkers
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.annotations.hasJvmStaticAnnotation
@@ -29,7 +31,14 @@ import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
class ProtectedInSuperClassCompanionCallChecker : CallChecker {
override fun check(resolvedCall: ResolvedCall<*>, reportOn: PsiElement, context: CallCheckerContext) {
val targetDescriptor = resolvedCall.resultingDescriptor.original
check(resolvedCall.resultingDescriptor.original, reportOn, context)
}
override fun checkPropertyCall(descriptor: PropertyAccessorDescriptor, reportOn: PsiElement, context: CallCheckerContext) {
check(descriptor, reportOn, context)
}
private fun check(targetDescriptor: CallableDescriptor, reportOn: PsiElement, context: CallCheckerContext) {
// Protected non-JVM static
if (targetDescriptor.visibility != Visibilities.PROTECTED) return
if (targetDescriptor.hasJvmStaticAnnotation()) return