JS: support cross-module inlining of suspend functions
See KT-18063
This commit is contained in:
@@ -435,6 +435,10 @@ enum SpecialFunction {
|
||||
WRAP_FUNCTION = 2;
|
||||
TO_BOXED_CHAR = 3;
|
||||
UNBOX_CHAR = 4;
|
||||
SUSPEND_CALL = 5;
|
||||
COROUTINE_RESULT = 6;
|
||||
COROUTINE_CONTROLLER = 7;
|
||||
COROUTINE_RECEIVER = 8;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -522,6 +522,10 @@ class JsAstDeserializer(program: JsProgram, private val sourceRoots: Iterable<Fi
|
||||
JsAstProtoBuf.SpecialFunction.WRAP_FUNCTION -> SpecialFunction.WRAP_FUNCTION
|
||||
JsAstProtoBuf.SpecialFunction.TO_BOXED_CHAR -> SpecialFunction.TO_BOXED_CHAR
|
||||
JsAstProtoBuf.SpecialFunction.UNBOX_CHAR -> SpecialFunction.UNBOX_CHAR
|
||||
JsAstProtoBuf.SpecialFunction.SUSPEND_CALL -> SpecialFunction.SUSPEND_CALL
|
||||
JsAstProtoBuf.SpecialFunction.COROUTINE_RESULT -> SpecialFunction.COROUTINE_RESULT
|
||||
JsAstProtoBuf.SpecialFunction.COROUTINE_CONTROLLER -> SpecialFunction.COROUTINE_CONTROLLER
|
||||
JsAstProtoBuf.SpecialFunction.COROUTINE_RECEIVER -> SpecialFunction.COROUTINE_RECEIVER
|
||||
}
|
||||
|
||||
private fun <T : JsNode> withLocation(fileId: Int?, location: Location?, action: () -> T): T {
|
||||
|
||||
@@ -159,6 +159,22 @@ public final class JsAstProtoBuf {
|
||||
* <code>UNBOX_CHAR = 4;</code>
|
||||
*/
|
||||
UNBOX_CHAR(3, 4),
|
||||
/**
|
||||
* <code>SUSPEND_CALL = 5;</code>
|
||||
*/
|
||||
SUSPEND_CALL(4, 5),
|
||||
/**
|
||||
* <code>COROUTINE_RESULT = 6;</code>
|
||||
*/
|
||||
COROUTINE_RESULT(5, 6),
|
||||
/**
|
||||
* <code>COROUTINE_CONTROLLER = 7;</code>
|
||||
*/
|
||||
COROUTINE_CONTROLLER(6, 7),
|
||||
/**
|
||||
* <code>COROUTINE_RECEIVER = 8;</code>
|
||||
*/
|
||||
COROUTINE_RECEIVER(7, 8),
|
||||
;
|
||||
|
||||
/**
|
||||
@@ -177,6 +193,22 @@ public final class JsAstProtoBuf {
|
||||
* <code>UNBOX_CHAR = 4;</code>
|
||||
*/
|
||||
public static final int UNBOX_CHAR_VALUE = 4;
|
||||
/**
|
||||
* <code>SUSPEND_CALL = 5;</code>
|
||||
*/
|
||||
public static final int SUSPEND_CALL_VALUE = 5;
|
||||
/**
|
||||
* <code>COROUTINE_RESULT = 6;</code>
|
||||
*/
|
||||
public static final int COROUTINE_RESULT_VALUE = 6;
|
||||
/**
|
||||
* <code>COROUTINE_CONTROLLER = 7;</code>
|
||||
*/
|
||||
public static final int COROUTINE_CONTROLLER_VALUE = 7;
|
||||
/**
|
||||
* <code>COROUTINE_RECEIVER = 8;</code>
|
||||
*/
|
||||
public static final int COROUTINE_RECEIVER_VALUE = 8;
|
||||
|
||||
|
||||
public final int getNumber() { return value; }
|
||||
@@ -187,6 +219,10 @@ public final class JsAstProtoBuf {
|
||||
case 2: return WRAP_FUNCTION;
|
||||
case 3: return TO_BOXED_CHAR;
|
||||
case 4: return UNBOX_CHAR;
|
||||
case 5: return SUSPEND_CALL;
|
||||
case 6: return COROUTINE_RESULT;
|
||||
case 7: return COROUTINE_CONTROLLER;
|
||||
case 8: return COROUTINE_RECEIVER;
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -558,6 +558,10 @@ class JsAstSerializer(private val pathResolver: (File) -> String) {
|
||||
SpecialFunction.WRAP_FUNCTION -> JsAstProtoBuf.SpecialFunction.WRAP_FUNCTION
|
||||
SpecialFunction.TO_BOXED_CHAR -> JsAstProtoBuf.SpecialFunction.TO_BOXED_CHAR
|
||||
SpecialFunction.UNBOX_CHAR -> JsAstProtoBuf.SpecialFunction.UNBOX_CHAR
|
||||
SpecialFunction.SUSPEND_CALL -> JsAstProtoBuf.SpecialFunction.SUSPEND_CALL
|
||||
SpecialFunction.COROUTINE_RESULT -> JsAstProtoBuf.SpecialFunction.COROUTINE_RESULT
|
||||
SpecialFunction.COROUTINE_CONTROLLER -> JsAstProtoBuf.SpecialFunction.COROUTINE_CONTROLLER
|
||||
SpecialFunction.COROUTINE_RECEIVER -> JsAstProtoBuf.SpecialFunction.COROUTINE_RECEIVER
|
||||
}
|
||||
|
||||
private fun serialize(name: JsName): Int = nameMap.getOrPut(name) {
|
||||
|
||||
Reference in New Issue
Block a user