Mark KAnnotatedElement.hasAnnotation as experimental

#KT-29041 Fixed
This commit is contained in:
Alexander Udalov
2019-03-07 13:49:57 +01:00
parent a342f844b8
commit d8b364ea40
5 changed files with 25 additions and 18 deletions
@@ -1,3 +1,4 @@
// !USE_EXPERIMENTAL: kotlin.ExperimentalStdlibApi
// TARGET_BACKEND: JVM
// WITH_REFLECT
@@ -19300,6 +19300,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/reflection/annotations/findAnnotation.kt");
}
@TestMetadata("hasAnnotation.kt")
public void testHasAnnotation() throws Exception {
runTest("compiler/testData/codegen/box/reflection/annotations/hasAnnotation.kt");
}
@TestMetadata("localClassLiteral.kt")
public void testLocalClassLiteral() throws Exception {
runTest("compiler/testData/codegen/box/reflection/annotations/localClassLiteral.kt");
@@ -19300,6 +19300,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/reflection/annotations/findAnnotation.kt");
}
@TestMetadata("hasAnnotation.kt")
public void testHasAnnotation() throws Exception {
runTest("compiler/testData/codegen/box/reflection/annotations/hasAnnotation.kt");
}
@TestMetadata("localClassLiteral.kt")
public void testLocalClassLiteral() throws Exception {
runTest("compiler/testData/codegen/box/reflection/annotations/localClassLiteral.kt");
@@ -19305,6 +19305,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/reflection/annotations/findAnnotation.kt");
}
@TestMetadata("hasAnnotation.kt")
public void testHasAnnotation() throws Exception {
runTest("compiler/testData/codegen/box/reflection/annotations/hasAnnotation.kt");
}
@TestMetadata("localClassLiteral.kt")
public void testLocalClassLiteral() throws Exception {
runTest("compiler/testData/codegen/box/reflection/annotations/localClassLiteral.kt");
@@ -1,20 +1,10 @@
/*
* Copyright 2010-2016 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.
* Copyright 2010-2019 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.
*/
@file:JvmName("KAnnotatedElements")
package kotlin.reflect.full
import kotlin.reflect.*
@@ -24,12 +14,13 @@ import kotlin.reflect.*
*/
@SinceKotlin("1.1")
inline fun <reified T : Annotation> KAnnotatedElement.findAnnotation(): T? =
@Suppress("UNCHECKED_CAST")
annotations.firstOrNull { it is T } as T?
@Suppress("UNCHECKED_CAST")
annotations.firstOrNull { it is T } as T?
/**
* Returns true if this element is annotated with [T], false otherwise
* Returns true if this element is annotated with an annotation of type [T].
*/
@SinceKotlin("1.4")
@ExperimentalStdlibApi
@SinceKotlin("1.3")
inline fun <reified T : Annotation> KAnnotatedElement.hasAnnotation(): Boolean =
findAnnotation<T>() != null
findAnnotation<T>() != null