Drop JavaClassValue and it's usages
Also drop related testData
This commit is contained in:
@@ -282,18 +282,9 @@ public abstract class AnnotationCodegen {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visitJavaClassValue(JavaClassValue value, Void data) {
|
||||
return visitClassOfType(value.getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visitKClassValue(KClassValue value, Void data) {
|
||||
return visitClassOfType(value.getValue());
|
||||
}
|
||||
|
||||
private Void visitClassOfType(@NotNull JetType type) {
|
||||
annotationVisitor.visit(name, typeMapper.mapType(type));
|
||||
annotationVisitor.visit(name, typeMapper.mapType(value.getValue()));
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
-5
@@ -402,11 +402,6 @@ public class ConstantExpressionEvaluator private (val trace: BindingTrace) : Jet
|
||||
}
|
||||
}
|
||||
|
||||
// javaClass()
|
||||
if (CompileTimeConstantUtils.isJavaClassMethodCall(call)) {
|
||||
return JavaClassValue(resultingDescriptor.getReturnType()!!)
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
|
||||
@@ -103,11 +103,6 @@ public object AnnotationSerializer {
|
||||
setIntValue(value.getValue().toLong())
|
||||
}
|
||||
|
||||
override fun visitJavaClassValue(value: JavaClassValue, data: Unit) {
|
||||
// TODO: support class literals
|
||||
throw UnsupportedOperationException("Class literal annotation arguments are not yet supported: $value")
|
||||
}
|
||||
|
||||
override fun visitKClassValue(value: KClassValue?, data: Unit?) {
|
||||
// TODO: support class literals
|
||||
throw UnsupportedOperationException("Class literal annotation arguments are not yet supported: $value")
|
||||
|
||||
compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.kt
Vendored
+1
-7
@@ -14,14 +14,8 @@ val i3 = foo()
|
||||
|
||||
fun foo(): Int = 1
|
||||
|
||||
annotation class AnnJC(val i: Array<Class<*>>)
|
||||
AnnJC(arrayOf(javaClass<Test>()))
|
||||
AnnJC(arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CLASS_LITERAL!>iJC<!>))
|
||||
class TestJC
|
||||
val iJC = javaClass<Test>()
|
||||
|
||||
annotation class AnnAnn(val i: Array<Ann>)
|
||||
AnnAnn(arrayOf(Ann(intArrayOf(1))))
|
||||
AnnAnn(arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>iAnn<!>))
|
||||
class TestAnn
|
||||
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(intArrayOf(1))<!>
|
||||
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(intArrayOf(1))<!>
|
||||
|
||||
-16
@@ -4,7 +4,6 @@ internal var i: kotlin.Int
|
||||
internal val i2: kotlin.Int = 1
|
||||
internal val i3: kotlin.Int
|
||||
internal val iAnn: Ann
|
||||
internal val iJC: java.lang.Class<Test>
|
||||
internal fun foo(): kotlin.Int
|
||||
|
||||
internal final annotation class Ann : kotlin.Annotation {
|
||||
@@ -23,14 +22,6 @@ internal final annotation class AnnAnn : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final annotation class AnnJC : kotlin.Annotation {
|
||||
public constructor AnnJC(/*0*/ i: kotlin.Array<java.lang.Class<*>>)
|
||||
internal final val i: kotlin.Array<java.lang.Class<*>>
|
||||
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
|
||||
}
|
||||
|
||||
Ann(i = {}: kotlin.IntArray) Ann(i = {1}: kotlin.IntArray) Ann(i = {}: kotlin.IntArray) Ann(i = {1}: kotlin.IntArray) Ann(i = {{1}}: kotlin.IntArray) internal final class Test {
|
||||
public constructor Test()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@@ -44,10 +35,3 @@ AnnAnn(i = {Ann(i = {IntegerValueType(1)}: kotlin.IntArray)}: kotlin.Array<Ann>)
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
AnnJC(i = {javaClass<Test>()}: kotlin.Array<java.lang.Class<*>>) AnnJC(i = {}: kotlin.Array<java.lang.Class<*>>) internal final class TestJC {
|
||||
public constructor TestJC()
|
||||
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
|
||||
}
|
||||
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
// !DIAGNOSTICS: -JAVA_LANG_CLASS_PARAMETER_IN_ANNOTATION
|
||||
annotation class AnnC(val c: Class<*>)
|
||||
|
||||
AnnC(<!ANNOTATION_PARAMETER_MUST_BE_CLASS_LITERAL!>c<!>)
|
||||
class Test
|
||||
|
||||
AnnC(javaClass<A>())
|
||||
class Test2
|
||||
|
||||
val c: Class<*> = javaClass<A>()
|
||||
|
||||
class A
|
||||
-32
@@ -1,32 +0,0 @@
|
||||
package
|
||||
|
||||
internal val c: java.lang.Class<*>
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
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
|
||||
}
|
||||
|
||||
internal final annotation class AnnC : kotlin.Annotation {
|
||||
public constructor AnnC(/*0*/ c: java.lang.Class<*>)
|
||||
internal final val c: java.lang.Class<*>
|
||||
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
|
||||
}
|
||||
|
||||
AnnC() internal final class Test {
|
||||
public constructor Test()
|
||||
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
|
||||
}
|
||||
|
||||
AnnC(c = javaClass<A>(): java.lang.Class<A>) internal final class Test2 {
|
||||
public constructor Test2()
|
||||
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
-7
@@ -17,14 +17,8 @@ val i3 = foo()
|
||||
|
||||
fun foo(): Int = 1
|
||||
|
||||
annotation class AnnJC(vararg val i: Class<*>)
|
||||
AnnJC(*arrayOf(javaClass<Test>()))
|
||||
AnnJC(*arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CLASS_LITERAL!>iJC<!>))
|
||||
class TestJC
|
||||
val iJC = javaClass<Test>()
|
||||
|
||||
annotation class AnnAnn(vararg val i: Ann)
|
||||
AnnAnn(*arrayOf(Ann(1)))
|
||||
AnnAnn(*arrayOf(<!ANNOTATION_PARAMETER_MUST_BE_CONST!>iAnn<!>))
|
||||
class TestAnn
|
||||
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(1)<!>
|
||||
val iAnn = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>Ann(1)<!>
|
||||
|
||||
-16
@@ -4,7 +4,6 @@ internal var i: kotlin.Int
|
||||
internal val i2: kotlin.Int = 1
|
||||
internal val i3: kotlin.Int
|
||||
internal val iAnn: Ann
|
||||
internal val iJC: java.lang.Class<Test>
|
||||
internal fun foo(): kotlin.Int
|
||||
|
||||
internal final annotation class Ann : kotlin.Annotation {
|
||||
@@ -23,14 +22,6 @@ internal final annotation class AnnAnn : kotlin.Annotation {
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final annotation class AnnJC : kotlin.Annotation {
|
||||
public constructor AnnJC(/*0*/ vararg i: java.lang.Class<*> /*kotlin.Array<out java.lang.Class<*>>*/)
|
||||
internal final val i: kotlin.Array<out java.lang.Class<*>>
|
||||
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
|
||||
}
|
||||
|
||||
Ann(i = {}: kotlin.IntArray) Ann(i = {1}: kotlin.IntArray) Ann(i = {}: kotlin.IntArray) Ann(i = {1}: kotlin.IntArray) Ann(i = {}: kotlin.IntArray) Ann(i = {1}: kotlin.IntArray) Ann(i = {}: kotlin.IntArray) Ann(i = {1}: kotlin.IntArray) internal final class Test {
|
||||
public constructor Test()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@@ -44,10 +35,3 @@ AnnAnn(i = {Ann(i = {IntegerValueType(1)}: kotlin.IntArray)}: kotlin.Array<Ann>)
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
AnnJC(i = {javaClass<Test>()}: kotlin.Array<java.lang.Class<Test>>) AnnJC(i = {}: kotlin.Array<java.lang.Class<Test>>) internal final class TestJC {
|
||||
public constructor TestJC()
|
||||
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
-5
@@ -13,8 +13,6 @@ ann3(A.IAnn())
|
||||
a.b.c.A.IAnn()
|
||||
ann3(a.b.c.A.IAnn())
|
||||
|
||||
annJavaClass(kotlin.javaClass<A>())
|
||||
|
||||
annArray(kotlin.arrayOf("a"))
|
||||
fun test() = 1
|
||||
|
||||
@@ -22,10 +20,8 @@ annotation class ann1(val p: deprecated = kotlin.deprecated("aaa"))
|
||||
annotation class ann2(val p: ann1 = a.b.c.ann1())
|
||||
annotation class ann3(val p: A.IAnn = A.IAnn(), val p2: A.IAnn = a.b.c.A.IAnn())
|
||||
|
||||
annotation class annJavaClass(val p: Class<*> = kotlin.javaClass<A>())
|
||||
|
||||
annotation class annArray(val p: Array<String> = kotlin.arrayOf("a"))
|
||||
|
||||
class A {
|
||||
annotation class IAnn
|
||||
}
|
||||
}
|
||||
|
||||
+1
-9
@@ -5,7 +5,7 @@ package a {
|
||||
package a.b {
|
||||
|
||||
package a.b.c {
|
||||
kotlin.deprecated(value = "aaa": kotlin.String) a.b.c.ann1(p = kotlin.deprecated(value = "aaa": kotlin.String): kotlin.deprecated) a.b.c.ann1() a.b.c.ann2(p = a.b.c.ann1(): a.b.c.ann1) a.b.c.A.IAnn() a.b.c.ann3(p = a.b.c.A.IAnn(): a.b.c.A.IAnn) a.b.c.A.IAnn() a.b.c.ann3(p = a.b.c.A.IAnn(): a.b.c.A.IAnn) a.b.c.annJavaClass(p = javaClass<a.b.c.A>(): java.lang.Class<a.b.c.A>) a.b.c.annArray(p = {"a"}: kotlin.Array<kotlin.String>) internal fun test(): kotlin.Int
|
||||
kotlin.deprecated(value = "aaa": kotlin.String) a.b.c.ann1(p = kotlin.deprecated(value = "aaa": kotlin.String): kotlin.deprecated) a.b.c.ann1() a.b.c.ann2(p = a.b.c.ann1(): a.b.c.ann1) a.b.c.A.IAnn() a.b.c.ann3(p = a.b.c.A.IAnn(): a.b.c.A.IAnn) a.b.c.A.IAnn() a.b.c.ann3(p = a.b.c.A.IAnn(): a.b.c.A.IAnn) a.b.c.annArray(p = {"a"}: kotlin.Array<kotlin.String>) internal fun test(): kotlin.Int
|
||||
|
||||
internal final class A {
|
||||
public constructor A()
|
||||
@@ -53,14 +53,6 @@ package a {
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
internal final annotation class annJavaClass : kotlin.Annotation {
|
||||
public constructor annJavaClass(/*0*/ p: java.lang.Class<*> = ...)
|
||||
internal final val p: java.lang.Class<*>
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-6
@@ -114,12 +114,6 @@ public class JetDiagnosticsTestWithStdLibGenerated extends AbstractJetDiagnostic
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("classLiteral.kt")
|
||||
public void testClassLiteral() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/classLiteral.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("simple.kt")
|
||||
public void testSimple() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/simple.kt");
|
||||
|
||||
-2
@@ -49,8 +49,6 @@ public interface AnnotationArgumentVisitor<R, D> {
|
||||
|
||||
R visitAnnotationValue(AnnotationValue value, D data);
|
||||
|
||||
R visitJavaClassValue(JavaClassValue value, D data);
|
||||
|
||||
R visitKClassValue(KClassValue value, D data);
|
||||
|
||||
R visitNumberTypeValue(IntegerValueTypeConstant value, D data);
|
||||
|
||||
-5
@@ -93,11 +93,6 @@ public abstract class DefaultAnnotationArgumentVisitor<R, D> implements Annotati
|
||||
return visitValue(value, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R visitJavaClassValue(JavaClassValue value, D data) {
|
||||
return visitValue(value, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public R visitNumberTypeValue(IntegerValueTypeConstant value, D data) {
|
||||
return visitValue(value, data);
|
||||
|
||||
@@ -372,7 +372,6 @@ internal class DescriptorRendererImpl(
|
||||
return when (value) {
|
||||
is ArrayValue -> value.getValue().map { renderConstant(it) }.joinToString(", ", "{", "}")
|
||||
is AnnotationValue -> renderAnnotation(value.getValue())
|
||||
is JavaClassValue -> "javaClass<" + renderType(value.getValue()) + ">()"
|
||||
is KClassValue -> renderType(value.getValue()) + "::class"
|
||||
else -> value.toString()
|
||||
}
|
||||
|
||||
@@ -1,51 +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.resolve.constants;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationArgumentVisitor;
|
||||
import org.jetbrains.kotlin.types.JetType;
|
||||
|
||||
public class JavaClassValue extends CompileTimeConstant<JetType> {
|
||||
|
||||
public JavaClassValue(@NotNull JetType value) {
|
||||
super(value, true, false, false);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JetType getValue() {
|
||||
return value.getArguments().iterator().next().getType();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JetType getType(@NotNull KotlinBuiltIns kotlinBuiltIns) {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, D> R accept(AnnotationArgumentVisitor<R, D> visitor, D data) {
|
||||
return visitor.visitJavaClassValue(this, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getValue() + ".class";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user