From 01c62d7a004ca5744b58d9ec945df063ffa1ce9c Mon Sep 17 00:00:00 2001 From: InversionSpaces Date: Tue, 13 Jun 2023 11:57:32 +0200 Subject: [PATCH] feat(examples): Add return closure rename example [fixes LNG-193] (#84) --- aqua/examples/closureReturnRename.aqua | 15 +++++++++++++++ src/__test__/examples.spec.ts | 6 ++++++ src/examples/closureReturnRename.ts | 11 +++++++++++ 3 files changed, 32 insertions(+) create mode 100644 aqua/examples/closureReturnRename.aqua create mode 100644 src/examples/closureReturnRename.ts diff --git a/aqua/examples/closureReturnRename.aqua b/aqua/examples/closureReturnRename.aqua new file mode 100644 index 0000000..b942b0d --- /dev/null +++ b/aqua/examples/closureReturnRename.aqua @@ -0,0 +1,15 @@ +export lng193Bug + +func getClosure(arg: u16, peer: string) -> u16 -> u16: + on peer: + closure = (x: u16) -> u16: + <- arg + x + <- closure + +func lng193Bug(peer: string, closurePeer: string) -> u16: + on peer: + c = getClosure(42, closurePeer) + b = c + a = b + res = a(1) + b(2) + c(3) + <- res diff --git a/src/__test__/examples.spec.ts b/src/__test__/examples.spec.ts index 4819140..524e603 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 { lng193BugCall } from '../examples/closureReturnRename.js'; import {closuresCall} from '../examples/closures.js'; import {bugLNG63_2Call, bugLNG63_3Call, bugLNG63Call, streamCanCall} from '../examples/streamCanCall.js'; import {streamCallbackCall} from '../examples/streamCallback.js'; @@ -527,6 +528,11 @@ describe('Testing examples', () => { expect(res3).toEqual(res4); }, 180000); + it('closureReturnRename.aqua bug LNG-193', async () => { + let result = await lng193BugCall(); + expect(result).toEqual(1 + 42 + 2 + 42 + 3 + 42) + }, 20000) + it('closures.aqua', async () => { let closuresResult = await closuresCall(); let res1 = config.externalAddressesRelay2; diff --git a/src/examples/closureReturnRename.ts b/src/examples/closureReturnRename.ts new file mode 100644 index 0000000..a03742e --- /dev/null +++ b/src/examples/closureReturnRename.ts @@ -0,0 +1,11 @@ +import { Fluence } from '@fluencelabs/fluence'; +import { + lng193Bug +} from '../compiled/examples/closureReturnRename.js'; +import { config } from '../config.js' + +const relays = config.relays + +export async function lng193BugCall(): Promise { + return lng193Bug(relays[4].peerId, relays[5].peerId) +} \ No newline at end of file