From aa1548a83bd0c1fda4ed26468fbb91fb44b20273 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Tue, 19 May 2015 12:12:45 +0300 Subject: [PATCH] Report obsolete labels syntax deprecation on objects #KT-7771 Fixed --- .../kotlin/resolve/DeclarationsChecker.java | 1 + .../tests/annotations/bracketsDeprecation.kt | 10 +++++++++ .../tests/annotations/bracketsDeprecation.txt | 21 +++++++++++++++++++ .../inner/selfAnnotationForClassObject.kt | 4 ++-- 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java index e7b0fe2c940..1f50355290d 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DeclarationsChecker.java @@ -234,6 +234,7 @@ public class DeclarationsChecker { } } private void checkObject(JetObjectDeclaration declaration, ClassDescriptor classDescriptor) { + AnnotationResolver.reportDeprecatedAnnotationSyntax(declaration.getAnnotations(), trace); reportErrorIfHasIllegalModifier(declaration); if (declaration.isLocal() && !declaration.isCompanion() && !declaration.isObjectLiteral()) { trace.report(LOCAL_OBJECT_NOT_ALLOWED.on(declaration, classDescriptor)); diff --git a/compiler/testData/diagnostics/tests/annotations/bracketsDeprecation.kt b/compiler/testData/diagnostics/tests/annotations/bracketsDeprecation.kt index c1a48f860ce..44c9e486cea 100644 --- a/compiler/testData/diagnostics/tests/annotations/bracketsDeprecation.kt +++ b/compiler/testData/diagnostics/tests/annotations/bracketsDeprecation.kt @@ -23,10 +23,20 @@ fun bar2(): Array = null!! fun x(): [Ann] String { [Ann] val x: [Ann] String = "" + + val localVal = [Ann] object {} + return "" } + + [Ann] object O1 {} + [Ann] companion object O2 { + + } } +[Ann] object O3 {} + val y: Array<[Ann] String?> = arrayOfNulls(1) val block: ([Ann] x: [Ann] String) -> [Ann] String = { "" } interface B diff --git a/compiler/testData/diagnostics/tests/annotations/bracketsDeprecation.txt b/compiler/testData/diagnostics/tests/annotations/bracketsDeprecation.txt index 2a692f57342..4ff1df0e9ff 100644 --- a/compiler/testData/diagnostics/tests/annotations/bracketsDeprecation.txt +++ b/compiler/testData/diagnostics/tests/annotations/bracketsDeprecation.txt @@ -14,6 +14,20 @@ Ann() Ann() internal final class A { public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String internal final fun x(): @[Ann()] kotlin.String + + Ann() internal object O1 { + private constructor O1() + 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() internal companion object O2 { + private constructor O2() + 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 Ann : kotlin.Annotation { @@ -43,6 +57,13 @@ Ann() internal final class MyClass { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } +Ann() internal object O3 { + private constructor O3() + 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 +} + kotlin.data() internal final class Q { public constructor Q(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.Int) internal final val x: kotlin.Int diff --git a/compiler/testData/diagnostics/tests/inner/selfAnnotationForClassObject.kt b/compiler/testData/diagnostics/tests/inner/selfAnnotationForClassObject.kt index b5b7acf6b4b..411bc4b8899 100644 --- a/compiler/testData/diagnostics/tests/inner/selfAnnotationForClassObject.kt +++ b/compiler/testData/diagnostics/tests/inner/selfAnnotationForClassObject.kt @@ -1,6 +1,6 @@ class Test { - [ClassObjectAnnotation] - [NestedAnnotation] + @ClassObjectAnnotation + @NestedAnnotation companion object { annotation class ClassObjectAnnotation }