Drop JavaClassValue and it's usages

Also drop related testData
This commit is contained in:
Denis Zharkov
2015-06-09 17:46:15 +03:00
parent 980499e331
commit d71fe0d11a
16 changed files with 5 additions and 189 deletions
@@ -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;
}
@@ -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")
@@ -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))<!>
@@ -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
}
@@ -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
@@ -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
}
@@ -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)<!>
@@ -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
}
@@ -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
}
}
@@ -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
}
}
}
}
@@ -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");
@@ -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);
@@ -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";
}
}