/* * 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 file. */ import kotlin.test.* import kotlin.reflect.* @OptIn(ExperimentalAssociatedObjects::class) fun box(): String { assertSame(Bar, Foo::class.findAssociatedObject()) assertSame(Baz, Foo::class.findAssociatedObject()) assertSame(null, Foo::class.findAssociatedObject()) assertSame(null, Bar::class.findAssociatedObject()) return "OK" } @OptIn(ExperimentalAssociatedObjects::class) @AssociatedObjectKey @Retention(AnnotationRetention.BINARY) annotation class Associated1(val kClass: KClass<*>) @OptIn(ExperimentalAssociatedObjects::class) @AssociatedObjectKey @Retention(AnnotationRetention.BINARY) annotation class Associated2(val kClass: KClass<*>) @OptIn(ExperimentalAssociatedObjects::class) @AssociatedObjectKey @Retention(AnnotationRetention.BINARY) annotation class Associated3(val kClass: KClass<*>) @Associated1(Bar::class) @Associated2(Baz::class) class Foo object Bar object Baz