diff --git a/aqua/examples/closurePass.aqua b/aqua/examples/closurePass.aqua new file mode 100644 index 0000000..557f21f --- /dev/null +++ b/aqua/examples/closurePass.aqua @@ -0,0 +1,17 @@ +aqua PassClosure + +export lng92Bug + +func accept_closure(peer: string, closure: u16 -> u16) -> u16: + on peer: + res <- closure(42) + <- res + +func lng92Bug(peerA: string, peerB: string) -> u16: + on peerA: + closure = (x: u16) -> u16: + <- x + 37 + -- Variable has the same name + -- as argument of `accept_closure` + -- [bug LNG-92] + <- accept_closure(peerB, closure) \ No newline at end of file diff --git a/src/__test__/examples.spec.ts b/src/__test__/examples.spec.ts index 80c97a6..4968adc 100644 --- a/src/__test__/examples.spec.ts +++ b/src/__test__/examples.spec.ts @@ -38,6 +38,7 @@ import {literalCall} from '../examples/returnLiteralCall.js'; import {multiReturnCall} from '../examples/multiReturnCall.js'; import {declareCall} from '../examples/declareCall.js'; import {genOptions, genOptionsEmptyString} from '../examples/optionsCall.js'; +import { lng92BugCall } from '../examples/closurePass.js' import { lng193BugCall } from '../examples/closureReturnRename.js'; import {closuresCall} from '../examples/closures.js'; import {bugLNG63_2Call, bugLNG63_3Call, bugLNG63Call, streamCanCall} from '../examples/streamCanCall.js'; @@ -528,6 +529,11 @@ describe('Testing examples', () => { expect(res3).toEqual(res4); }, 180000); + it('closurePass.aqua bug LNG-92', async () => { + let result = await lng92BugCall(); + expect(result).toEqual(37 + 42) + }, 20000) + it('closureReturnRename.aqua bug LNG-193', async () => { let result = await lng193BugCall(); expect(result).toEqual((1 + 42) + (2 + 42) + (3 + 42) + (4 + 42)) diff --git a/src/examples/closurePass.ts b/src/examples/closurePass.ts new file mode 100644 index 0000000..06bec13 --- /dev/null +++ b/src/examples/closurePass.ts @@ -0,0 +1,11 @@ +import { Fluence } from '@fluencelabs/fluence'; +import { + lng92Bug +} from '../compiled/examples/closurePass.js'; +import { config } from '../config.js' + +const relays = config.relays + +export async function lng92BugCall(): Promise { + return lng92Bug(relays[4].peerId, relays[5].peerId) +} \ No newline at end of file