mirror of
https://github.com/fluencelabs/aqua.git
synced 2025-05-29 15:31:20 +00:00
Fix type convertion for option type (#294)
This commit is contained in:
parent
49da2a07ad
commit
dc1f6c2faa
@ -18,16 +18,28 @@ object JavaScriptCommon {
|
|||||||
def callBackExprBody(at: ArrowType, callbackName: String): String = {
|
def callBackExprBody(at: ArrowType, callbackName: String): String = {
|
||||||
val arrowArgumentsToCallbackArgumentsList =
|
val arrowArgumentsToCallbackArgumentsList =
|
||||||
at.domain.toList.zipWithIndex
|
at.domain.toList.zipWithIndex
|
||||||
.map(_._2)
|
.map((`type`, idx) => {
|
||||||
.map(idx => s"req.args[$idx]")
|
val valueFromArg = s"req.args[$idx]"
|
||||||
|
`type` match {
|
||||||
|
case OptionType(t) =>
|
||||||
|
s"${valueFromArg}.length === 0 ? null : ${valueFromArg}[0]"
|
||||||
|
case _ => valueFromArg
|
||||||
|
}
|
||||||
|
})
|
||||||
.concat(List("callParams"))
|
.concat(List("callParams"))
|
||||||
.mkString(", ")
|
.mkString(", ")
|
||||||
|
|
||||||
val callCallbackStatement = s"$callbackName(${arrowArgumentsToCallbackArgumentsList})"
|
val callCallbackStatement = s"$callbackName(${arrowArgumentsToCallbackArgumentsList})"
|
||||||
|
|
||||||
val callCallbackStatementAndReturn =
|
val callCallbackStatementAndReturn =
|
||||||
at.res.fold(s"${callCallbackStatement}; resp.result = {}")(_ =>
|
at.res.fold(s"${callCallbackStatement}; resp.result = {}")(`type` =>
|
||||||
s"resp.result = ${callCallbackStatement}"
|
`type` match {
|
||||||
|
case OptionType(t) => s"""
|
||||||
|
| var respResult = ${callCallbackStatement};
|
||||||
|
| resp.result = respResult === null ? [] : [respResult]
|
||||||
|
|""".stripMargin
|
||||||
|
case _ => s"resp.result = ${callCallbackStatement}"
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
val tetraplets = FuncRes
|
val tetraplets = FuncRes
|
||||||
|
@ -70,16 +70,27 @@ object TypeScriptCommon {
|
|||||||
val arrowArgumentsToCallbackArgumentsList =
|
val arrowArgumentsToCallbackArgumentsList =
|
||||||
at.domain.toList
|
at.domain.toList
|
||||||
.zipWithIndex
|
.zipWithIndex
|
||||||
.map(_._2)
|
.map((`type`, idx) => {
|
||||||
.map(idx => s"req.args[$idx]")
|
val valueFromArg = s"req.args[$idx]"
|
||||||
|
`type` match {
|
||||||
|
case OptionType(t) => s"${valueFromArg}.length === 0 ? null : ${valueFromArg}[0]"
|
||||||
|
case _ => valueFromArg
|
||||||
|
}
|
||||||
|
})
|
||||||
.concat(List("callParams"))
|
.concat(List("callParams"))
|
||||||
.mkString(", ")
|
.mkString(", ")
|
||||||
|
|
||||||
val callCallbackStatement = s"$callbackName(${arrowArgumentsToCallbackArgumentsList})"
|
val callCallbackStatement = s"$callbackName(${arrowArgumentsToCallbackArgumentsList})"
|
||||||
|
|
||||||
val callCallbackStatementAndReturn =
|
val callCallbackStatementAndReturn =
|
||||||
at.res.fold(s"${callCallbackStatement}; resp.result = {}")(_ =>
|
at.res.fold(s"${callCallbackStatement}; resp.result = {}")(`type` =>
|
||||||
s"resp.result = ${callCallbackStatement}"
|
`type` match {
|
||||||
|
case OptionType(t) => s"""
|
||||||
|
| var respResult = ${callCallbackStatement};
|
||||||
|
| resp.result = respResult === null ? [] : [respResult]
|
||||||
|
|""".stripMargin
|
||||||
|
case _ => s"resp.result = ${callCallbackStatement}"
|
||||||
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
val tetraplets = FuncRes
|
val tetraplets = FuncRes
|
||||||
|
Loading…
x
Reference in New Issue
Block a user