mirror of
https://github.com/fluencelabs/aqua.git
synced 2025-04-24 14:32:13 +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 = {
|
||||
val arrowArgumentsToCallbackArgumentsList =
|
||||
at.domain.toList.zipWithIndex
|
||||
.map(_._2)
|
||||
.map(idx => s"req.args[$idx]")
|
||||
.map((`type`, idx) => {
|
||||
val valueFromArg = s"req.args[$idx]"
|
||||
`type` match {
|
||||
case OptionType(t) =>
|
||||
s"${valueFromArg}.length === 0 ? null : ${valueFromArg}[0]"
|
||||
case _ => valueFromArg
|
||||
}
|
||||
})
|
||||
.concat(List("callParams"))
|
||||
.mkString(", ")
|
||||
|
||||
val callCallbackStatement = s"$callbackName(${arrowArgumentsToCallbackArgumentsList})"
|
||||
|
||||
val callCallbackStatementAndReturn =
|
||||
at.res.fold(s"${callCallbackStatement}; resp.result = {}")(_ =>
|
||||
s"resp.result = ${callCallbackStatement}"
|
||||
at.res.fold(s"${callCallbackStatement}; resp.result = {}")(`type` =>
|
||||
`type` match {
|
||||
case OptionType(t) => s"""
|
||||
| var respResult = ${callCallbackStatement};
|
||||
| resp.result = respResult === null ? [] : [respResult]
|
||||
|""".stripMargin
|
||||
case _ => s"resp.result = ${callCallbackStatement}"
|
||||
}
|
||||
)
|
||||
|
||||
val tetraplets = FuncRes
|
||||
|
@ -70,16 +70,27 @@ object TypeScriptCommon {
|
||||
val arrowArgumentsToCallbackArgumentsList =
|
||||
at.domain.toList
|
||||
.zipWithIndex
|
||||
.map(_._2)
|
||||
.map(idx => s"req.args[$idx]")
|
||||
.map((`type`, idx) => {
|
||||
val valueFromArg = s"req.args[$idx]"
|
||||
`type` match {
|
||||
case OptionType(t) => s"${valueFromArg}.length === 0 ? null : ${valueFromArg}[0]"
|
||||
case _ => valueFromArg
|
||||
}
|
||||
})
|
||||
.concat(List("callParams"))
|
||||
.mkString(", ")
|
||||
|
||||
val callCallbackStatement = s"$callbackName(${arrowArgumentsToCallbackArgumentsList})"
|
||||
|
||||
val callCallbackStatementAndReturn =
|
||||
at.res.fold(s"${callCallbackStatement}; resp.result = {}")(_ =>
|
||||
s"resp.result = ${callCallbackStatement}"
|
||||
at.res.fold(s"${callCallbackStatement}; resp.result = {}")(`type` =>
|
||||
`type` match {
|
||||
case OptionType(t) => s"""
|
||||
| var respResult = ${callCallbackStatement};
|
||||
| resp.result = respResult === null ? [] : [respResult]
|
||||
|""".stripMargin
|
||||
case _ => s"resp.result = ${callCallbackStatement}"
|
||||
}
|
||||
)
|
||||
|
||||
val tetraplets = FuncRes
|
||||
|
Loading…
x
Reference in New Issue
Block a user