diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java index a1ce2f7b177..36f78f6efb9 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AnnotationCodegen.java @@ -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; } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt index bdc4e087783..d2caa382bd7 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/constants/evaluate/ConstantExpressionEvaluator.kt @@ -402,11 +402,6 @@ public class ConstantExpressionEvaluator private (val trace: BindingTrace) : Jet } } - // javaClass() - if (CompileTimeConstantUtils.isJavaClassMethodCall(call)) { - return JavaClassValue(resultingDescriptor.getReturnType()!!) - } - return null } diff --git a/compiler/serialization/src/org/jetbrains/kotlin/serialization/AnnotationSerializer.kt b/compiler/serialization/src/org/jetbrains/kotlin/serialization/AnnotationSerializer.kt index 37cd8ef4bc8..0f10bd149d4 100644 --- a/compiler/serialization/src/org/jetbrains/kotlin/serialization/AnnotationSerializer.kt +++ b/compiler/serialization/src/org/jetbrains/kotlin/serialization/AnnotationSerializer.kt @@ -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") diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.kt index 454ed468906..be6b1167e04 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.kt @@ -14,14 +14,8 @@ val i3 = foo() fun foo(): Int = 1 -annotation class AnnJC(val i: Array>) -AnnJC(arrayOf(javaClass())) -AnnJC(arrayOf(iJC)) -class TestJC -val iJC = javaClass() - annotation class AnnAnn(val i: Array) AnnAnn(arrayOf(Ann(intArrayOf(1)))) AnnAnn(arrayOf(iAnn)) class TestAnn -val iAnn = Ann(intArrayOf(1)) \ No newline at end of file +val iAnn = Ann(intArrayOf(1)) diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.txt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.txt index 26c7f65ff07..f240fd6bcb1 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/array.txt @@ -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 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>) - internal final val i: kotlin.Array> - 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) public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } - -AnnJC(i = {javaClass()}: kotlin.Array>) AnnJC(i = {}: kotlin.Array>) 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 -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/classLiteral.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/classLiteral.kt deleted file mode 100644 index cd566466355..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/classLiteral.kt +++ /dev/null @@ -1,12 +0,0 @@ -// !DIAGNOSTICS: -JAVA_LANG_CLASS_PARAMETER_IN_ANNOTATION -annotation class AnnC(val c: Class<*>) - -AnnC(c) -class Test - -AnnC(javaClass()) -class Test2 - -val c: Class<*> = javaClass() - -class A diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/classLiteral.txt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/classLiteral.txt deleted file mode 100644 index 59bd6a99c4b..00000000000 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/classLiteral.txt +++ /dev/null @@ -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(): java.lang.Class) 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 -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.kt index 3b7d37d724f..88ec36e42dd 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.kt @@ -17,14 +17,8 @@ val i3 = foo() fun foo(): Int = 1 -annotation class AnnJC(vararg val i: Class<*>) -AnnJC(*arrayOf(javaClass())) -AnnJC(*arrayOf(iJC)) -class TestJC -val iJC = javaClass() - annotation class AnnAnn(vararg val i: Ann) AnnAnn(*arrayOf(Ann(1))) AnnAnn(*arrayOf(iAnn)) class TestAnn -val iAnn = Ann(1) \ No newline at end of file +val iAnn = Ann(1) diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.txt b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.txt index f6782620b80..cbb59d4c3e5 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/annotationParameterMustBeConstant/vararg.txt @@ -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 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>*/) - internal final val i: kotlin.Array> - 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) public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } - -AnnJC(i = {javaClass()}: kotlin.Array>) AnnJC(i = {}: kotlin.Array>) 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 -} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/qualifiedCallValue.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/qualifiedCallValue.kt index fe873501e6f..3f26304ee03 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/qualifiedCallValue.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/qualifiedCallValue.kt @@ -13,8 +13,6 @@ ann3(A.IAnn()) a.b.c.A.IAnn() ann3(a.b.c.A.IAnn()) -annJavaClass(kotlin.javaClass()) - 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()) - annotation class annArray(val p: Array = kotlin.arrayOf("a")) class A { annotation class IAnn -} \ No newline at end of file +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/qualifiedCallValue.txt b/compiler/testData/diagnostics/testsWithStdLib/annotations/qualifiedCallValue.txt index b0860f9b57c..3e5c364b0f3 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/qualifiedCallValue.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/qualifiedCallValue.txt @@ -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(): java.lang.Class) a.b.c.annArray(p = {"a"}: kotlin.Array) 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) 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 - } } } } diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithStdLibGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithStdLibGenerated.java index 505ffc00104..1c81825c76e 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithStdLibGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestWithStdLibGenerated.java @@ -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"); diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationArgumentVisitor.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationArgumentVisitor.java index c1d2acf49a8..80e4162a899 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationArgumentVisitor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/AnnotationArgumentVisitor.java @@ -49,8 +49,6 @@ public interface AnnotationArgumentVisitor { R visitAnnotationValue(AnnotationValue value, D data); - R visitJavaClassValue(JavaClassValue value, D data); - R visitKClassValue(KClassValue value, D data); R visitNumberTypeValue(IntegerValueTypeConstant value, D data); diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/DefaultAnnotationArgumentVisitor.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/DefaultAnnotationArgumentVisitor.java index 56134660544..96cbcb6da63 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/DefaultAnnotationArgumentVisitor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/annotations/DefaultAnnotationArgumentVisitor.java @@ -93,11 +93,6 @@ public abstract class DefaultAnnotationArgumentVisitor 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); diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt index 5924f4eb4d0..7ea5e76eea6 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt @@ -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() } diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/JavaClassValue.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/JavaClassValue.java deleted file mode 100644 index 905f21ef648..00000000000 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/constants/JavaClassValue.java +++ /dev/null @@ -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 { - - 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 accept(AnnotationArgumentVisitor visitor, D data) { - return visitor.visitJavaClassValue(this, data); - } - - @Override - public String toString() { - return getValue() + ".class"; - } -}