From 7b46d22877b1ad58017836a83321a2f2a12b37bf Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Thu, 6 Sep 2018 02:24:47 +0300 Subject: [PATCH] Introduce common KClass interface #KT-25935 --- core/builtins/src/kotlin/reflect/KClass.kt | 21 +++++------------- libraries/stdlib/src/kotlin/reflect/KClass.kt | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+), 15 deletions(-) create mode 100644 libraries/stdlib/src/kotlin/reflect/KClass.kt diff --git a/core/builtins/src/kotlin/reflect/KClass.kt b/core/builtins/src/kotlin/reflect/KClass.kt index 0e318047776..189b1f12137 100644 --- a/core/builtins/src/kotlin/reflect/KClass.kt +++ b/core/builtins/src/kotlin/reflect/KClass.kt @@ -1,19 +1,10 @@ /* - * 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. + * 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. */ +@file:Suppress("ACTUAL_WITHOUT_EXPECT") // for building kotlin-runtime + package kotlin.reflect /** @@ -24,12 +15,12 @@ package kotlin.reflect * * @param T the type of the class. */ -public interface KClass : KDeclarationContainer, KAnnotatedElement, KClassifier { +public actual interface KClass : KDeclarationContainer, KAnnotatedElement, KClassifier { /** * The simple name of the class as it was declared in the source code, * or `null` if the class has no name (if, for example, it is an anonymous object literal). */ - public val simpleName: String? + public actual val simpleName: String? /** * The fully qualified dot-separated name of the class, diff --git a/libraries/stdlib/src/kotlin/reflect/KClass.kt b/libraries/stdlib/src/kotlin/reflect/KClass.kt new file mode 100644 index 00000000000..a01ce91137b --- /dev/null +++ b/libraries/stdlib/src/kotlin/reflect/KClass.kt @@ -0,0 +1,22 @@ +/* + * 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 kotlin.reflect + +/** + * Represents a class and provides introspection capabilities. + * Instances of this class are obtainable by the `::class` syntax. + * See the [Kotlin language documentation](http://kotlinlang.org/docs/reference/reflection.html#class-references) + * for more information. + * + * @param T the type of the class. + */ +public expect interface KClass { + /** + * The simple name of the class as it was declared in the source code, + * or `null` if the class has no name (if, for example, it is an anonymous object literal). + */ + public val simpleName: String? +} \ No newline at end of file