Drop loading Java annotation methods as functions
This commit is contained in:
-39
@@ -1,39 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.load.kotlin
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
|
||||
import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker
|
||||
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
||||
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
|
||||
public class JavaAnnotationMethodCallChecker : CallChecker {
|
||||
override fun <F : CallableDescriptor> check(resolvedCall: ResolvedCall<F>, context: BasicCallResolutionContext) {
|
||||
val descriptor = resolvedCall.getCandidateDescriptor().getOriginal()
|
||||
val containingDeclaration = descriptor.getContainingDeclaration()
|
||||
|
||||
if (containingDeclaration is JavaClassDescriptor &&
|
||||
containingDeclaration.getKind() == ClassKind.ANNOTATION_CLASS &&
|
||||
descriptor is JavaMethodDescriptor && descriptor.getKind().isReal()
|
||||
) {
|
||||
context.trace.report(ErrorsJvm.DEPRECATED_ANNOTATION_METHOD_CALL.on(resolvedCall.getCall().getCallElement()))
|
||||
}
|
||||
}
|
||||
}
|
||||
-1
@@ -61,7 +61,6 @@ public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension {
|
||||
MAP.put(ErrorsJvm.EXTERNAL_DECLARATION_CANNOT_BE_INLINED, "Members of interfaces can not be external");
|
||||
|
||||
MAP.put(ErrorsJvm.POSITIONED_VALUE_ARGUMENT_FOR_JAVA_ANNOTATION, "Only named arguments are available for Java annotations");
|
||||
MAP.put(ErrorsJvm.DEPRECATED_ANNOTATION_METHOD_CALL, "Annotation methods are deprecated. Use property instead");
|
||||
MAP.put(ErrorsJvm.DEPRECATED_JAVA_ANNOTATION, "This annotation is deprecated in Kotlin. Use ''{0}'' instead", Renderers.TO_STRING);
|
||||
MAP.put(ErrorsJvm.NON_SOURCE_REPEATED_ANNOTATION, "Only annotations with SOURCE retention can be repeated on JVM version before 1.8");
|
||||
MAP.put(ErrorsJvm.ANNOTATION_IS_NOT_APPLICABLE_TO_MULTIFILE_CLASSES, "Annotation {0} is not applicable to the multi-file classes", Renderers.TO_STRING);
|
||||
|
||||
-2
@@ -20,7 +20,6 @@ import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||
import org.jetbrains.kotlin.container.useImpl
|
||||
import org.jetbrains.kotlin.jvm.RuntimeAssertionsTypeChecker
|
||||
import org.jetbrains.kotlin.load.kotlin.JavaAnnotationCallChecker
|
||||
import org.jetbrains.kotlin.load.kotlin.JavaAnnotationMethodCallChecker
|
||||
import org.jetbrains.kotlin.load.kotlin.nativeDeclarations.NativeFunChecker
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
import org.jetbrains.kotlin.resolve.jvm.checkers.*
|
||||
@@ -45,7 +44,6 @@ public object JvmPlatformConfigurator : PlatformConfigurator(
|
||||
additionalCallCheckers = listOf(
|
||||
NeedSyntheticChecker(),
|
||||
JavaAnnotationCallChecker(),
|
||||
JavaAnnotationMethodCallChecker(),
|
||||
TraitDefaultMethodCallChecker(),
|
||||
JavaClassOnCompanionChecker()
|
||||
),
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ class K
|
||||
@JavaAnn(args = arrayOf(O::class, K::class)) class MyClass
|
||||
|
||||
fun box(): String {
|
||||
val args = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>()).args()
|
||||
val args = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>()).args
|
||||
val argName1 = args[0].simpleName ?: "fail 1"
|
||||
val argName2 = args[1].simpleName ?: "fail 2"
|
||||
return argName1 + argName2
|
||||
|
||||
compiler/testData/codegen/boxAgainstJava/annotations/kClassMapping/arrayClassParameterOnJavaClass.kt
Vendored
+1
-1
@@ -1,5 +1,5 @@
|
||||
fun box(): String {
|
||||
val args = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>()).args()
|
||||
val args = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>()).args
|
||||
val argName1 = args[0].simpleName ?: "fail 1"
|
||||
val argName2 = args[1].simpleName ?: "fail 2"
|
||||
return argName1 + argName2
|
||||
|
||||
+4
-4
@@ -5,21 +5,21 @@
|
||||
|
||||
|
||||
fun box(): String {
|
||||
val value1 = javaClass<MyClass1>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val value1 = javaClass<MyClass1>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
if (value1.size() != 2) return "fail1: ${value1.size()}"
|
||||
if (value1[0] != "d1") return "fail2: ${value1[0]}"
|
||||
if (value1[1] != "d2") return "fail3: ${value1[1]}"
|
||||
|
||||
val value2 = javaClass<MyClass2>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val value2 = javaClass<MyClass2>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
if (value2.size() != 2) return "fail4: ${value2.size()}"
|
||||
if (value2[0] != "d1") return "fail5: ${value2[0]}"
|
||||
if (value2[1] != "d2") return "fail6: ${value2[1]}"
|
||||
|
||||
val value3 = javaClass<MyClass3>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val value3 = javaClass<MyClass3>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
if (value3.size() != 1) return "fail7: ${value3.size()}"
|
||||
if (value3[0] != "asd") return "fail8: ${value3[0]}"
|
||||
|
||||
val value4 = javaClass<MyClass4>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val value4 = javaClass<MyClass4>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
if (value4.size() != 0) return "fail 9: ${value4.size()}"
|
||||
|
||||
return "OK"
|
||||
|
||||
+4
-4
@@ -5,17 +5,17 @@
|
||||
|
||||
|
||||
fun box(): String {
|
||||
val value1 = javaClass<MyClass1>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val value1 = javaClass<MyClass1>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
if (value1.size() != 0) return "fail1: ${value1.size()}"
|
||||
|
||||
val value2 = javaClass<MyClass2>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val value2 = javaClass<MyClass2>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
if (value2.size() != 0) return "fail2: ${value2.size()}"
|
||||
|
||||
val value3 = javaClass<MyClass3>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val value3 = javaClass<MyClass3>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
if (value3.size() != 1) return "fail3: ${value3.size()}"
|
||||
if (value3[0] != "asd") return "fail4: ${value3[0]}"
|
||||
|
||||
val value4 = javaClass<MyClass4>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val value4 = javaClass<MyClass4>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
if (value4.size() != 0) return "fail 5: ${value4.size()}"
|
||||
|
||||
return "OK"
|
||||
|
||||
+1
-1
@@ -3,6 +3,6 @@
|
||||
fun box(): String {
|
||||
val ann = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>())
|
||||
if (ann == null) return "fail: cannot find Ann on MyClass}"
|
||||
if (ann.value() != "value") return "fail: annotation parameter i should be 'value', but was ${ann.value()}"
|
||||
if (ann.value != "value") return "fail: annotation parameter i should be 'value', but was ${ann.value}"
|
||||
return "OK"
|
||||
}
|
||||
|
||||
+8
-8
@@ -4,17 +4,17 @@
|
||||
fun box(): String {
|
||||
val ann = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>())
|
||||
if (ann == null) return "fail: cannot find Ann on MyClass}"
|
||||
if (ann.value() != "default") return "fail: annotation parameter i should be 'default', but was ${ann.value()}"
|
||||
if (ann.value != "default") return "fail: annotation parameter i should be 'default', but was ${ann.value}"
|
||||
|
||||
val ann2 = javaClass<MyClass2>().getAnnotation(javaClass<JavaAnn2>())
|
||||
if (ann2 == null) return "fail: cannot find Ann on MyClass}"
|
||||
if (ann2.a() != 1) return "fail for a: expected = 1, but was ${ann2.a()}"
|
||||
if (ann2.b() != 1.toByte()) return "fail for b: expected = 1, but was ${ann2.b()}"
|
||||
if (ann2.c() != 1.toShort()) return "fail for c: expected = 1, but was ${ann2.c()}"
|
||||
if (ann2.d() != 1.0) return "fail for d: expected = 1, but was ${ann2.d()}"
|
||||
if (ann2.e() != 1F) return "fail for e: expected = 1, but was ${ann2.e()}"
|
||||
if (ann2.j() != 1L) return "fail for j: expected = 1, but was ${ann2.j()}"
|
||||
if (ann2.f() != "default") return "fail for f: expected = default, but was ${ann2.f()}"
|
||||
if (ann2.a != 1) return "fail for a: expected = 1, but was ${ann2.a}"
|
||||
if (ann2.b != 1.toByte()) return "fail for b: expected = 1, but was ${ann2.b}"
|
||||
if (ann2.c != 1.toShort()) return "fail for c: expected = 1, but was ${ann2.c}"
|
||||
if (ann2.d != 1.0) return "fail for d: expected = 1, but was ${ann2.d}"
|
||||
if (ann2.e != 1F) return "fail for e: expected = 1, but was ${ann2.e}"
|
||||
if (ann2.j != 1L) return "fail for j: expected = 1, but was ${ann2.j}"
|
||||
if (ann2.f != "default") return "fail for f: expected = default, but was ${ann2.f}"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ class K
|
||||
@JavaAnn(args = arrayOf(O::class, K::class)) class MyClass
|
||||
|
||||
fun box(): String {
|
||||
val args = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>()).args()
|
||||
val args = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>()).args
|
||||
val argName1 = args[0].simpleName ?: "fail 1"
|
||||
val argName2 = args[1].simpleName ?: "fail 2"
|
||||
return argName1 + argName2
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
fun box(): String {
|
||||
val args = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>()).args()
|
||||
val args = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>()).args
|
||||
val argName1 = args[0].simpleName ?: "fail 1"
|
||||
val argName2 = args[1].simpleName ?: "fail 2"
|
||||
return argName1 + argName2
|
||||
|
||||
+1
-1
@@ -6,5 +6,5 @@ class OK
|
||||
fun box(): String {
|
||||
val ann = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>())
|
||||
if (ann == null) return "fail: cannot find JavaAnn on MyClass"
|
||||
return ann.value().simpleName!!
|
||||
return ann.value.simpleName!!
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,5 +2,5 @@
|
||||
fun box(): String {
|
||||
val ann = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>())
|
||||
if (ann == null) return "fail: cannot find JavaAnn on MyClass"
|
||||
return ann.value().simpleName!!
|
||||
return ann.value.simpleName!!
|
||||
}
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ class K
|
||||
@JavaAnn(O::class, K::class) class MyClass
|
||||
|
||||
fun box(): String {
|
||||
val args = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val args = javaClass<MyClass>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
val argName1 = args[0].simpleName ?: "fail 1"
|
||||
val argName2 = args[1].simpleName ?: "fail 2"
|
||||
return argName1 + argName2
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ class O
|
||||
class K
|
||||
|
||||
fun box(): String {
|
||||
val args = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>()).value()
|
||||
val args = javaClass<MyJavaClass>().getAnnotation(javaClass<JavaAnn>()).value
|
||||
val argName1 = args[0].simpleName ?: "fail 1"
|
||||
val argName2 = args[1].simpleName ?: "fail 2"
|
||||
return argName1 + argName2
|
||||
|
||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
@file:StringHolder("OK")
|
||||
|
||||
fun box(): String =
|
||||
Class.forName("FileFacadeKt").getAnnotation(StringHolder::class.java)?.value() ?: "null"
|
||||
Class.forName("FileFacadeKt").getAnnotation(StringHolder::class.java)?.value ?: "null"
|
||||
+1
-1
@@ -22,7 +22,7 @@ fun box(): String {
|
||||
throw AssertionError("Method ${method.name} has no ${kotlinDelegatedMethod.simpleName} annotation.")
|
||||
}
|
||||
|
||||
val implementationClassName = ann.implementationClassName()
|
||||
val implementationClassName = ann.implementationClassName
|
||||
val implementationClass = try {
|
||||
Class.forName(implementationClassName)
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ public open class kt3698 {
|
||||
public/*package*/ final class Foo : kotlin.Annotation {
|
||||
public/*package*/ constructor Foo(/*0*/ kotlin.Int)
|
||||
public final val value: kotlin.Int
|
||||
public abstract fun value(): kotlin.Int
|
||||
}
|
||||
|
||||
// Static members
|
||||
|
||||
@@ -9,6 +9,4 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun x(): kotlin.Int
|
||||
public abstract fun y(): kotlin.String
|
||||
}
|
||||
|
||||
-27
@@ -1,27 +0,0 @@
|
||||
// FILE: A.java
|
||||
public @interface A {
|
||||
String value();
|
||||
int arg();
|
||||
}
|
||||
|
||||
// FILE: b.kt
|
||||
@A(value = "a", arg = 1) class MyClass
|
||||
|
||||
fun foo(ann: A) {
|
||||
ann.<!DEPRECATED_ANNOTATION_METHOD_CALL!>value()<!>
|
||||
ann.<!DEPRECATED_ANNOTATION_METHOD_CALL!>arg()<!>
|
||||
|
||||
ann.equals(ann)
|
||||
ann.toString()
|
||||
ann.hashCode()
|
||||
|
||||
MyClass::class.java.getAnnotation(A::class.java).<!DEPRECATED_ANNOTATION_METHOD_CALL!>value()<!>
|
||||
MyClass::class.java.getAnnotation(A::class.java).<!DEPRECATED_ANNOTATION_METHOD_CALL!>arg()<!>
|
||||
}
|
||||
|
||||
fun A.bar() {
|
||||
<!DEPRECATED_ANNOTATION_METHOD_CALL!>value()<!>
|
||||
<!DEPRECATED_ANNOTATION_METHOD_CALL!>arg()<!>
|
||||
this.<!DEPRECATED_ANNOTATION_METHOD_CALL!>value()<!>
|
||||
this.<!DEPRECATED_ANNOTATION_METHOD_CALL!>arg()<!>
|
||||
}
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
package
|
||||
|
||||
public fun foo(/*0*/ ann: A): kotlin.Unit
|
||||
public fun A.bar(): kotlin.Unit
|
||||
|
||||
public final class A : kotlin.Annotation {
|
||||
public constructor A(/*0*/ value: kotlin.String, /*1*/ arg: kotlin.Int)
|
||||
public final val arg: kotlin.Int
|
||||
public final val value: kotlin.String
|
||||
public abstract fun arg(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
|
||||
@A(arg = 1, value = "a") public final class MyClass {
|
||||
public constructor MyClass()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Vendored
-6
@@ -8,13 +8,7 @@ public final class A : kotlin.Annotation {
|
||||
public final val x: kotlin.reflect.KClass<*>
|
||||
public final val x1: kotlin.reflect.KClass<*>
|
||||
public final val x2: kotlin.reflect.KClass<*>
|
||||
public abstract fun a(): kotlin.Int
|
||||
public abstract fun b(): kotlin.Double
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
public abstract fun x(): kotlin.reflect.KClass<*>
|
||||
public abstract fun x1(): kotlin.reflect.KClass<*>
|
||||
public abstract fun x2(): kotlin.reflect.KClass<*>
|
||||
}
|
||||
|
||||
compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameters/orderWithoutValue.txt
Vendored
-5
@@ -7,12 +7,7 @@ public final class A : kotlin.Annotation {
|
||||
public final val x: kotlin.reflect.KClass<*>
|
||||
public final val x1: kotlin.reflect.KClass<*>
|
||||
public final val x2: kotlin.reflect.KClass<*>
|
||||
public abstract fun a(): kotlin.Int
|
||||
public abstract fun b(): kotlin.Double
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun x(): kotlin.reflect.KClass<*>
|
||||
public abstract fun x1(): kotlin.reflect.KClass<*>
|
||||
public abstract fun x2(): kotlin.reflect.KClass<*>
|
||||
}
|
||||
|
||||
Vendored
-3
@@ -17,7 +17,4 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.Array<kotlin.String>
|
||||
public abstract fun x(): kotlin.reflect.KClass<*>
|
||||
public abstract fun y(): kotlin.Int
|
||||
}
|
||||
|
||||
-3
@@ -20,7 +20,4 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.Array<kotlin.String>
|
||||
public abstract fun x(): kotlin.reflect.KClass<*>
|
||||
public abstract fun y(): kotlin.Int
|
||||
}
|
||||
|
||||
Vendored
-1
@@ -12,5 +12,4 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.Array<kotlin.String>
|
||||
}
|
||||
|
||||
-1
@@ -12,5 +12,4 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.Array<kotlin.String>
|
||||
}
|
||||
|
||||
-1
@@ -8,5 +8,4 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.Array<kotlin.String>
|
||||
}
|
||||
|
||||
-5
@@ -5,23 +5,18 @@ public final class A : kotlin.Annotation {
|
||||
public final val arg: kotlin.reflect.KClass<*>
|
||||
public final val b: B
|
||||
public final val x: kotlin.Int
|
||||
public abstract fun arg(): kotlin.reflect.KClass<*>
|
||||
public abstract fun b(): B
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun x(): kotlin.Int
|
||||
}
|
||||
|
||||
public final class B : kotlin.Annotation {
|
||||
public constructor B(/*0*/ arg: kotlin.reflect.KClass<*> = ..., /*1*/ y: kotlin.Int = ...)
|
||||
public final val arg: kotlin.reflect.KClass<*>
|
||||
public final val y: kotlin.Int
|
||||
public abstract fun arg(): kotlin.reflect.KClass<*>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun y(): kotlin.Int
|
||||
}
|
||||
|
||||
@A(arg = kotlin.String::class, b = B(y = 1)) public final class MyClass1 {
|
||||
|
||||
compiler/testData/diagnostics/testsWithStdLib/annotations/javaAnnotationsWithKClassParameter/arg.txt
Vendored
-1
@@ -3,7 +3,6 @@ package
|
||||
public final class A : kotlin.Annotation {
|
||||
public constructor A(/*0*/ arg: kotlin.reflect.KClass<*>)
|
||||
public final val arg: kotlin.reflect.KClass<*>
|
||||
public abstract fun arg(): kotlin.reflect.KClass<*>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
-2
@@ -4,11 +4,9 @@ public final class A : kotlin.Annotation {
|
||||
public constructor A(/*0*/ arg: kotlin.reflect.KClass<*>, /*1*/ x: kotlin.Int = ...)
|
||||
public final val arg: kotlin.reflect.KClass<*>
|
||||
public final val x: kotlin.Int
|
||||
public abstract fun arg(): kotlin.reflect.KClass<*>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun x(): kotlin.Int
|
||||
}
|
||||
|
||||
@A(arg = kotlin.String::class) public final class MyClass1 {
|
||||
|
||||
-1
@@ -3,7 +3,6 @@ package
|
||||
public final class A : kotlin.Annotation {
|
||||
public constructor A(/*0*/ arg: kotlin.Array<kotlin.reflect.KClass<*>>)
|
||||
public final val arg: kotlin.Array<kotlin.reflect.KClass<*>>
|
||||
public abstract fun arg(): kotlin.Array<kotlin.reflect.KClass<*>>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
-1
@@ -3,7 +3,6 @@ package
|
||||
public final class A : kotlin.Annotation {
|
||||
public constructor A(/*0*/ arg: kotlin.reflect.KClass<*> = ...)
|
||||
public final val arg: kotlin.reflect.KClass<*>
|
||||
public abstract fun arg(): kotlin.reflect.KClass<*>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
-2
@@ -4,11 +4,9 @@ public final class A : kotlin.Annotation {
|
||||
public constructor A(/*0*/ arg: kotlin.reflect.KClass<*> = ..., /*1*/ x: kotlin.Int)
|
||||
public final val arg: kotlin.reflect.KClass<*>
|
||||
public final val x: kotlin.Int
|
||||
public abstract fun arg(): kotlin.reflect.KClass<*>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun x(): kotlin.Int
|
||||
}
|
||||
|
||||
@A(arg = kotlin.String::class, x = 4) public final class MyClass2 {
|
||||
|
||||
-2
@@ -4,8 +4,6 @@ public final class A : kotlin.Annotation {
|
||||
public constructor A(/*0*/ arg1: kotlin.reflect.KClass<*>, /*1*/ arg2: kotlin.reflect.KClass<*>)
|
||||
public final val arg1: kotlin.reflect.KClass<*>
|
||||
public final val arg2: kotlin.reflect.KClass<*>
|
||||
public abstract fun arg1(): kotlin.reflect.KClass<*>
|
||||
public abstract fun arg2(): kotlin.reflect.KClass<*>
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
|
||||
-1
@@ -6,7 +6,6 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.reflect.KClass<*>
|
||||
}
|
||||
|
||||
@A(value = kotlin.String::class) public final class MyClass1 {
|
||||
|
||||
-2
@@ -7,8 +7,6 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.reflect.KClass<*>
|
||||
public abstract fun x(): kotlin.Int
|
||||
}
|
||||
|
||||
@A(value = kotlin.String::class) public final class MyClass1 {
|
||||
|
||||
-1
@@ -6,7 +6,6 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.Array<kotlin.reflect.KClass<*>>
|
||||
}
|
||||
|
||||
@A(value = {kotlin.String::class, kotlin.Int::class}) public final class MyClass1 {
|
||||
|
||||
-1
@@ -6,7 +6,6 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.reflect.KClass<*>
|
||||
}
|
||||
|
||||
@A(value = kotlin.String::class) public final class MyClass1 {
|
||||
|
||||
-2
@@ -7,8 +7,6 @@ public final class A : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.reflect.KClass<*>
|
||||
public abstract fun x(): kotlin.Int
|
||||
}
|
||||
|
||||
@A(value = kotlin.String::class, x = 2) public final class MyClass1 {
|
||||
|
||||
compiler/testData/diagnostics/testsWithStdLib/annotations/prohibitPositionedArgument/tooManyArgs.txt
Vendored
-3
@@ -7,10 +7,7 @@ public final class A : kotlin.Annotation {
|
||||
public final val a: kotlin.Int
|
||||
public final val b: kotlin.Double
|
||||
public final val x: kotlin.Boolean
|
||||
public abstract fun a(): kotlin.Int
|
||||
public abstract fun b(): kotlin.Double
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun x(): kotlin.Boolean
|
||||
}
|
||||
|
||||
-3
@@ -8,10 +8,7 @@ public final class A : kotlin.Annotation {
|
||||
public final val a: kotlin.Int
|
||||
public final val b: kotlin.Double
|
||||
public final val x: kotlin.Boolean
|
||||
public abstract fun a(): kotlin.Int
|
||||
public abstract fun b(): kotlin.Double
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun x(): kotlin.Boolean
|
||||
}
|
||||
|
||||
Vendored
-4
@@ -11,11 +11,7 @@ public final class A : kotlin.Annotation {
|
||||
public final val b: kotlin.Double
|
||||
public final val value: kotlin.String
|
||||
public final val x: kotlin.Boolean
|
||||
public abstract fun a(): kotlin.Int
|
||||
public abstract fun b(): kotlin.Double
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
public abstract fun x(): kotlin.Boolean
|
||||
}
|
||||
|
||||
-3
@@ -9,10 +9,7 @@ public final class A : kotlin.Annotation {
|
||||
public final val a: kotlin.Int
|
||||
public final val b: kotlin.Double
|
||||
public final val x: kotlin.Boolean
|
||||
public abstract fun a(): kotlin.Int
|
||||
public abstract fun b(): kotlin.Double
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
public abstract fun x(): kotlin.Boolean
|
||||
}
|
||||
|
||||
@@ -6,6 +6,5 @@ public open class AnnotatedConstructor {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ public open class AnnotatedField {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
|
||||
// Static members
|
||||
|
||||
@@ -7,6 +7,5 @@ public open class AnnotatedMethod {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.Int)
|
||||
public final val value: kotlin.Int
|
||||
public abstract fun value(): kotlin.Int
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -7,6 +7,5 @@ public open class AnnotatedValueParameter {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,38 +17,31 @@ public interface AnnotationInParam {
|
||||
public final class MyAnnotation : kotlin.Annotation {
|
||||
public constructor MyAnnotation(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
|
||||
public final class MyAnnotation2 : kotlin.Annotation {
|
||||
public constructor MyAnnotation2(/*0*/ vararg value: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
public final val value: kotlin.Array<kotlin.String>
|
||||
public abstract fun value(): kotlin.Array<kotlin.String>
|
||||
}
|
||||
|
||||
public final class MyAnnotation3 : kotlin.Annotation {
|
||||
public constructor MyAnnotation3(/*0*/ first: kotlin.String, /*1*/ second: kotlin.String)
|
||||
public final val first: kotlin.String
|
||||
public final val second: kotlin.String
|
||||
public abstract fun first(): kotlin.String
|
||||
public abstract fun second(): kotlin.String
|
||||
}
|
||||
|
||||
public final class MyAnnotationWithParam : kotlin.Annotation {
|
||||
public constructor MyAnnotationWithParam(/*0*/ value: test.AnnotationInParam.MyAnnotation)
|
||||
public final val value: test.AnnotationInParam.MyAnnotation
|
||||
public abstract fun value(): test.AnnotationInParam.MyAnnotation
|
||||
}
|
||||
|
||||
public final class MyAnnotationWithParam2 : kotlin.Annotation {
|
||||
public constructor MyAnnotationWithParam2(/*0*/ value: test.AnnotationInParam.MyAnnotation2)
|
||||
public final val value: test.AnnotationInParam.MyAnnotation2
|
||||
public abstract fun value(): test.AnnotationInParam.MyAnnotation2
|
||||
}
|
||||
|
||||
public final class MyAnnotationWithParam3 : kotlin.Annotation {
|
||||
public constructor MyAnnotationWithParam3(/*0*/ value: test.AnnotationInParam.MyAnnotation3)
|
||||
public final val value: test.AnnotationInParam.MyAnnotation3
|
||||
public abstract fun value(): test.AnnotationInParam.MyAnnotation3
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -6,7 +6,6 @@ public open class ArithmeticExpressionInParam {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.Int)
|
||||
public final val value: kotlin.Int
|
||||
public abstract fun value(): kotlin.Int
|
||||
}
|
||||
|
||||
@test.ArithmeticExpressionInParam.Anno(value = 42) public open class Class {
|
||||
|
||||
@@ -5,6 +5,5 @@ public interface ArrayOfEnumInParam {
|
||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FIELD, AnnotationTarget.CONSTRUCTOR}) public final class targetAnnotation : kotlin.Annotation {
|
||||
public constructor targetAnnotation(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,5 @@ public interface ArrayOfStringInParam {
|
||||
public final class MyAnnotation : kotlin.Annotation {
|
||||
public constructor MyAnnotation(/*0*/ vararg value: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
public final val value: kotlin.Array<kotlin.String>
|
||||
public abstract fun value(): kotlin.Array<kotlin.String>
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -6,7 +6,6 @@ public open class ClassObjectArrayInParam {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ vararg value: kotlin.reflect.KClass<*> /*kotlin.Array<out kotlin.reflect.KClass<*>>*/)
|
||||
public final val value: kotlin.Array<kotlin.reflect.KClass<*>>
|
||||
public abstract fun value(): kotlin.Array<kotlin.reflect.KClass<*>>
|
||||
}
|
||||
|
||||
@test.ClassObjectArrayInParam.Anno(value = {test.ClassObjectArrayInParam::class, test.ClassObjectArrayInParam.Nested::class, kotlin.String::class}) public open class Nested {
|
||||
|
||||
@@ -6,7 +6,6 @@ public open class ClassObjectInParam {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.reflect.KClass<*>)
|
||||
public final val value: kotlin.reflect.KClass<*>
|
||||
public abstract fun value(): kotlin.reflect.KClass<*>
|
||||
}
|
||||
|
||||
@test.ClassObjectInParam.Anno(value = test.ClassObjectInParam::class) public open class Nested {
|
||||
|
||||
@@ -7,8 +7,6 @@ public open class ClassObjectInParamRaw {
|
||||
public constructor Anno(/*0*/ value: kotlin.reflect.KClass<*>, /*1*/ arg: kotlin.Array<kotlin.reflect.KClass<*>>)
|
||||
public final val arg: kotlin.Array<kotlin.reflect.KClass<*>>
|
||||
public final val value: kotlin.reflect.KClass<*>
|
||||
public abstract fun arg(): kotlin.Array<kotlin.reflect.KClass<*>>
|
||||
public abstract fun value(): kotlin.reflect.KClass<*>
|
||||
}
|
||||
|
||||
@test.ClassObjectInParamRaw.Anno(arg = {}, value = test.ClassObjectInParamRaw::class) public open class Nested {
|
||||
|
||||
-8
@@ -13,13 +13,5 @@ public open class ClassObjectInParamVariance {
|
||||
public final val arg6: kotlin.Array<kotlin.reflect.KClass<in java.lang.Class<*>!>>
|
||||
public final val arg7: kotlin.Array<kotlin.reflect.KClass<out java.lang.Class<kotlin.Int!>!>>
|
||||
public final val arg8: kotlin.Array<kotlin.reflect.KClass<in java.lang.Class<kotlin.Int!>!>>
|
||||
public abstract fun arg1(): kotlin.reflect.KClass<out kotlin.Int!>
|
||||
public abstract fun arg2(): kotlin.reflect.KClass<in kotlin.Int!>
|
||||
public abstract fun arg3(): kotlin.Array<kotlin.reflect.KClass<out kotlin.Int!>>
|
||||
public abstract fun arg4(): kotlin.Array<kotlin.reflect.KClass<in kotlin.Int!>>
|
||||
public abstract fun arg5(): kotlin.Array<kotlin.reflect.KClass<out java.lang.Class<*>!>>
|
||||
public abstract fun arg6(): kotlin.Array<kotlin.reflect.KClass<in java.lang.Class<*>!>>
|
||||
public abstract fun arg7(): kotlin.Array<kotlin.reflect.KClass<out java.lang.Class<kotlin.Int!>!>>
|
||||
public abstract fun arg8(): kotlin.Array<kotlin.reflect.KClass<in java.lang.Class<kotlin.Int!>!>>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,6 @@ public interface CustomAnnotation {
|
||||
public final class MyAnnotation : kotlin.Annotation {
|
||||
public constructor MyAnnotation(/*0*/ value: test.CustomAnnotation.MyEnum)
|
||||
public final val value: test.CustomAnnotation.MyEnum
|
||||
public abstract fun value(): test.CustomAnnotation.MyEnum
|
||||
}
|
||||
|
||||
public final enum class MyEnum : kotlin.Enum<test.CustomAnnotation.MyEnum!> {
|
||||
|
||||
Vendored
-2
@@ -6,8 +6,6 @@ public interface CustomAnnotationWithDefaultParameter {
|
||||
public constructor MyAnnotation(/*0*/ first: kotlin.String, /*1*/ second: kotlin.String = ...)
|
||||
public final val first: kotlin.String
|
||||
public final val second: kotlin.String
|
||||
public abstract fun first(): kotlin.String
|
||||
public abstract fun second(): kotlin.String
|
||||
}
|
||||
|
||||
@test.CustomAnnotationWithDefaultParameter.MyAnnotation(first = "f", second = "s") public open class MyTest {
|
||||
|
||||
@@ -9,6 +9,5 @@ public interface EmptyArrayInParam {
|
||||
public final class MyAnnotation : kotlin.Annotation {
|
||||
public constructor MyAnnotation(/*0*/ vararg value: kotlin.String /*kotlin.Array<out kotlin.String>*/)
|
||||
public final val value: kotlin.Array<kotlin.String>
|
||||
public abstract fun value(): kotlin.Array<kotlin.String>
|
||||
}
|
||||
}
|
||||
|
||||
-2
@@ -21,12 +21,10 @@ public open class EnumArgumentWithCustomToString {
|
||||
public final class EnumAnno : kotlin.Annotation {
|
||||
public constructor EnumAnno(/*0*/ value: test.EnumArgumentWithCustomToString.E)
|
||||
public final val value: test.EnumArgumentWithCustomToString.E
|
||||
public abstract fun value(): test.EnumArgumentWithCustomToString.E
|
||||
}
|
||||
|
||||
public final class EnumArrayAnno : kotlin.Annotation {
|
||||
public constructor EnumArrayAnno(/*0*/ vararg value: test.EnumArgumentWithCustomToString.E /*kotlin.Array<out test.EnumArgumentWithCustomToString.E>*/)
|
||||
public final val value: kotlin.Array<test.EnumArgumentWithCustomToString.E>
|
||||
public abstract fun value(): kotlin.Array<test.EnumArgumentWithCustomToString.E>
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -13,7 +13,6 @@ public final enum class EnumConstructorParameter : kotlin.Enum<test.EnumConstruc
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
|
||||
// Static members
|
||||
|
||||
@@ -5,12 +5,10 @@ public interface EnumInParam {
|
||||
public final class MyRetention : kotlin.Annotation {
|
||||
public constructor MyRetention(/*0*/ value: java.lang.annotation.RetentionPolicy)
|
||||
public final val value: java.lang.annotation.RetentionPolicy
|
||||
public abstract fun value(): java.lang.annotation.RetentionPolicy
|
||||
}
|
||||
|
||||
@test.EnumInParam.MyRetention(value = RetentionPolicy.RUNTIME) public final class RetentionAnnotation : kotlin.Annotation {
|
||||
public constructor RetentionAnnotation(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ public open class NestedEnumArgument {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: test.NestedEnumArgument.E)
|
||||
public final val value: test.NestedEnumArgument.E
|
||||
public abstract fun value(): test.NestedEnumArgument.E
|
||||
}
|
||||
|
||||
public final enum class E : kotlin.Enum<test.NestedEnumArgument.E!> {
|
||||
|
||||
@@ -14,11 +14,5 @@ public interface PrimitiveValueInParam {
|
||||
public final val i: kotlin.Int
|
||||
public final val l: kotlin.Long
|
||||
public final val str: kotlin.String
|
||||
public abstract fun bool(): kotlin.Boolean
|
||||
public abstract fun d(): kotlin.Double
|
||||
public abstract fun f(): kotlin.Float
|
||||
public abstract fun i(): kotlin.Int
|
||||
public abstract fun l(): kotlin.Long
|
||||
public abstract fun str(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,10 @@ public interface RecursiveAnnotation {
|
||||
@test.RecursiveAnnotation.B(value = test.RecursiveAnnotation.A(value = "test")) public final class A : kotlin.Annotation {
|
||||
public constructor A(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
|
||||
@test.RecursiveAnnotation.B(value = test.RecursiveAnnotation.A(value = "test")) public final class B : kotlin.Annotation {
|
||||
public constructor B(/*0*/ value: test.RecursiveAnnotation.A)
|
||||
public final val value: test.RecursiveAnnotation.A
|
||||
public abstract fun value(): test.RecursiveAnnotation.A
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,12 +5,10 @@ public interface RecursiveAnnotation2 {
|
||||
public final class A : kotlin.Annotation {
|
||||
public constructor A(/*0*/ value: test.RecursiveAnnotation2.B)
|
||||
public final val value: test.RecursiveAnnotation2.B
|
||||
public abstract fun value(): test.RecursiveAnnotation2.B
|
||||
}
|
||||
|
||||
@test.RecursiveAnnotation2.A(value = test.RecursiveAnnotation2.B(value = "test")) public final class B : kotlin.Annotation {
|
||||
public constructor B(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
}
|
||||
|
||||
-1
@@ -5,7 +5,6 @@ public interface StringConcatenationInParam {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
|
||||
@test.StringConcatenationInParam.Anno(value = "hello") public open class Class {
|
||||
|
||||
@@ -5,7 +5,6 @@ public interface StringConstantInParam {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
|
||||
@test.StringConstantInParam.Anno(value = "hello") public open class Class {
|
||||
|
||||
@@ -5,7 +5,6 @@ public interface StringInParam {
|
||||
public final class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ value: kotlin.String)
|
||||
public final val value: kotlin.String
|
||||
public abstract fun value(): kotlin.String
|
||||
}
|
||||
|
||||
@test.StringInParam.Anno(value = "hello") public open class Class {
|
||||
|
||||
@@ -9,7 +9,5 @@ public interface NullInAnnotation {
|
||||
public constructor Ann(/*0*/ a: kotlin.String, /*1*/ b: kotlin.Array<kotlin.String>)
|
||||
public final val a: kotlin.String
|
||||
public final val b: kotlin.Array<kotlin.String>
|
||||
public abstract fun a(): kotlin.String
|
||||
public abstract fun b(): kotlin.Array<kotlin.String>
|
||||
}
|
||||
}
|
||||
|
||||
-6
@@ -97,12 +97,6 @@ public class JetDiagnosticsTestWithStdLibGenerated extends AbstractJetDiagnostic
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/diagnostics/testsWithStdLib/annotations"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("annotationClassMethodCall.kt")
|
||||
public void testAnnotationClassMethodCall() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/annotations/annotationClassMethodCall.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("ClassObjectAnnotatedWithItsKClass.kt")
|
||||
public void testClassObjectAnnotatedWithItsKClass() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/annotations/ClassObjectAnnotatedWithItsKClass.kt");
|
||||
|
||||
+3
@@ -86,6 +86,9 @@ public class LazyJavaClassMemberScope(
|
||||
}
|
||||
|
||||
override fun JavaMethodDescriptor.isVisibleAsFunction(): Boolean {
|
||||
// Do not load Java annotation methods as Kotlin functions (load them as properties instead)
|
||||
if (jClass.isAnnotationType) return false
|
||||
|
||||
if (getPropertyNamesCandidatesByAccessorName(name).any {
|
||||
propertyName ->
|
||||
getPropertiesFromSupertypes(propertyName).any {
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.quickfix
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiFile
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.quickfix.quickfixUtil.createIntentionForFirstParentOfType
|
||||
import org.jetbrains.kotlin.psi.JetCallExpression
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||
|
||||
public class MigrateAnnotationMethodCallFix(
|
||||
expression: JetCallExpression
|
||||
) : KotlinQuickFixAction<JetCallExpression>(expression) {
|
||||
override fun getText() = "Replace method call with property access"
|
||||
override fun getFamilyName() = getText()
|
||||
|
||||
override fun invoke(project: Project, editor: Editor?, file: JetFile) = replaceWithSimpleCall(element)
|
||||
|
||||
companion object : JetSingleIntentionActionFactory() {
|
||||
override fun createAction(diagnostic: Diagnostic) = diagnostic.createIntentionForFirstParentOfType(::MigrateAnnotationMethodCallFix)
|
||||
fun replaceWithSimpleCall(expression: JetCallExpression) {
|
||||
val simpleName = expression.getCalleeExpression()?.getText() ?: return
|
||||
expression.replace(JetPsiFactory(expression).createSimpleName(simpleName))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MigrateAnnotationMethodCallInWholeFile : IntentionAction {
|
||||
override fun getText() = "Replace deprecated method calls with property access in current file"
|
||||
override fun getFamilyName() = getText()
|
||||
|
||||
override fun startInWriteAction(): Boolean = true
|
||||
override fun isAvailable(project: Project, editor: Editor?, file: PsiFile?) = true
|
||||
|
||||
override fun invoke(project: Project, editor: Editor?, file: PsiFile?) = (file as? JetFile)?.let {
|
||||
it.analyzeFully().getDiagnostics().
|
||||
filter { it.getFactory() == ErrorsJvm.DEPRECATED_ANNOTATION_METHOD_CALL }.
|
||||
forEach {
|
||||
(it.getPsiElement() as? JetCallExpression)?.let { MigrateAnnotationMethodCallFix.replaceWithSimpleCall(it) }
|
||||
}
|
||||
} ?: Unit
|
||||
|
||||
companion object : JetSingleIntentionActionFactory() {
|
||||
override fun createAction(diagnostic: Diagnostic) = MigrateAnnotationMethodCallInWholeFile()
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,6 @@ import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.lexer.JetTokens.*
|
||||
import org.jetbrains.kotlin.psi.JetClass
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.DEPRECATED_ANNOTATION_METHOD_CALL
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.NO_REFLECTION_IN_CLASS_PATH
|
||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm.POSITIONED_VALUE_ARGUMENT_FOR_JAVA_ANNOTATION
|
||||
|
||||
@@ -302,8 +301,6 @@ public class QuickFixRegistrar : QuickFixContributor {
|
||||
EXPLICIT_DELEGATION_CALL_REQUIRED.registerFactory(InsertDelegationCallQuickfix.InsertThisDelegationCallFactory)
|
||||
EXPLICIT_DELEGATION_CALL_REQUIRED.registerFactory(InsertDelegationCallQuickfix.InsertSuperDelegationCallFactory)
|
||||
|
||||
DEPRECATED_ANNOTATION_METHOD_CALL.registerFactory(MigrateAnnotationMethodCallFix, MigrateAnnotationMethodCallInWholeFile)
|
||||
|
||||
MISSING_CONSTRUCTOR_KEYWORD.registerFactory(MissingConstructorKeywordFix,
|
||||
MissingConstructorKeywordFix.createWholeProjectFixFactory())
|
||||
|
||||
|
||||
-6
@@ -1,6 +0,0 @@
|
||||
// "Replace method call with property access" "true"
|
||||
// WITH_RUNTIME
|
||||
|
||||
fun foo(ann: Ann) {
|
||||
ann.value
|
||||
}
|
||||
-3
@@ -1,3 +0,0 @@
|
||||
public @interface Ann {
|
||||
int value();
|
||||
}
|
||||
Vendored
-6
@@ -1,6 +0,0 @@
|
||||
// "Replace method call with property access" "true"
|
||||
// WITH_RUNTIME
|
||||
|
||||
fun foo(ann: Ann) {
|
||||
ann.value()<caret>
|
||||
}
|
||||
Vendored
-32
@@ -1,32 +0,0 @@
|
||||
// "Replace deprecated method calls with property access in current file" "true"
|
||||
// WITH_RUNTIME
|
||||
|
||||
class A {
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
fun bar(x: Int) {
|
||||
javaClass<A>().getAnnotation(javaClass<Ann>()).args[0]
|
||||
javaClass<A>().getAnnotation(javaClass<Ann>()).y
|
||||
}
|
||||
|
||||
fun foo(ann: Ann, a: A) {
|
||||
ann.value
|
||||
bar(ann.x + (ann).y)
|
||||
|
||||
a.foo()
|
||||
|
||||
a.equals(a)
|
||||
a.toString()
|
||||
a.hashCode()
|
||||
|
||||
class Local {
|
||||
val prop = ann.arg
|
||||
fun baz() {
|
||||
val v = ann.args
|
||||
val summ = ann.x * ann.ext()
|
||||
}
|
||||
|
||||
fun Ann.ext(): Int = -y
|
||||
}
|
||||
}
|
||||
-7
@@ -1,7 +0,0 @@
|
||||
public @interface Ann {
|
||||
Class<?> value();
|
||||
int x() default 1;
|
||||
int y() default 2;
|
||||
Class<?> arg() default String;
|
||||
Class<?>[] args() default {};
|
||||
}
|
||||
Vendored
-32
@@ -1,32 +0,0 @@
|
||||
// "Replace deprecated method calls with property access in current file" "true"
|
||||
// WITH_RUNTIME
|
||||
|
||||
class A {
|
||||
fun foo() {}
|
||||
}
|
||||
|
||||
fun bar(x: Int) {
|
||||
javaClass<A>().getAnnotation(javaClass<Ann>()).args()[0]
|
||||
javaClass<A>().getAnnotation(javaClass<Ann>()).y()
|
||||
}
|
||||
|
||||
fun foo(ann: Ann, a: A) {
|
||||
ann.value()<caret>
|
||||
bar(ann.x() + (ann).y())
|
||||
|
||||
a.foo()
|
||||
|
||||
a.equals(a)
|
||||
a.toString()
|
||||
a.hashCode()
|
||||
|
||||
class Local {
|
||||
val prop = ann.arg()
|
||||
fun baz() {
|
||||
val v = ann.args()
|
||||
val summ = ann.x() * ann.ext()
|
||||
}
|
||||
|
||||
fun Ann.ext(): Int = -y()
|
||||
}
|
||||
}
|
||||
@@ -1213,27 +1213,6 @@ public class QuickFixMultiFileTestGenerated extends AbstractQuickFixMultiFileTes
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/quickfix/migration/migrateJavaAnnotationMethodCall")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
public static class MigrateJavaAnnotationMethodCall extends AbstractQuickFixMultiFileTest {
|
||||
public void testAllFilesPresentInMigrateJavaAnnotationMethodCall() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/migration/migrateJavaAnnotationMethodCall"), Pattern.compile("^(\\w+)\\.before\\.Main\\.\\w+$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("basicMultiple.before.Main.kt")
|
||||
public void testBasicMultiple() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/migrateJavaAnnotationMethodCall/basicMultiple.before.Main.kt");
|
||||
doTestWithExtraFile(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("wholeFileMultiple.before.Main.kt")
|
||||
public void testWholeFileMultiple() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/migration/migrateJavaAnnotationMethodCall/wholeFileMultiple.before.Main.kt");
|
||||
doTestWithExtraFile(fileName);
|
||||
}
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/quickfix/migration/missingConstructorKeyword")
|
||||
@TestDataPath("$PROJECT_ROOT")
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
|
||||
Reference in New Issue
Block a user