1 /* 2 * Copyright 2016-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3 */ 4 5 package kotlinx.coroutines 6 7 import kotlinx.coroutines.flow.Flow 8 9 /** 10 * Marks declarations that are still **experimental** in coroutines API, which means that the design of the 11 * corresponding declarations has open issues which may (or may not) lead to their changes in the future. 12 * Roughly speaking, there is a chance that those declarations will be deprecated in the near future or 13 * the semantics of their behavior may change in some way that may break some code. 14 */ 15 @MustBeDocumented 16 @Retention(value = AnnotationRetention.BINARY) 17 @Experimental(level = Experimental.Level.WARNING) 18 public annotation class ExperimentalCoroutinesApi 19 20 /** 21 * Marks [Flow]-related API as a feature preview. 22 * 23 * Flow preview has **no** backward compatibility guarantees, including both binary and source compatibility. 24 * Its API and semantics can and will be changed in next releases. 25 * 26 * Feature preview can be used to evaluate its real-world strengths and weaknesses, gather and provide feedback. 27 * According to the feedback, [Flow] will be refined on its road to stabilization and promotion to a stable API. 28 * 29 * The best way to speed up preview feature promotion is providing the feedback on the feature. 30 */ 31 @MustBeDocumented 32 @Retention(value = AnnotationRetention.BINARY) 33 @Experimental(level = Experimental.Level.WARNING) 34 @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.TYPEALIAS, AnnotationTarget.PROPERTY) 35 public annotation class FlowPreview 36 37 /** 38 * Marks declarations that are **obsolete** in coroutines API, which means that the design of the corresponding 39 * declarations has serious known flaws and they will be redesigned in the future. 40 * Roughly speaking, these declarations will be deprecated in the future but there is no replacement for them yet, 41 * so they cannot be deprecated right away. 42 */ 43 @MustBeDocumented 44 @Retention(value = AnnotationRetention.BINARY) 45 @Experimental(level = Experimental.Level.WARNING) 46 public annotation class ObsoleteCoroutinesApi 47 48 /** 49 * Marks declarations that are **internal** in coroutines API, which means that should not be used outside of 50 * `kotlinx.coroutines`, because their signatures and semantics will change between future releases without any 51 * warnings and without providing any migration aids. 52 */ 53 @Retention(value = AnnotationRetention.BINARY) 54 @Experimental(level = Experimental.Level.ERROR) 55 @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.TYPEALIAS, AnnotationTarget.PROPERTY) 56 public annotation class InternalCoroutinesApi 57