JS: support cross-module inlining of suspend functions

See KT-18063
This commit is contained in:
Alexey Andreev
2017-09-11 15:07:58 +03:00
parent 992cc61abc
commit bad50c03a7
22 changed files with 599 additions and 47 deletions
@@ -59,19 +59,26 @@ public abstract class JsVisitorWithContext {
doAcceptStatementList(statements);
}
public void endVisit(@NotNull JsExpression x, @NotNull JsContext ctx) {
}
public void endVisit(@NotNull JsArrayAccess x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsArrayLiteral x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsBinaryOperation x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsBlock x, @NotNull JsContext ctx) {
}
public void endVisit(@NotNull JsBooleanLiteral x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsBreak x, @NotNull JsContext ctx) {
@@ -84,6 +91,7 @@ public abstract class JsVisitorWithContext {
}
public void endVisit(@NotNull JsConditional x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsContinue x, @NotNull JsContext ctx) {
@@ -111,12 +119,14 @@ public abstract class JsVisitorWithContext {
}
public void endVisit(@NotNull JsFunction x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsIf x, @NotNull JsContext ctx) {
}
public void endVisit(@NotNull JsInvocation x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsLabel x, @NotNull JsContext ctx) {
@@ -126,27 +136,33 @@ public abstract class JsVisitorWithContext {
}
public void endVisit(@NotNull JsNameRef x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsNew x, @NotNull JsContext ctx) {
}
public void endVisit(@NotNull JsNullLiteral x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsNumberLiteral x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsObjectLiteral x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsParameter x, @NotNull JsContext ctx) {
}
public void endVisit(@NotNull JsPostfixOperation x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsPrefixOperation x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsProgram x, @NotNull JsContext ctx) {
@@ -156,18 +172,21 @@ public abstract class JsVisitorWithContext {
}
public void endVisit(@NotNull JsRegExp x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsReturn x, @NotNull JsContext ctx) {
}
public void endVisit(@NotNull JsStringLiteral x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsSwitch x, @NotNull JsContext ctx) {
}
public void endVisit(@NotNull JsThisRef x, @NotNull JsContext ctx) {
endVisit((JsExpression) x, ctx);
}
public void endVisit(@NotNull JsThrow x, @NotNull JsContext ctx) {
@@ -147,6 +147,10 @@ enum class SpecialFunction(val suggestedName: String) {
WRAP_FUNCTION("wrapFunction"),
TO_BOXED_CHAR("toBoxedChar"),
UNBOX_CHAR("unboxChar"),
SUSPEND_CALL("suspendCall"),
COROUTINE_RESULT("coroutineResult"),
COROUTINE_CONTROLLER("coroutineController"),
COROUTINE_RECEIVER("coroutineReceiver")
}
enum class BoxingKind {