Add quickfix for usages of javaClass<T>() in annotations loaded from Java

This commit is contained in:
Denis Zharkov
2015-04-17 17:48:20 +03:00
parent 7325a459e5
commit cc9322fbdd
35 changed files with 444 additions and 10 deletions
@@ -33,6 +33,8 @@ import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.calls.model.ResolvedValueArgument
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
import org.jetbrains.kotlin.types.JetType
import org.jetbrains.kotlin.types.typeUtil.isArrayOfJavaLangClass
import org.jetbrains.kotlin.types.typeUtil.isJavaLangClass
public class JavaAnnotationCallChecker : CallChecker {
override fun <F : CallableDescriptor?> check(resolvedCall: ResolvedCall<F>, context: BasicCallResolutionContext) {
@@ -53,15 +55,7 @@ public class JavaAnnotationCallChecker : CallChecker {
}
}
private fun JetType.isJavaLangClassOrArray() = isJavaLangClass() ||
(KotlinBuiltIns.isArray(this) && getArguments().first().getType().isJavaLangClass())
private fun JetType.isJavaLangClass(): Boolean {
val classifier = getConstructor().getDeclarationDescriptor()
if (classifier !is ClassDescriptor) return false
return DescriptorUtils.isJavaLangClass(classifier)
}
private fun JetType.isJavaLangClassOrArray() = isJavaLangClass() || isArrayOfJavaLangClass()
private fun reportErrorsOnPositionedArguments(
resolvedCall: ResolvedCall<*>,