Introduce 'coroutine'/'suspend' modifiers

This commit is contained in:
Denis Zharkov
2016-05-16 18:39:02 +03:00
parent 38d74a16fe
commit 329fb9d619
62 changed files with 263 additions and 17 deletions
@@ -130,7 +130,7 @@ private class FunctionClsStubBuilder(
val modalityModifier = if (isTopLevel) listOf() else listOf(MODALITY)
val modifierListStubImpl = createModifierListStubForDeclaration(
callableStub, functionProto.flags,
listOf(VISIBILITY, OPERATOR, INFIX, EXTERNAL_FUN, INLINE, TAILREC) + modalityModifier
listOf(VISIBILITY, OPERATOR, INFIX, EXTERNAL_FUN, INLINE, TAILREC, SUSPEND) + modalityModifier
)
val annotationIds = c.components.annotationLoader.loadCallableAnnotations(
@@ -171,6 +171,9 @@ class TypeClsStubBuilder(private val c: ClsStubBuilderContext) {
if (varargElementType != null) { modifiers.add(KtTokens.VARARG_KEYWORD) }
if (Flags.IS_CROSSINLINE.get(valueParameterProto.flags)) { modifiers.add(KtTokens.CROSSINLINE_KEYWORD) }
if (Flags.IS_NOINLINE.get(valueParameterProto.flags)) { modifiers.add(KtTokens.NOINLINE_KEYWORD) }
if (Flags.IS_COROUTINE.get(valueParameterProto.flags)) {
modifiers.add(KtTokens.COROUTINE_KEYWORD)
}
val modifierList = createModifierListStub(parameterStub, modifiers)
val parameterAnnotations = c.components.annotationLoader.loadValueParameterAnnotations(
@@ -60,6 +60,7 @@ val DATA = createBooleanFlagToModifier(Flags.IS_DATA, KtTokens.DATA_KEYWORD)
val EXTERNAL_FUN = createBooleanFlagToModifier(Flags.IS_EXTERNAL_FUNCTION, KtTokens.EXTERNAL_KEYWORD)
val INLINE = createBooleanFlagToModifier(Flags.IS_INLINE, KtTokens.INLINE_KEYWORD)
val TAILREC = createBooleanFlagToModifier(Flags.IS_TAILREC, KtTokens.TAILREC_KEYWORD)
val SUSPEND = createBooleanFlagToModifier(Flags.IS_SUSPEND, KtTokens.SUSPEND_KEYWORD)
private fun createBooleanFlagToModifier(
flagField: Flags.BooleanFlagField, ktModifierKeywordToken: KtModifierKeywordToken