mirror of
https://github.com/fluencelabs/aqua.git
synced 2025-03-15 19:50:51 +00:00
88 lines
1.9 KiB
Plaintext
88 lines
1.9 KiB
Plaintext
aqua Main
|
|
|
|
use DECLARE_CONST, decl_bar from "declare.aqua" as Declare
|
|
|
|
export SomeService, handleAb, bug214, checkAbCalls
|
|
|
|
service SomeService("wed"):
|
|
getStr(s: string) -> string
|
|
|
|
ability SomeAb:
|
|
someArrow(s: string) -> string, string
|
|
str: string
|
|
|
|
ability SecondAb:
|
|
arrow(s: string) -> string
|
|
num: u32
|
|
|
|
func funcStr(s: string) -> string, string:
|
|
strInFunc <- SomeService.getStr(Declare.DECLARE_CONST)
|
|
strInFunc2 <- SomeService.getStr(s)
|
|
<- strInFunc, strInFunc2
|
|
|
|
func handleSecAb {SomeAb, SecondAb}() -> string, string, string, u32:
|
|
SomeAb.someArrow("eferfrfrf")
|
|
b, c <- SomeAb.someArrow("efre")
|
|
d <- SecondAb.arrow(SomeAb.str)
|
|
<- b, c, d, SecondAb.num
|
|
|
|
func returnAb(s: string) -> SomeAb:
|
|
SomeAb = SomeAb(someArrow = funcStr, str = s)
|
|
<- SomeAb
|
|
|
|
func handleAb(fff: string) -> string, string, string, u32:
|
|
SomeAb = returnAb(fff)
|
|
SecondAb = SecondAb(arrow = funcStr, num = 12)
|
|
res1, res2, res3, res4 <- handleSecAb{SomeAb, SecondAb}()
|
|
<- res1, res2, res3, res4
|
|
|
|
data Struct:
|
|
int: i8
|
|
|
|
ability Simple:
|
|
st: Struct
|
|
arrow(x: i8) -> bool
|
|
|
|
ability Complex:
|
|
simple: Simple
|
|
field: string
|
|
|
|
func foo{Complex, Simple}() -> bool, bool:
|
|
closure = () -> bool:
|
|
<- Simple.st.int >= 0
|
|
res <- closure()
|
|
<- Complex.simple.arrow(
|
|
Complex.simple.st.int
|
|
), res
|
|
|
|
func bug214() -> bool, bool:
|
|
closure = (x: i8) -> bool:
|
|
<- x > 0
|
|
|
|
MyComplex = Complex(
|
|
simple = Simple(
|
|
st = Struct(int = 0),
|
|
arrow = closure
|
|
),
|
|
field = "complex"
|
|
)
|
|
|
|
res1, res2 <- foo{MyComplex, MyComplex.simple}()
|
|
<- res1, res2
|
|
|
|
ability SSS:
|
|
arrow(x: i8) -> bool
|
|
|
|
ability CCCC:
|
|
arrow(x: i8) -> bool
|
|
simple: SSS
|
|
|
|
func checkAbCalls() -> bool, bool:
|
|
closure = (x: i8) -> bool:
|
|
<- x > 20
|
|
|
|
MySSS = SSS(arrow = closure)
|
|
MyCCCC = CCCC(simple = MySSS, arrow = MySSS.arrow)
|
|
|
|
<- MySSS.arrow(42), MyCCCC.arrow(12)
|