Add quickfix for usages of javaClass<T>() in annotations loaded from Java
This commit is contained in:
+3
-9
@@ -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<*>,
|
||||
|
||||
@@ -65,6 +65,9 @@ public class JetPsiFactory(private val project: Project) {
|
||||
return createProperty("val x = $text").getInitializer()!!
|
||||
}
|
||||
|
||||
public fun createClassLiteral(className: String): JetClassLiteralExpression =
|
||||
createExpression("$className::class") as JetClassLiteralExpression
|
||||
|
||||
public fun createCallArguments(text: String): JetValueArgumentList {
|
||||
val property = createProperty("val x = foo $text")
|
||||
return (property.getInitializer() as JetCallExpression).getValueArgumentList()!!
|
||||
|
||||
Reference in New Issue
Block a user