Restrict retention for annotations with target EXPRESSION
#KT-13762 Fixed
This commit is contained in:
@@ -229,6 +229,9 @@ public interface Errors {
|
|||||||
DiagnosticFactory0<KtAnnotationEntry> ANNOTATION_USED_AS_ANNOTATION_ARGUMENT = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtAnnotationEntry> ANNOTATION_USED_AS_ANNOTATION_ARGUMENT = DiagnosticFactory0.create(ERROR);
|
||||||
DiagnosticFactory0<KtExpression> ANNOTATION_ARGUMENT_IS_NON_CONST = DiagnosticFactory0.create(WARNING);
|
DiagnosticFactory0<KtExpression> ANNOTATION_ARGUMENT_IS_NON_CONST = DiagnosticFactory0.create(WARNING);
|
||||||
|
|
||||||
|
DiagnosticFactory0<PsiElement> RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION = DiagnosticFactory0.create(ERROR);
|
||||||
|
DiagnosticFactory0<PsiElement> RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION_WARNING = DiagnosticFactory0.create(WARNING);
|
||||||
|
|
||||||
DiagnosticFactory0<KtClassOrObject> LOCAL_ANNOTATION_CLASS = DiagnosticFactory0.create(WARNING);
|
DiagnosticFactory0<KtClassOrObject> LOCAL_ANNOTATION_CLASS = DiagnosticFactory0.create(WARNING);
|
||||||
DiagnosticFactory0<KtClassOrObject> LOCAL_ANNOTATION_CLASS_ERROR = DiagnosticFactory0.create(ERROR);
|
DiagnosticFactory0<KtClassOrObject> LOCAL_ANNOTATION_CLASS_ERROR = DiagnosticFactory0.create(ERROR);
|
||||||
|
|
||||||
|
|||||||
+5
@@ -840,6 +840,11 @@ public class DefaultErrorMessages {
|
|||||||
MAP.put(ANNOTATION_USED_AS_ANNOTATION_ARGUMENT, "An annotation can't be used as the annotations argument");
|
MAP.put(ANNOTATION_USED_AS_ANNOTATION_ARGUMENT, "An annotation can't be used as the annotations argument");
|
||||||
MAP.put(ANNOTATION_ARGUMENT_IS_NON_CONST, "An annotation argument must be a compile-time constant");
|
MAP.put(ANNOTATION_ARGUMENT_IS_NON_CONST, "An annotation argument must be a compile-time constant");
|
||||||
|
|
||||||
|
MAP.put(RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION,
|
||||||
|
"Expression annotations with retention other than SOURCE are prohibited");
|
||||||
|
MAP.put(RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION_WARNING,
|
||||||
|
"Expression annotations with retention other than SOURCE are deprecated");
|
||||||
|
|
||||||
MAP.put(LOCAL_ANNOTATION_CLASS, "Local annotation classes are deprecated and will be unsupported in a future release");
|
MAP.put(LOCAL_ANNOTATION_CLASS, "Local annotation classes are deprecated and will be unsupported in a future release");
|
||||||
MAP.put(LOCAL_ANNOTATION_CLASS_ERROR, "Annotation class cannot be local");
|
MAP.put(LOCAL_ANNOTATION_CLASS_ERROR, "Annotation class cannot be local");
|
||||||
|
|
||||||
|
|||||||
@@ -118,7 +118,8 @@ private val DEFAULT_DECLARATION_CHECKERS = listOf(
|
|||||||
KClassWithIncorrectTypeArgumentChecker,
|
KClassWithIncorrectTypeArgumentChecker,
|
||||||
SuspendOperatorsCheckers,
|
SuspendOperatorsCheckers,
|
||||||
InlineClassDeclarationChecker,
|
InlineClassDeclarationChecker,
|
||||||
PropertiesWithBackingFieldsInsideInlineClass()
|
PropertiesWithBackingFieldsInsideInlineClass(),
|
||||||
|
AnnotationClassTargetAndRetentionChecker()
|
||||||
)
|
)
|
||||||
|
|
||||||
private val DEFAULT_CALL_CHECKERS = listOf(
|
private val DEFAULT_CALL_CHECKERS = listOf(
|
||||||
|
|||||||
+48
@@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.resolve.checkers
|
||||||
|
|
||||||
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
|
import org.jetbrains.kotlin.config.LanguageFeature
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.annotations.KotlinRetention
|
||||||
|
import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget
|
||||||
|
import org.jetbrains.kotlin.diagnostics.Errors
|
||||||
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
|
import org.jetbrains.kotlin.resolve.AnnotationChecker
|
||||||
|
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||||
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
|
import org.jetbrains.kotlin.resolve.descriptorUtil.getAnnotationRetention
|
||||||
|
|
||||||
|
class AnnotationClassTargetAndRetentionChecker : DeclarationChecker {
|
||||||
|
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
|
||||||
|
if (descriptor !is ClassDescriptor) return
|
||||||
|
if (declaration !is KtClassOrObject) return
|
||||||
|
if (!DescriptorUtils.isAnnotationClass(descriptor)) return
|
||||||
|
|
||||||
|
val targets = AnnotationChecker.applicableTargetSet(descriptor) ?: return
|
||||||
|
val retention = descriptor.getAnnotationRetention() ?: KotlinRetention.RUNTIME
|
||||||
|
|
||||||
|
if (targets.contains(KotlinTarget.EXPRESSION) && retention != KotlinRetention.SOURCE) {
|
||||||
|
val retentionAnnotation = descriptor.annotations.findAnnotation(KotlinBuiltIns.FQ_NAMES.retention)
|
||||||
|
val targetAnnotation = descriptor.annotations.findAnnotation(KotlinBuiltIns.FQ_NAMES.target)
|
||||||
|
|
||||||
|
val diagnostics =
|
||||||
|
if (context.languageVersionSettings.supportsFeature(LanguageFeature.RestrictRetentionForExpressionAnnotations))
|
||||||
|
Errors.RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION
|
||||||
|
else
|
||||||
|
Errors.RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION_WARNING
|
||||||
|
context.trace.report(diagnostics.on(retentionAnnotation?.psi ?: targetAnnotation?.psi ?: declaration))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val AnnotationDescriptor.psi: PsiElement?
|
||||||
|
get() = DescriptorToSourceUtils.getSourceFromAnnotation(this)
|
||||||
|
}
|
||||||
+1
-1
@@ -2,5 +2,5 @@ package test
|
|||||||
|
|
||||||
import kotlin.annotation.AnnotationTarget.*
|
import kotlin.annotation.AnnotationTarget.*
|
||||||
|
|
||||||
@Target(CLASS, ANNOTATION_CLASS, TYPE_PARAMETER, PROPERTY, FIELD, LOCAL_VARIABLE, VALUE_PARAMETER, CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, TYPE, EXPRESSION, FILE)
|
@Target(CLASS, ANNOTATION_CLASS, TYPE_PARAMETER, PROPERTY, FIELD, LOCAL_VARIABLE, VALUE_PARAMETER, CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, TYPE, FILE)
|
||||||
annotation class Ann(val s: String)
|
annotation class Ann(val s: String)
|
||||||
|
|||||||
+1
-1
@@ -3,5 +3,5 @@ package test
|
|||||||
@Ann("class")
|
@Ann("class")
|
||||||
class Test {
|
class Test {
|
||||||
@Ann("function")
|
@Ann("function")
|
||||||
fun foo(@Ann("parameter") s: @Ann("parameter type") String): @Ann("return type") String = @Ann("expression") s
|
fun foo(@Ann("parameter") s: @Ann("parameter type") String): @Ann("return type") String = s
|
||||||
}
|
}
|
||||||
|
|||||||
Vendored
+13
@@ -0,0 +1,13 @@
|
|||||||
|
// !LANGUAGE: +RestrictRetentionForExpressionAnnotations
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
|
annotation class TestRetentionSource
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
<!RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION!>@Retention(AnnotationRetention.BINARY)<!>
|
||||||
|
annotation class TestRetentionBinary
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
<!RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION!>@Retention(AnnotationRetention.RUNTIME)<!>
|
||||||
|
annotation class TestRetentionRuntime
|
||||||
compiler/testData/diagnostics/tests/annotations/RetentionsOfAnnotationWithExpressionTarget_after.txt
Vendored
+22
@@ -0,0 +1,22 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) public final annotation class TestRetentionBinary : kotlin.Annotation {
|
||||||
|
public constructor TestRetentionBinary()
|
||||||
|
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.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) public final annotation class TestRetentionRuntime : kotlin.Annotation {
|
||||||
|
public constructor TestRetentionRuntime()
|
||||||
|
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.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class TestRetentionSource : kotlin.Annotation {
|
||||||
|
public constructor TestRetentionSource()
|
||||||
|
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
|
||||||
|
}
|
||||||
compiler/testData/diagnostics/tests/annotations/RetentionsOfAnnotationWithExpressionTarget_before.kt
Vendored
+13
@@ -0,0 +1,13 @@
|
|||||||
|
// !LANGUAGE: -RestrictRetentionForExpressionAnnotations
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
|
annotation class TestRetentionSource
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
<!RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION_WARNING!>@Retention(AnnotationRetention.BINARY)<!>
|
||||||
|
annotation class TestRetentionBinary
|
||||||
|
|
||||||
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
<!RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION_WARNING!>@Retention(AnnotationRetention.RUNTIME)<!>
|
||||||
|
annotation class TestRetentionRuntime
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) public final annotation class TestRetentionBinary : kotlin.Annotation {
|
||||||
|
public constructor TestRetentionBinary()
|
||||||
|
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.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) public final annotation class TestRetentionRuntime : kotlin.Annotation {
|
||||||
|
public constructor TestRetentionRuntime()
|
||||||
|
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.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class TestRetentionSource : kotlin.Annotation {
|
||||||
|
public constructor TestRetentionSource()
|
||||||
|
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
|
||||||
|
}
|
||||||
+3
@@ -1,8 +1,11 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class Ann1
|
annotation class Ann1
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class Ann2(val x: String)
|
annotation class Ann2(val x: String)
|
||||||
|
|
||||||
fun bar() {}
|
fun bar() {}
|
||||||
|
|||||||
+2
-2
@@ -5,14 +5,14 @@ public fun bar(/*0*/ block: () -> kotlin.Unit): kotlin.Unit
|
|||||||
public fun foo(/*0*/ y: kotlin.IntArray): kotlin.Unit
|
public fun foo(/*0*/ y: kotlin.IntArray): kotlin.Unit
|
||||||
public infix fun kotlin.Int.foo(/*0*/ other: kotlin.Int): kotlin.Int
|
public infix fun kotlin.Int.foo(/*0*/ other: kotlin.Int): kotlin.Int
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class Ann1 : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Ann1 : kotlin.Annotation {
|
||||||
public constructor Ann1()
|
public constructor Ann1()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class Ann2 : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class Ann2 : kotlin.Annotation {
|
||||||
public constructor Ann2(/*0*/ x: kotlin.String)
|
public constructor Ann2(/*0*/ x: kotlin.String)
|
||||||
public final val x: kotlin.String
|
public final val x: kotlin.String
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
// !WITH_NEW_INFERENCE
|
// !WITH_NEW_INFERENCE
|
||||||
@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class test
|
annotation class test
|
||||||
|
|
||||||
fun foo(@test <!UNUSED_PARAMETER!>f<!> : Int) {}
|
fun foo(@test <!UNUSED_PARAMETER!>f<!> : Int) {}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public final class Hello {
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION}) public final annotation class test : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class test : kotlin.Annotation {
|
||||||
public constructor 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 equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
fun foo() = @ann 1
|
fun foo() = @ann 1
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class ann
|
annotation class ann
|
||||||
@@ -2,7 +2,7 @@ package
|
|||||||
|
|
||||||
public fun foo(): kotlin.Int
|
public fun foo(): kotlin.Int
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class ann : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class ann : kotlin.Annotation {
|
||||||
public constructor ann()
|
public constructor ann()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class ExprAnn
|
annotation class ExprAnn
|
||||||
|
|
||||||
fun foo(): Int {
|
fun foo(): Int {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package
|
|||||||
|
|
||||||
public fun foo(): kotlin.Int
|
public fun foo(): kotlin.Int
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class ExprAnn : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class ExprAnn : kotlin.Annotation {
|
||||||
public constructor ExprAnn()
|
public constructor ExprAnn()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class ExprAnn
|
annotation class ExprAnn
|
||||||
|
|
||||||
@Target(AnnotationTarget.FUNCTION)
|
@Target(AnnotationTarget.FUNCTION)
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ package
|
|||||||
|
|
||||||
public fun foo(): kotlin.Int
|
public fun foo(): kotlin.Int
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class ExprAnn : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class ExprAnn : kotlin.Annotation {
|
||||||
public constructor ExprAnn()
|
public constructor ExprAnn()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ annotation class FunAnn
|
|||||||
annotation class SourceAnn
|
annotation class SourceAnn
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class ExprAnn
|
annotation class ExprAnn
|
||||||
|
|
||||||
fun bar(arg: () -> Int) = arg()
|
fun bar(arg: () -> Int) = arg()
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ public inline fun fast2(/*0*/ x: kotlin.Int, /*1*/ arg: () -> kotlin.Int): kotli
|
|||||||
public fun foo(/*0*/ arg: kotlin.Int): kotlin.Unit
|
public fun foo(/*0*/ arg: kotlin.Int): kotlin.Unit
|
||||||
@FunAnn public fun gav(): kotlin.Int
|
@FunAnn public fun gav(): kotlin.Int
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class ExprAnn : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class ExprAnn : kotlin.Annotation {
|
||||||
public constructor ExprAnn()
|
public constructor ExprAnn()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
annotation class FunAnn
|
annotation class FunAnn
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class ExprAnn
|
annotation class ExprAnn
|
||||||
|
|
||||||
fun foo(): Int {
|
fun foo(): Int {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package
|
|||||||
|
|
||||||
public fun foo(): kotlin.Int
|
public fun foo(): kotlin.Int
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class ExprAnn : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class ExprAnn : kotlin.Annotation {
|
||||||
public constructor ExprAnn()
|
public constructor ExprAnn()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ annotation class repann2(val f: Boolean)
|
|||||||
annotation class binrepann
|
annotation class binrepann
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
@Repeatable
|
@Repeatable
|
||||||
annotation class repexpr
|
annotation class repexpr
|
||||||
|
|
||||||
@@ -26,5 +27,5 @@ annotation class repexpr
|
|||||||
@binrepann <!NON_SOURCE_REPEATED_ANNOTATION!>@binrepann<!> class BinaryAnnotated
|
@binrepann <!NON_SOURCE_REPEATED_ANNOTATION!>@binrepann<!> class BinaryAnnotated
|
||||||
|
|
||||||
@repann <!NON_SOURCE_REPEATED_ANNOTATION!>@repann<!> fun foo(@repann <!NON_SOURCE_REPEATED_ANNOTATION!>@repann<!> x: Int): Int {
|
@repann <!NON_SOURCE_REPEATED_ANNOTATION!>@repann<!> fun foo(@repann <!NON_SOURCE_REPEATED_ANNOTATION!>@repann<!> x: Int): Int {
|
||||||
@repexpr <!NON_SOURCE_REPEATED_ANNOTATION!>@repexpr<!> return x
|
@repexpr @repexpr return x
|
||||||
}
|
}
|
||||||
@@ -60,7 +60,7 @@ package
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Repeatable public final annotation class repexpr : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.annotation.Repeatable public final annotation class repexpr : kotlin.Annotation {
|
||||||
public constructor repexpr()
|
public constructor repexpr()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
annotation class base
|
annotation class base
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION) annotation class special
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
|
annotation class special
|
||||||
|
|
||||||
fun transform(i: Int, tr: (Int) -> Int): Int = <!WRONG_ANNOTATION_TARGET!>@base<!> @special tr(@special i)
|
fun transform(i: Int, tr: (Int) -> Int): Int = <!WRONG_ANNOTATION_TARGET!>@base<!> @special tr(@special i)
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ public final annotation class base : kotlin.Annotation {
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class special : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class special : kotlin.Annotation {
|
||||||
public constructor special()
|
public constructor special()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class special
|
annotation class special
|
||||||
|
|
||||||
@Target(AnnotationTarget.TYPE)
|
@Target(AnnotationTarget.TYPE)
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ public fun transform(/*0*/ i: kotlin.Int, /*1*/ tr: (@special kotlin.Int) -> kot
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class special : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class special : kotlin.Annotation {
|
||||||
public constructor special()
|
public constructor special()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ annotation class ann(val y: Int)
|
|||||||
|
|
||||||
@ann(3) <!REPEATED_ANNOTATION!>@ann(7)<!> <!REPEATED_ANNOTATION!>@ann(42)<!> class TripleAnnotated
|
@ann(3) <!REPEATED_ANNOTATION!>@ann(7)<!> <!REPEATED_ANNOTATION!>@ann(42)<!> class TripleAnnotated
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION) annotation class annexpr
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
|
annotation class annexpr
|
||||||
|
|
||||||
@ann(0) <!REPEATED_ANNOTATION!>@ann(1)<!> fun foo(@ann(7) <!REPEATED_ANNOTATION!>@ann(2)<!> x: Int): Int {
|
@ann(0) <!REPEATED_ANNOTATION!>@ann(1)<!> fun foo(@ann(7) <!REPEATED_ANNOTATION!>@ann(2)<!> x: Int): Int {
|
||||||
@annexpr <!REPEATED_ANNOTATION!>@annexpr<!> return x
|
@annexpr <!REPEATED_ANNOTATION!>@annexpr<!> return x
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public final annotation class ann : kotlin.Annotation {
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class annexpr : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class annexpr : kotlin.Annotation {
|
||||||
public constructor annexpr()
|
public constructor annexpr()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class foo
|
annotation class foo
|
||||||
|
|
||||||
fun f(s : String?) : Boolean {
|
fun f(s : String?) : Boolean {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package
|
|||||||
|
|
||||||
public fun f(/*0*/ s: kotlin.String?): kotlin.Boolean
|
public fun f(/*0*/ s: kotlin.String?): kotlin.Boolean
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class foo : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class foo : kotlin.Annotation {
|
||||||
public constructor foo()
|
public constructor foo()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
+1
@@ -1,6 +1,7 @@
|
|||||||
// !LANGUAGE: +ExpectedTypeFromCast
|
// !LANGUAGE: +ExpectedTypeFromCast
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class bar
|
annotation class bar
|
||||||
|
|
||||||
fun <T> foo(): T = TODO()
|
fun <T> foo(): T = TODO()
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ public object X {
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class bar : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class bar : kotlin.Annotation {
|
||||||
public constructor bar()
|
public constructor bar()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// See KT-9134: smart cast is not provided inside lambda call
|
// See KT-9134: smart cast is not provided inside lambda call
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class My
|
annotation class My
|
||||||
|
|
||||||
fun bar(): Int = @My {
|
fun bar(): Int = @My {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package
|
|||||||
|
|
||||||
public fun bar(): kotlin.Int
|
public fun bar(): kotlin.Int
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class My : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class My : kotlin.Annotation {
|
||||||
public constructor My()
|
public constructor My()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
+2
-2
@@ -6,11 +6,11 @@ package foo
|
|||||||
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
||||||
annotation class AnnotationWithSourceRetention
|
annotation class AnnotationWithSourceRetention
|
||||||
|
|
||||||
@Retention(AnnotationRetention.BINARY)
|
<!RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION_WARNING!>@Retention(AnnotationRetention.BINARY)<!>
|
||||||
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
||||||
annotation class AnnotationWithBinaryRetention
|
annotation class AnnotationWithBinaryRetention
|
||||||
|
|
||||||
@Retention(AnnotationRetention.RUNTIME)
|
<!RESTRICTED_RETENTION_FOR_EXPRESSION_ANNOTATION_WARNING!>@Retention(AnnotationRetention.RUNTIME)<!>
|
||||||
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
|
||||||
annotation class AnnotationWithRuntimeRetention
|
annotation class AnnotationWithRuntimeRetention
|
||||||
|
|
||||||
|
|||||||
+14
@@ -87,3 +87,17 @@ public interface F {
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public interface F {
|
||||||
|
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 companion object Companion {
|
||||||
|
private constructor Companion()
|
||||||
|
@kotlin.jvm.JvmField public open val a: kotlin.Int = 3
|
||||||
|
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
+1
@@ -7,6 +7,7 @@ class A {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|
||||||
fun bar() {
|
fun bar() {
|
||||||
|
|||||||
+1
@@ -7,6 +7,7 @@ class A {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|
||||||
fun bar() {
|
fun bar() {
|
||||||
|
|||||||
+1
@@ -30,4 +30,5 @@ fun bar() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Target(AnnotationTarget.EXPRESSION)
|
@Target(AnnotationTarget.EXPRESSION)
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class Ann
|
annotation class Ann
|
||||||
|
|||||||
+2
@@ -16,8 +16,10 @@ annotation class E2
|
|||||||
|
|
||||||
@Experimental(Experimental.Level.WARNING)
|
@Experimental(Experimental.Level.WARNING)
|
||||||
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(EXPRESSION)<!>
|
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(EXPRESSION)<!>
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class E3
|
annotation class E3
|
||||||
|
|
||||||
@Experimental(Experimental.Level.WARNING)
|
@Experimental(Experimental.Level.WARNING)
|
||||||
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(FILE, EXPRESSION)<!>
|
<!EXPERIMENTAL_ANNOTATION_WITH_WRONG_TARGET!>@Target(FILE, EXPRESSION)<!>
|
||||||
|
@Retention(AnnotationRetention.SOURCE)
|
||||||
annotation class E4
|
annotation class E4
|
||||||
|
|||||||
+2
-2
@@ -16,14 +16,14 @@ package api {
|
|||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Experimental(level = Level.WARNING) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) public final annotation class E3 : kotlin.Annotation {
|
@kotlin.Experimental(level = Level.WARNING) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class E3 : kotlin.Annotation {
|
||||||
public constructor E3()
|
public constructor E3()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.Experimental(level = Level.WARNING) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FILE, AnnotationTarget.EXPRESSION}) public final annotation class E4 : kotlin.Annotation {
|
@kotlin.Experimental(level = Level.WARNING) @kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FILE, AnnotationTarget.EXPRESSION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) public final annotation class E4 : kotlin.Annotation {
|
||||||
public constructor E4()
|
public constructor E4()
|
||||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
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 hashCode(): kotlin.Int
|
||||||
|
|||||||
@@ -1068,6 +1068,16 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest {
|
|||||||
runTest("compiler/testData/diagnostics/tests/annotations/RecursivelyIncorrectlyAnnotatedParameter.kt");
|
runTest("compiler/testData/diagnostics/tests/annotations/RecursivelyIncorrectlyAnnotatedParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("RetentionsOfAnnotationWithExpressionTarget_after.kt")
|
||||||
|
public void testRetentionsOfAnnotationWithExpressionTarget_after() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/annotations/RetentionsOfAnnotationWithExpressionTarget_after.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("RetentionsOfAnnotationWithExpressionTarget_before.kt")
|
||||||
|
public void testRetentionsOfAnnotationWithExpressionTarget_before() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/annotations/RetentionsOfAnnotationWithExpressionTarget_before.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("typeAnnotations.kt")
|
@TestMetadata("typeAnnotations.kt")
|
||||||
public void testTypeAnnotations() throws Exception {
|
public void testTypeAnnotations() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt");
|
runTest("compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt");
|
||||||
|
|||||||
Generated
+10
@@ -1068,6 +1068,16 @@ public class DiagnosticsUsingJavacTestGenerated extends AbstractDiagnosticsUsing
|
|||||||
runTest("compiler/testData/diagnostics/tests/annotations/RecursivelyIncorrectlyAnnotatedParameter.kt");
|
runTest("compiler/testData/diagnostics/tests/annotations/RecursivelyIncorrectlyAnnotatedParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("RetentionsOfAnnotationWithExpressionTarget_after.kt")
|
||||||
|
public void testRetentionsOfAnnotationWithExpressionTarget_after() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/annotations/RetentionsOfAnnotationWithExpressionTarget_after.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("RetentionsOfAnnotationWithExpressionTarget_before.kt")
|
||||||
|
public void testRetentionsOfAnnotationWithExpressionTarget_before() throws Exception {
|
||||||
|
runTest("compiler/testData/diagnostics/tests/annotations/RetentionsOfAnnotationWithExpressionTarget_before.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("typeAnnotations.kt")
|
@TestMetadata("typeAnnotations.kt")
|
||||||
public void testTypeAnnotations() throws Exception {
|
public void testTypeAnnotations() throws Exception {
|
||||||
runTest("compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt");
|
runTest("compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt");
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ enum class LanguageFeature(
|
|||||||
ProhibitOperatorMod(KOTLIN_1_3, kind = BUG_FIX),
|
ProhibitOperatorMod(KOTLIN_1_3, kind = BUG_FIX),
|
||||||
ProhibitAssigningSingleElementsToVarargsInNamedForm(KOTLIN_1_3, kind = BUG_FIX),
|
ProhibitAssigningSingleElementsToVarargsInNamedForm(KOTLIN_1_3, kind = BUG_FIX),
|
||||||
FunctionTypesWithBigArity(KOTLIN_1_3, sinceApiVersion = ApiVersion.KOTLIN_1_3),
|
FunctionTypesWithBigArity(KOTLIN_1_3, sinceApiVersion = ApiVersion.KOTLIN_1_3),
|
||||||
|
RestrictRetentionForExpressionAnnotations(KOTLIN_1_3, kind = BUG_FIX),
|
||||||
|
|
||||||
StrictJavaNullabilityAssertions(sinceVersion = null, defaultState = State.DISABLED),
|
StrictJavaNullabilityAssertions(sinceVersion = null, defaultState = State.DISABLED),
|
||||||
ProperIeee754Comparisons(sinceVersion = null, defaultState = State.DISABLED, kind = BUG_FIX),
|
ProperIeee754Comparisons(sinceVersion = null, defaultState = State.DISABLED, kind = BUG_FIX),
|
||||||
|
|||||||
Reference in New Issue
Block a user