Deprecate inlineOption in favor of crossinline modifier
This commit is contained in:
+1
-1
@@ -629,7 +629,7 @@ public class DefaultErrorMessages {
|
||||
MAP.put(NULLABLE_INLINE_PARAMETER, "Inline-parameter ''{0}'' of ''{1}'' must not be nullable. Annotate the parameter with [noinline] or make not nullable", ELEMENT_TEXT, SHORT_NAMES_IN_TYPES);
|
||||
MAP.put(RECURSION_IN_INLINE, "Inline-function ''{1}'' can't be recursive", ELEMENT_TEXT, SHORT_NAMES_IN_TYPES);
|
||||
//Inline non Locals
|
||||
MAP.put(NON_LOCAL_RETURN_NOT_ALLOWED, "Can''t inline ''{0}'' here: it may contain non-local returns. Annotate parameter declaration ''{0}'' with ''inlineOptions(ONLY_LOCAL_RETURN)''", ELEMENT_TEXT, SHORT_NAMES_IN_TYPES, SHORT_NAMES_IN_TYPES);
|
||||
MAP.put(NON_LOCAL_RETURN_NOT_ALLOWED, "Can''t inline ''{0}'' here: it may contain non-local returns. Add ''crossinline'' modifier to parameter declaration ''{0}''", ELEMENT_TEXT, SHORT_NAMES_IN_TYPES, SHORT_NAMES_IN_TYPES);
|
||||
MAP.put(INLINE_CALL_CYCLE, "The ''{0}'' invocation is a part of inline cycle", NAME);
|
||||
MAP.put(NON_LOCAL_RETURN_IN_DISABLED_INLINE, "Non-local returns are not allowed with inlining disabled");
|
||||
MAP.put(ACCESS_TO_PRIVATE_TOP_LEVEL_FROM_ANOTHER_FILE, "Access to private top-level declarations from another file will soon be forbidden: ''{0}'' is ''{1}'' in ''{2}''", NAME, TO_STRING, RENDER_FILE);
|
||||
|
||||
@@ -176,6 +176,7 @@ public interface JetTokens {
|
||||
JetModifierKeywordToken TAILREC_KEYWORD = JetModifierKeywordToken.softKeywordModifier("tailrec");
|
||||
JetModifierKeywordToken EXTERNAL_KEYWORD = JetModifierKeywordToken.softKeywordModifier("external");
|
||||
JetModifierKeywordToken ANNOTATION_KEYWORD = JetModifierKeywordToken.softKeywordModifier("annotation");
|
||||
JetModifierKeywordToken CROSSINLINE_KEYWORD = JetModifierKeywordToken.softKeywordModifier("crossinline");
|
||||
|
||||
TokenSet KEYWORDS = TokenSet.create(PACKAGE_KEYWORD, AS_KEYWORD, TYPE_ALIAS_KEYWORD, CLASS_KEYWORD, TRAIT_KEYWORD, INTERFACE_KEYWORD,
|
||||
THIS_KEYWORD, SUPER_KEYWORD, VAL_KEYWORD, VAR_KEYWORD, FUN_KEYWORD, FOR_KEYWORD,
|
||||
@@ -194,7 +195,7 @@ public interface JetTokens {
|
||||
FIELD_KEYWORD, PROPERTY_KEYWORD, RECEIVER_KEYWORD, PARAM_KEYWORD, SPARAM_KEYWORD,
|
||||
LATE_INIT_KEYWORD,
|
||||
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD,
|
||||
ANNOTATION_KEYWORD
|
||||
ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD
|
||||
);
|
||||
|
||||
/*
|
||||
@@ -207,12 +208,12 @@ public interface JetTokens {
|
||||
ABSTRACT_KEYWORD, ENUM_KEYWORD, OPEN_KEYWORD, INNER_KEYWORD, OVERRIDE_KEYWORD, PRIVATE_KEYWORD,
|
||||
PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD,
|
||||
REIFIED_KEYWORD, COMPANION_KEYWORD, SEALED_KEYWORD, LATE_INIT_KEYWORD,
|
||||
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD
|
||||
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD
|
||||
};
|
||||
|
||||
// Please synchronize this array with org.jetbrains.kotlin.descriptors.annotations.ANNOTATION_MODIFIERS_FQ_NAMES
|
||||
JetModifierKeywordToken[] ANNOTATION_MODIFIERS_KEYWORDS_ARRAY = new JetModifierKeywordToken[] {
|
||||
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD
|
||||
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD
|
||||
};
|
||||
|
||||
TokenSet ANNOTATION_MODIFIERS_KEYWORDS = TokenSet.create(ANNOTATION_MODIFIERS_KEYWORDS_ARRAY);
|
||||
|
||||
@@ -63,7 +63,8 @@ public object ModifierCheckerCore {
|
||||
NOINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER),
|
||||
TAILREC_KEYWORD to EnumSet.of(FUNCTION),
|
||||
EXTERNAL_KEYWORD to EnumSet.of(FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER),
|
||||
ANNOTATION_KEYWORD to EnumSet.of(ANNOTATION_CLASS)
|
||||
ANNOTATION_KEYWORD to EnumSet.of(ANNOTATION_CLASS),
|
||||
CROSSINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER)
|
||||
)
|
||||
|
||||
// NOTE: redundant targets must be possible!
|
||||
|
||||
@@ -66,7 +66,8 @@ public class InlineUtil {
|
||||
}
|
||||
|
||||
public static boolean hasOnlyLocalReturn(@NotNull ValueParameterDescriptor descriptor) {
|
||||
return hasInlineOption(descriptor, InlineOption.ONLY_LOCAL_RETURN);
|
||||
return hasInlineOption(descriptor, InlineOption.ONLY_LOCAL_RETURN)
|
||||
|| descriptor.getAnnotations().findAnnotation(KotlinBuiltIns.FQ_NAMES.crossinline) != null;
|
||||
}
|
||||
|
||||
private static boolean hasInlineOption(@NotNull ValueParameterDescriptor descriptor, @NotNull InlineOption option) {
|
||||
|
||||
+5
-1
@@ -1252,6 +1252,10 @@ public object Unit {
|
||||
/*primary*/ private constructor Unit()
|
||||
}
|
||||
|
||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) kotlin.annotation.MustBeDocumented() kotlin.annotation.annotation() public final class crossinline : kotlin.Annotation {
|
||||
/*primary*/ public constructor crossinline()
|
||||
}
|
||||
|
||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASSIFIER}) kotlin.annotation.MustBeDocumented() kotlin.annotation.annotation() public final class data : kotlin.Annotation {
|
||||
/*primary*/ public constructor data()
|
||||
}
|
||||
@@ -1264,7 +1268,7 @@ kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION, Annotation
|
||||
/*primary*/ public constructor inline()
|
||||
}
|
||||
|
||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) kotlin.annotation.MustBeDocumented() kotlin.annotation.annotation() public final class inlineOptions : kotlin.Annotation {
|
||||
kotlin.annotation.Target(allowedTargets = {AnnotationTarget.VALUE_PARAMETER}) kotlin.annotation.Retention(value = AnnotationRetention.RUNTIME) kotlin.annotation.MustBeDocumented() kotlin.Deprecated(value = "Use 'crossinline' modifier instead of 'inlineOptions(InlineOption.ONLY_LOCAL_RETURN)'") kotlin.annotation.annotation() public final class inlineOptions : kotlin.Annotation {
|
||||
/*primary*/ public constructor inlineOptions(/*0*/ vararg value: kotlin.InlineOption /*kotlin.Array<out kotlin.InlineOption>*/)
|
||||
public final val value: kotlin.Array<out kotlin.InlineOption>
|
||||
public final fun <get-value>(): kotlin.Array<out kotlin.InlineOption>
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
||||
import kotlin.InlineOption.*
|
||||
|
||||
inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
|
||||
inline fun <R> inlineFunOnlyLocal(crossinline p: () -> R) {
|
||||
val s = object {
|
||||
|
||||
val z = p()
|
||||
@@ -21,4 +21,4 @@ inline fun <R> inlineFun(p: () -> R) {
|
||||
<!NON_LOCAL_RETURN_NOT_ALLOWED!>p<!>()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
kotlin.inline() public fun </*0*/ R> inlineFun(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
||||
import kotlin.InlineOption.*
|
||||
|
||||
inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
|
||||
inline fun <R> inlineFunOnlyLocal(crossinline p: () -> R) {
|
||||
val s = object {
|
||||
|
||||
val z = p();
|
||||
@@ -46,4 +46,4 @@ inline fun <R> inlineFun(p: () -> R) {
|
||||
|
||||
inline fun <R> doCall(p: () -> R) {
|
||||
p()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@ package
|
||||
|
||||
kotlin.inline() public fun </*0*/ R> doCall(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFun(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
import kotlin.InlineOption.*
|
||||
|
||||
inline fun <R> onlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
|
||||
inline fun <R> onlyLocal(crossinline p: () -> R) {
|
||||
inlineAll(p)
|
||||
}
|
||||
|
||||
inline fun <R> inlineAll(p: () -> R) {
|
||||
p()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
kotlin.inline() public fun </*0*/ R> inlineAll(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> onlyLocal(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> onlyLocal(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import kotlin.InlineOption.*
|
||||
|
||||
inline fun <R> inlineFunWithAnnotation(@inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) {
|
||||
inline fun <R> inlineFunWithAnnotation(crossinline p: () -> R) {
|
||||
inlineFun {
|
||||
p()
|
||||
}
|
||||
@@ -14,4 +14,4 @@ inline fun <R> inlineFun2(p: () -> R) {
|
||||
|
||||
inline fun <R> inlineFun(p: () -> R) {
|
||||
p()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@ package
|
||||
|
||||
kotlin.inline() public fun </*0*/ R> inlineFun(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFun2(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunWithAnnotation(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunWithAnnotation(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
|
||||
+2
-2
@@ -5,6 +5,6 @@ inline fun testSameCaptured(lambdaWithResultCaptured: () -> Unit) : String {
|
||||
return "OK"
|
||||
}
|
||||
|
||||
inline fun <R> doWork(@inlineOptions(ONLY_LOCAL_RETURN) job: ()-> R) : R {
|
||||
inline fun <R> doWork(crossinline job: ()-> R) : R {
|
||||
return job()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
kotlin.inline() public fun </*0*/ R> doWork(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) job: () -> R): R
|
||||
kotlin.inline() public fun </*0*/ R> doWork(/*0*/ kotlin.crossinline() job: () -> R): R
|
||||
kotlin.inline() public fun testSameCaptured(/*0*/ lambdaWithResultCaptured: () -> kotlin.Unit): kotlin.String
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
||||
import kotlin.InlineOption.*
|
||||
|
||||
inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
|
||||
inline fun <R> inlineFunOnlyLocal(crossinline p: () -> R) {
|
||||
<!NOT_YET_SUPPORTED_IN_INLINE!>fun a() {
|
||||
val z = p()
|
||||
}<!>
|
||||
@@ -13,4 +13,4 @@ inline fun <R> inlineFun(p: () -> R) {
|
||||
<!NON_LOCAL_RETURN_NOT_ALLOWED!>p<!>()
|
||||
}<!>
|
||||
a()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
kotlin.inline() public fun </*0*/ R> inlineFun(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
||||
import kotlin.InlineOption.*
|
||||
|
||||
inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
|
||||
inline fun <R> inlineFunOnlyLocal(crossinline p: () -> R) {
|
||||
{
|
||||
p()
|
||||
}()
|
||||
@@ -11,4 +11,4 @@ inline fun <R> inlineFun(p: () -> R) {
|
||||
{
|
||||
<!NON_LOCAL_RETURN_NOT_ALLOWED!>p<!>()
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
kotlin.inline() public fun </*0*/ R> inlineFun(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
// !DIAGNOSTICS: -UNUSED_EXPRESSION -UNUSED_PARAMETER -UNUSED_VARIABLE -NOTHING_TO_INLINE
|
||||
import kotlin.InlineOption.*
|
||||
|
||||
inline fun <R> inlineFunOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN)p: () -> R) {
|
||||
inline fun <R> inlineFunOnlyLocal(crossinline p: () -> R) {
|
||||
<!NOT_YET_SUPPORTED_IN_INLINE!>class A {
|
||||
|
||||
val z = p()
|
||||
@@ -21,4 +21,4 @@ inline fun <R> inlineFun(p: () -> R) {
|
||||
<!NON_LOCAL_RETURN_NOT_ALLOWED!>p<!>()
|
||||
}
|
||||
}<!>
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
kotlin.inline() public fun </*0*/ R> inlineFun(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFunOnlyLocal(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
|
||||
+2
-2
@@ -39,6 +39,6 @@ fun <R> fun4ValueArgument(p: () -> R) {
|
||||
}
|
||||
|
||||
|
||||
inline fun <R> inlineFun(@inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) {
|
||||
inline fun <R> inlineFun(crossinline p: () -> R) {
|
||||
p()
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -6,4 +6,4 @@ public fun </*0*/ R> fun3(/*0*/ p: () -> R): kotlin.Unit
|
||||
public fun </*0*/ R> fun3ValueArgument(/*0*/ p: () -> R): kotlin.Unit
|
||||
public fun </*0*/ R> fun4(/*0*/ p: () -> R): kotlin.Unit
|
||||
public fun </*0*/ R> fun4ValueArgument(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFun(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> inlineFun(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
|
||||
Vendored
+2
-2
@@ -2,7 +2,7 @@
|
||||
import kotlin.InlineOption.*
|
||||
|
||||
class Z {
|
||||
inline fun <R> inlineFun(@inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) {
|
||||
inline fun <R> inlineFun(crossinline p: () -> R) {
|
||||
p()
|
||||
}
|
||||
}
|
||||
@@ -23,4 +23,4 @@ fun <R> fun4(p: () -> R) {
|
||||
Z() inlineFun lambda@ {
|
||||
return@lambda p();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -8,6 +8,6 @@ public final class Z {
|
||||
public constructor Z()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
kotlin.inline() public final fun </*0*/ R> inlineFun(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public final fun </*0*/ R> inlineFun(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import kotlin.InlineOption.*
|
||||
|
||||
inline fun <R> toOnlyLocal(@inlineOptions(ONLY_LOCAL_RETURN) p: () -> R) {
|
||||
inline fun <R> toOnlyLocal(crossinline p: () -> R) {
|
||||
p()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package
|
||||
|
||||
kotlin.inline() public fun </*0*/ R> inlineAll(/*0*/ p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> toOnlyLocal(/*0*/ kotlin.inlineOptions(value = {InlineOption.ONLY_LOCAL_RETURN}) p: () -> R): kotlin.Unit
|
||||
kotlin.inline() public fun </*0*/ R> toOnlyLocal(/*0*/ kotlin.crossinline() p: () -> R): kotlin.Unit
|
||||
|
||||
@@ -50,8 +50,17 @@ public annotation class inline
|
||||
@Target(AnnotationTarget.VALUE_PARAMETER)
|
||||
@Retention(AnnotationRetention.RUNTIME)
|
||||
@MustBeDocumented
|
||||
@Deprecated("Use 'crossinline' modifier instead of 'inlineOptions(InlineOption.ONLY_LOCAL_RETURN)'")
|
||||
public annotation class inlineOptions(vararg val value: InlineOption)
|
||||
|
||||
/**
|
||||
* Forbids use of non-local control flow statements within lambdas passed as arguments for this parameter.
|
||||
*/
|
||||
@Target(AnnotationTarget.VALUE_PARAMETER)
|
||||
@Retention(AnnotationRetention.RUNTIME)
|
||||
@MustBeDocumented
|
||||
public annotation class crossinline
|
||||
|
||||
/**
|
||||
* Specifies the control flow statements which are allowed to be used for non-local control flow transfer in a lambda
|
||||
* passed as a parameter to an inline function.
|
||||
|
||||
@@ -180,6 +180,7 @@ public class KotlinBuiltIns {
|
||||
public final FqName tailRecursiveDeprecated = fqName("tailRecursive");
|
||||
public final FqName inline = fqName("inline");
|
||||
public final FqName noinline = fqName("noinline");
|
||||
public final FqName crossinline = fqName("crossinline");
|
||||
public final FqName inlineOptions = fqName("inlineOptions");
|
||||
public final FqName extension = fqName("Extension");
|
||||
public final FqName target = annotationName("Target");
|
||||
|
||||
@@ -20,4 +20,4 @@ import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
// Please synchronize this set with JetTokens.ANNOTATION_MODIFIERS_KEYWORDS_ARRAY
|
||||
public val ANNOTATION_MODIFIERS_FQ_NAMES: Set<FqName> =
|
||||
arrayOf("data", "inline", "noinline", "tailrec", "external", "annotation.annotation").map { FqName("kotlin.$it") }.toSet()
|
||||
arrayOf("data", "inline", "noinline", "tailrec", "external", "annotation.annotation", "crossinline").map { FqName("kotlin.$it") }.toSet()
|
||||
|
||||
@@ -42,4 +42,5 @@ class MouseMovedEventArgs
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -45,5 +45,6 @@ class B {
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
/*TODO*/
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -45,4 +45,5 @@ class A {
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -45,5 +45,6 @@ var a : Int
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
/*TODO*/
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -43,4 +43,5 @@ public class Test {
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -37,4 +37,5 @@ class TestClass {
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -36,5 +36,6 @@ package Test
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
/*TODO*/
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -41,4 +41,5 @@ class Some {
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -41,4 +41,5 @@ class Some {
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -43,4 +43,5 @@ class Some {
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
// NOTHING_ELSE
|
||||
|
||||
@@ -35,5 +35,6 @@
|
||||
// EXIST: tailrec
|
||||
// EXIST: external
|
||||
// EXIST: annotation
|
||||
// EXIST: crossinline
|
||||
/*TODO*/
|
||||
// NOTHING_ELSE
|
||||
|
||||
Reference in New Issue
Block a user