This commit is contained in:
DieMyst 2023-10-25 17:41:09 +07:00
parent 983639c30a
commit e3386bf98d
4 changed files with 32 additions and 12 deletions

View File

@ -2,15 +2,15 @@ aqua A
export bugLNG260
-- func create(a: i8) -> -> i8:
-- closureArrow = () -> i8:
-- <- a
-- <- closureArrow
--
-- func test() -> i8, i8:
-- arr1 <- create(1)
-- arr2 <- create(2)
-- <- arr1(), arr2()
func create(a: i8) -> -> i8:
closureArrow = () -> i8:
<- a
<- closureArrow
func test() -> i8, i8:
arr1 <- create(1)
arr2 <- create(2)
<- arr1(), arr2()
func cmp(a: i32, b: i32, pred: i8 -> bool) -> bool:
result: ?bool

View File

@ -2,7 +2,7 @@ module Closure declares *
import "@fluencelabs/aqua-lib/builtin.aqua"
export LocalSrv, closureIn, closureOut, closureBig, closureOut2, lng58Bug
export LocalSrv, closureIn, closureOut, closureBig, closureOut2, lng58Bug, multipleClosuresBugLNG262
service MyOp("op"):
identity(s: string) -> string
@ -70,4 +70,14 @@ func lng58Bug() -> string:
waiting()
<- status!
<- status!
func create(a: i8) -> -> i8:
closureArrow = () -> i8:
<- a
<- closureArrow
func multipleClosuresBugLNG262() -> i8, i8:
arr1 <- create(1)
arr2 <- create(2)
<- arr1(), arr2()

View File

@ -104,7 +104,7 @@ import { multiReturnCall } from "../examples/multiReturnCall.js";
import { declareCall } from "../examples/declareCall.js";
import { genOptions, genOptionsEmptyString } from "../examples/optionsCall.js";
import { lng193BugCall } from "../examples/closureReturnRename.js";
import { closuresCall } from "../examples/closures.js";
import {closuresCall, multipleClosuresLNG262BugCall} from "../examples/closures.js";
import { closureArrowCaptureCall } from "../examples/closureArrowCapture.js";
import {
bugLNG63_2Call,
@ -949,6 +949,11 @@ describe("Testing examples", () => {
expect(closuresResult).toEqual(["in", res1, res1, res2]);
}, 20000);
it("closures.aqua bug LNG-262", async () => {
let result = await multipleClosuresLNG262BugCall();
expect(result).toEqual([1, 2]);
});
it("closureArrowCapture.aqua", async () => {
let result = await closureArrowCaptureCall("input");
expect(result).toEqual("call: ".repeat(4) + "input");

View File

@ -5,6 +5,7 @@ import {
registerLocalSrv,
closureOut2,
lng58Bug,
multipleClosuresBugLNG262
} from "../compiled/examples/closures.js";
import { config } from "../config.js";
@ -32,3 +33,7 @@ export async function closuresCall(): Promise<
export async function lng58CBugCall(): Promise<string> {
return lng58Bug();
}
export async function multipleClosuresLNG262BugCall(): Promise<[number, number]> {
return multipleClosuresBugLNG262();
}