From 652c357b328a39d162310c63f8d5eb82219cf666 Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Thu, 18 Apr 2024 18:48:47 +0200 Subject: [PATCH 1/2] refactor: change the prefix for generated nested functions --- .../generation/safe-ds-python-generator.ts | 4 ++-- .../parameterWithPythonName/gen_input.py | 4 ++-- .../parameterWithPythonName/gen_input.py.map | 2 +- .../generator/blockLambdaResult/gen_input.py | 8 ++++---- .../blockLambdaResult/gen_input.py.map | 2 +- .../tests/generator/blockLambda/gen_input.py | 20 +++++++++---------- .../generator/blockLambda/gen_input.py.map | 2 +- .../partialImpureDependency/gen_input.py | 4 ++-- .../partialPureDependency/gen_input.py | 4 ++-- .../partialPureDependency/gen_input.py.map | 2 +- .../expressions/calls/main/gen_input.py | 12 +++++------ .../expressions/calls/main/gen_input.py.map | 2 +- .../gen_input.py | 4 ++-- .../generator/assignment/main/gen_input.py | 4 ++-- .../expressionStatement/gen_input.py | 4 ++-- .../statementWithoutEffect/gen_input.py | 4 ++-- 16 files changed, 41 insertions(+), 41 deletions(-) diff --git a/packages/safe-ds-lang/src/language/generation/safe-ds-python-generator.ts b/packages/safe-ds-lang/src/language/generation/safe-ds-python-generator.ts index 0930ed4a4..330370cd8 100644 --- a/packages/safe-ds-lang/src/language/generation/safe-ds-python-generator.ts +++ b/packages/safe-ds-lang/src/language/generation/safe-ds-python-generator.ts @@ -100,7 +100,7 @@ import { NamedTupleType } from '../typing/model.js'; import { getOutermostContainerOfType } from '../helpers/astUtils.js'; export const CODEGEN_PREFIX = '__gen_'; -const BLOCK_LAMBDA_PREFIX = `${CODEGEN_PREFIX}block_lambda_`; +const LAMBDA_PREFIX = `${CODEGEN_PREFIX}lambda_`; const BLOCK_LAMBDA_RESULT_PREFIX = `${CODEGEN_PREFIX}block_lambda_result_`; const YIELD_PREFIX = `${CODEGEN_PREFIX}yield_`; @@ -1313,7 +1313,7 @@ class GenerationInfoFrame { } getUniqueLambdaBlockName(lambda: SdsBlockLambda): string { - return `${BLOCK_LAMBDA_PREFIX}${this.blockLambdaManager.assignId(lambda)}`; + return `${LAMBDA_PREFIX}${this.blockLambdaManager.assignId(lambda)}`; } } diff --git a/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py index 4e8ea608b..2070caacc 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py @@ -6,6 +6,6 @@ def test(param1, param_2, param_3=0): f1(lambda a, b, c=0: 1) - def __gen_block_lambda_0(a, b, c=0): + def __gen_lambda_0(a, b, c=0): pass - f2(__gen_block_lambda_0) + f2(__gen_lambda_0) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py.map b/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py.map index 5def20282..28a8b9e07 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py.map +++ b/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py.map @@ -1 +1 @@ -{"version":3,"sources":["input.sdsdev"],"names":["test","param1","param2","param3","f1","a","b","c","f2"],"mappings":"AAAA;;;;;;AAKA,IAAQA,IAAI,CAACC,MAAM,EAA8BC,OAAM,EAA8BC,OAAM,CAAQ,CAAC;IAChGC,EAAE,CAAC,OAACC,CAAC,EAAOC,CAAC,EAAOC,CAAC,CAAQ,CAAC,EAAK,CAAC;IACjC,yBAACF,CAAC,EAAOC,CAAC,EAAOC,CAAC,CAAQ,CAAC;QAAE,IAAE;IAAlCC,EAAE,CAAC","file":"gen_input.py"} \ No newline at end of file +{"version":3,"sources":["input.sdsdev"],"names":["test","param1","param2","param3","f1","a","b","c","f2"],"mappings":"AAAA;;;;;;AAKA,IAAQA,IAAI,CAACC,MAAM,EAA8BC,OAAM,EAA8BC,OAAM,CAAQ,CAAC;IAChGC,EAAE,CAAC,OAACC,CAAC,EAAOC,CAAC,EAAOC,CAAC,CAAQ,CAAC,EAAK,CAAC;IACjC,mBAACF,CAAC,EAAOC,CAAC,EAAOC,CAAC,CAAQ,CAAC;QAAE,IAAE;IAAlCC,EAAE,CAAC","file":"gen_input.py"} \ No newline at end of file diff --git a/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda result/generated/tests/generator/blockLambdaResult/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda result/generated/tests/generator/blockLambdaResult/gen_input.py index 0edb77256..e45f7fab0 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda result/generated/tests/generator/blockLambdaResult/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda result/generated/tests/generator/blockLambdaResult/gen_input.py @@ -14,12 +14,12 @@ def f2(l): # Pipelines -------------------------------------------------------------------- def test(): - def __gen_block_lambda_0(a, b): + def __gen_lambda_0(a, b): __gen_block_lambda_result_d = g() return __gen_block_lambda_result_d - f1(__gen_block_lambda_0) - def __gen_block_lambda_1(a, b): + f1(__gen_lambda_0) + def __gen_lambda_1(a, b): __gen_block_lambda_result_d = g() __gen_block_lambda_result_e = g() return __gen_block_lambda_result_d, __gen_block_lambda_result_e - f2(__gen_block_lambda_1) + f2(__gen_lambda_1) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda result/generated/tests/generator/blockLambdaResult/gen_input.py.map b/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda result/generated/tests/generator/blockLambdaResult/gen_input.py.map index 1c51e4295..13881b61c 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda result/generated/tests/generator/blockLambdaResult/gen_input.py.map +++ b/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda result/generated/tests/generator/blockLambdaResult/gen_input.py.map @@ -1 +1 @@ -{"version":3,"sources":["input.sdsdev"],"names":["f1","l","h","f2","e1","d1","test","a","b","d","g","e"],"mappings":"AAAA;;;;;;AAMA,IAAQA,EAAE,CAACC,CAAC;IACRC,CAAC,CAACD,CAAC,CAAC,CAAC,EAAE,CAAC;;AAGZ,IAAQE,EAAE,CAACF,CAAC;IACRC,CAAC,CAACD,CAAC,CAAC,CAAC,EAAE,CAAC,EAAEG,CAAE;IACZF,CAAC,CAACD,CAAC,CAAC,CAAC,EAAE,CAAC,EAAEI,CAAE;;;;AAGhB,IAASC,IAAI;IAEN,yBAACC,CAAC,EAAOC,CAAC;QACT,0BAAMC,CAAC,GAAGC,CAAC;QADZ,OACC,0BAAMD,CAAC;IADXT,EAAE,CAAC;IAGA,yBAACO,CAAC,EAAOC,CAAC;QACT,0BAAMC,CAAC,GAAGC,CAAC;QACX,0BAAMC,CAAC,GAAGD,CAAC;QAFZ,OACC,0BAAMD,CAAC,EACP,0BAAME,CAAC;IAFXR,EAAE,CAAC","file":"gen_input.py"} \ No newline at end of file +{"version":3,"sources":["input.sdsdev"],"names":["f1","l","h","f2","e1","d1","test","a","b","d","g","e"],"mappings":"AAAA;;;;;;AAMA,IAAQA,EAAE,CAACC,CAAC;IACRC,CAAC,CAACD,CAAC,CAAC,CAAC,EAAE,CAAC;;AAGZ,IAAQE,EAAE,CAACF,CAAC;IACRC,CAAC,CAACD,CAAC,CAAC,CAAC,EAAE,CAAC,EAAEG,CAAE;IACZF,CAAC,CAACD,CAAC,CAAC,CAAC,EAAE,CAAC,EAAEI,CAAE;;;;AAGhB,IAASC,IAAI;IAEN,mBAACC,CAAC,EAAOC,CAAC;QACT,0BAAMC,CAAC,GAAGC,CAAC;QADZ,OACC,0BAAMD,CAAC;IADXT,EAAE,CAAC;IAGA,mBAACO,CAAC,EAAOC,CAAC;QACT,0BAAMC,CAAC,GAAGC,CAAC;QACX,0BAAMC,CAAC,GAAGD,CAAC;QAFZ,OACC,0BAAMD,CAAC,EACP,0BAAME,CAAC;IAFXR,EAAE,CAAC","file":"gen_input.py"} \ No newline at end of file diff --git a/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda/generated/tests/generator/blockLambda/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda/generated/tests/generator/blockLambda/gen_input.py index 6bd18c42e..ec0b4de2e 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda/generated/tests/generator/blockLambda/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda/generated/tests/generator/blockLambda/gen_input.py @@ -5,23 +5,23 @@ # Pipelines -------------------------------------------------------------------- def test(): - def __gen_block_lambda_0(a, b=2): + def __gen_lambda_0(a, b=2): __gen_block_lambda_result_d = g() return __gen_block_lambda_result_d - f1(__gen_block_lambda_0) - def __gen_block_lambda_1(a, b): + f1(__gen_lambda_0) + def __gen_lambda_1(a, b): __gen_block_lambda_result_d = g() return __gen_block_lambda_result_d - f1(__gen_block_lambda_1) - def __gen_block_lambda_2(): + f1(__gen_lambda_1) + def __gen_lambda_2(): pass - f2(__gen_block_lambda_2) - def __gen_block_lambda_3(a, b=2): + f2(__gen_lambda_2) + def __gen_lambda_3(a, b=2): __gen_block_lambda_result_d = g() return __gen_block_lambda_result_d - g2(f3(__gen_block_lambda_3)) - def __gen_block_lambda_4(a, b=2): + g2(f3(__gen_lambda_3)) + def __gen_lambda_4(a, b=2): __gen_block_lambda_result_d = g() return __gen_block_lambda_result_d - c = f3(__gen_block_lambda_4) + c = f3(__gen_lambda_4) g2(c) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda/generated/tests/generator/blockLambda/gen_input.py.map b/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda/generated/tests/generator/blockLambda/gen_input.py.map index 44fedffe6..488343bce 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda/generated/tests/generator/blockLambda/gen_input.py.map +++ b/packages/safe-ds-lang/tests/resources/generation/python/expressions/block lambda/generated/tests/generator/blockLambda/gen_input.py.map @@ -1 +1 @@ -{"version":3,"sources":["input.sdsdev"],"names":["test","a","b","d","g","f1","f2","g2","f3","c"],"mappings":"AAAA;;;;;;AASA,IAASA,IAAI;IACN,yBAACC,CAAC,EAAOC,CAAC,CAAQ,CAAC;QAClB,0BAAMC,CAAC,GAAGC,CAAC;QADZ,OACC,0BAAMD,CAAC;IADXE,EAAE,CAAC;IAGA,yBAACJ,CAAC,EAAOC,CAAC;QACT,0BAAMC,CAAC,GAAGC,CAAC;QADZ,OACC,0BAAMD,CAAC;IADXE,EAAE,CAAC;IAGA;QAAG,IAAE;IAARC,EAAE,CAAC;IACG,yBAACL,CAAC,EAAOC,CAAC,CAAQ,CAAC;QACrB,0BAAMC,CAAC,GAAGC,CAAC;QADT,OACF,0BAAMD,CAAC;IADXI,EAAE,CAACC,EAAE,CAAC;IAGK,yBAACP,CAAC,EAAOC,CAAC,CAAQ,CAAC;QAC1B,0BAAMC,CAAC,GAAGC,CAAC;QADJ,OACP,0BAAMD,CAAC;IADX,IAAQK,EAAE,CAAC;IAGXD,EAAE,CAACE,CAAC","file":"gen_input.py"} \ No newline at end of file +{"version":3,"sources":["input.sdsdev"],"names":["test","a","b","d","g","f1","f2","g2","f3","c"],"mappings":"AAAA;;;;;;AASA,IAASA,IAAI;IACN,mBAACC,CAAC,EAAOC,CAAC,CAAQ,CAAC;QAClB,0BAAMC,CAAC,GAAGC,CAAC;QADZ,OACC,0BAAMD,CAAC;IADXE,EAAE,CAAC;IAGA,mBAACJ,CAAC,EAAOC,CAAC;QACT,0BAAMC,CAAC,GAAGC,CAAC;QADZ,OACC,0BAAMD,CAAC;IADXE,EAAE,CAAC;IAGA;QAAG,IAAE;IAARC,EAAE,CAAC;IACG,mBAACL,CAAC,EAAOC,CAAC,CAAQ,CAAC;QACrB,0BAAMC,CAAC,GAAGC,CAAC;QADT,OACF,0BAAMD,CAAC;IADXI,EAAE,CAACC,EAAE,CAAC;IAGK,mBAACP,CAAC,EAAOC,CAAC,CAAQ,CAAC;QAC1B,0BAAMC,CAAC,GAAGC,CAAC;QADJ,OACP,0BAAMD,CAAC;IADX,IAAQK,EAAE,CAAC;IAGXD,EAAE,CAACE,CAAC","file":"gen_input.py"} \ No newline at end of file diff --git a/packages/safe-ds-lang/tests/resources/generation/python/partial/impure dependency/generated/tests/generator/partialImpureDependency/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/partial/impure dependency/generated/tests/generator/partialImpureDependency/gen_input.py index 4210bf2cb..c6f1be1d2 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/partial/impure dependency/generated/tests/generator/partialImpureDependency/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/partial/impure dependency/generated/tests/generator/partialImpureDependency/gen_input.py @@ -10,11 +10,11 @@ def testPipeline(): impureFileWrite2 = iFileWrite() pureValueForImpure2 = noPartialEvalInt(2) pureValueForImpure3 = 3 - def __gen_block_lambda_0(): + def __gen_lambda_0(): i1(1) __gen_block_lambda_result_r = 1 return __gen_block_lambda_result_r - fp(__gen_block_lambda_0) + fp(__gen_lambda_0) i1(1) impureA1 = i1(pureValueForImpure2) impureA2 = i1(noPartialEvalInt(3)) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py index 471ea69fe..44c02394f 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py @@ -12,14 +12,14 @@ def testPipeline(): lStrMulti = 'multi\nline' boolean1 = True value1 = g(True, -1.0, 1, None, 'multi\nline') - def __gen_block_lambda_0(): + def __gen_lambda_0(): i = 1 i2 = 3 j = 6 j2 = 4 __gen_block_lambda_result_z = 7 return __gen_block_lambda_result_z - o = (f(__gen_block_lambda_0)) + (f(lambda : 2)) + o = (f(__gen_lambda_0)) + (f(lambda : 2)) mapKey = 'key' mapValue = 'value' mapResult = g2({'key': 'value'}) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py.map b/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py.map index 2c4af7fe3..c8c891ecd 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py.map +++ b/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py.map @@ -1 +1 @@ -{"version":3,"sources":["input.sdsdev"],"names":["testpipeline","false","null","g","boolean1","ldouble","lint","lnull","lstrmulti","z","f","g2","mapkey","mapvalue","nopartialevalint","listv1","listv3","list3","g3","list","o","value1","mapresult","listresult","g4","listvalue"],"mappings":"AAAA;;;;;;AAcA,IAASA,YAAY;IACjB,SAAaC,KAAK;IAGlB,UAAc,IAAI;IAGlB,OAAW,CAAC;IAGZ,QAAYC,IAAI;IAGhB,YAAgB;IAIhB,WAAe;IAGf,SAAaC,CAAC,CAACC,IAAQ,EAAEC,IAAO,EAAEC,CAAI,EAAEC,IAAK,EAAEC,aAAS;IAG9C;QACN,IAAQ,CAAC;QACT,KAAS,CAAC;QACV,IAAQ;QACR,KAAS;QACT,0BAAMC,CAAC,GAAG;QALJ,OAKN,0BAAMA,CAAC;IALX,IAAQ,CAAAC,CAAC,CAAC,uBAMP,CAAC,EAACA,CAAC,CAAC,SAAM,CAAC;IAcd,SAAa,KAAK;IAClB,WAAe,OAAO;IACtB,YAAgBC,EAAE,CAAC,CAACC,KAAM,EAAEC,OAAQ;IAMpC,SAAa,CAAC;IAEd,SAAaC,gBAAgB,CAACC,CAAM;IAEpC,OAAW,CAACA,CAAM;IAElB,QAAY,CAACC,MAAM;IACnB,YAAgBC,KAAK,CAAC,CAAC;IAEvB,aAAiBC,EAAE,CAACC,IAAI;IAIxB,SAAe,CAAO,CAAP,CAAA,CAAC,CAAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAACC,MAAM,GAAC,CAAC,EAAwB,CAAvB,CAAAC,SAAS,EAAC,CAAC,EAACC,UAAU,GAAC,CAAC,EAACC,EAAE,CAACC,SAAS","file":"gen_input.py"} \ No newline at end of file +{"version":3,"sources":["input.sdsdev"],"names":["testpipeline","false","null","g","boolean1","ldouble","lint","lnull","lstrmulti","z","f","g2","mapkey","mapvalue","nopartialevalint","listv1","listv3","list3","g3","list","o","value1","mapresult","listresult","g4","listvalue"],"mappings":"AAAA;;;;;;AAcA,IAASA,YAAY;IACjB,SAAaC,KAAK;IAGlB,UAAc,IAAI;IAGlB,OAAW,CAAC;IAGZ,QAAYC,IAAI;IAGhB,YAAgB;IAIhB,WAAe;IAGf,SAAaC,CAAC,CAACC,IAAQ,EAAEC,IAAO,EAAEC,CAAI,EAAEC,IAAK,EAAEC,aAAS;IAG9C;QACN,IAAQ,CAAC;QACT,KAAS,CAAC;QACV,IAAQ;QACR,KAAS;QACT,0BAAMC,CAAC,GAAG;QALJ,OAKN,0BAAMA,CAAC;IALX,IAAQ,CAAAC,CAAC,CAAC,iBAMP,CAAC,EAACA,CAAC,CAAC,SAAM,CAAC;IAcd,SAAa,KAAK;IAClB,WAAe,OAAO;IACtB,YAAgBC,EAAE,CAAC,CAACC,KAAM,EAAEC,OAAQ;IAMpC,SAAa,CAAC;IAEd,SAAaC,gBAAgB,CAACC,CAAM;IAEpC,OAAW,CAACA,CAAM;IAElB,QAAY,CAACC,MAAM;IACnB,YAAgBC,KAAK,CAAC,CAAC;IAEvB,aAAiBC,EAAE,CAACC,IAAI;IAIxB,SAAe,CAAO,CAAP,CAAA,CAAC,CAAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAACC,MAAM,GAAC,CAAC,EAAwB,CAAvB,CAAAC,SAAS,EAAC,CAAC,EAACC,UAAU,GAAC,CAAC,EAACC,EAAE,CAACC,SAAS","file":"gen_input.py"} \ No newline at end of file diff --git a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py index 353ac28bc..dd2adafce 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py @@ -43,16 +43,16 @@ def test(): f(l(lambda a: (3) * (segment_a(a)))) f(l(lambda a: safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [(3) * (segment_a(a))], []))) f(l(lambda a: (3) * (safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [(3) * (segment_a(a))], [])], [])))) - def __gen_block_lambda_0(a): + def __gen_lambda_0(a): __gen_block_lambda_result_result = segment_a(a) return __gen_block_lambda_result_result - f(l(__gen_block_lambda_0)) - def __gen_block_lambda_1(a): + f(l(__gen_lambda_0)) + def __gen_lambda_1(a): __gen_block_lambda_result_result = safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [segment_a(a)], []) return __gen_block_lambda_result_result - f(l(__gen_block_lambda_1)) + f(l(__gen_lambda_1)) f(safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.l", l, [lambda a: (3) * (a)], [])) - def __gen_block_lambda_2(a): + def __gen_lambda_2(a): __gen_block_lambda_result_result = (3) * (safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [a], [])) return __gen_block_lambda_result_result - f(safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.l", l, [__gen_block_lambda_2], [])) + f(safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.l", l, [__gen_lambda_2], [])) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py.map b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py.map index d5d5e2554..1e09de5e5 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py.map +++ b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py.map @@ -1 +1 @@ -{"version":3,"sources":["input.sdsdev"],"names":["segment_a","a","result","test","f","g","param2","h","i","j","k","readfile","l","m"],"mappings":"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","file":"gen_input.py"} \ No newline at end of file +{"version":3,"sources":["input.sdsdev"],"names":["segment_a","a","result","test","f","g","param2","h","i","j","k","readfile","l","m"],"mappings":"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","file":"gen_input.py"} \ No newline at end of file diff --git a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/statements/assignment/generated/tests/generator/assignmentWithRunnerIntegration/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/statements/assignment/generated/tests/generator/assignmentWithRunnerIntegration/gen_input.py index 5a925f6a3..1f87f8e53 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/statements/assignment/generated/tests/generator/assignmentWithRunnerIntegration/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/statements/assignment/generated/tests/generator/assignmentWithRunnerIntegration/gen_input.py @@ -30,11 +30,11 @@ def testPipeline(): f1(l) f1(m) f1(n) - def __gen_block_lambda_0(): + def __gen_lambda_0(): g() a, _, __gen_block_lambda_result_c = g() x, _, _ = g() f1(a) f1(x) return __gen_block_lambda_result_c - f2(__gen_block_lambda_0) + f2(__gen_lambda_0) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/statements/assignments/main/generated/tests/generator/assignment/main/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/statements/assignments/main/generated/tests/generator/assignment/main/gen_input.py index 0e7147235..1388f46d8 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/statements/assignments/main/generated/tests/generator/assignment/main/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/statements/assignments/main/generated/tests/generator/assignment/main/gen_input.py @@ -24,11 +24,11 @@ def testPipeline(): f1(l) f1(m) f1(n) - def __gen_block_lambda_0(): + def __gen_lambda_0(): g() a, _, __gen_block_lambda_result_c = g() x, _, _ = g() f1(a) f1(x) return __gen_block_lambda_result_c - f2(__gen_block_lambda_0) + f2(__gen_lambda_0) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/statements/expression statement/generated/tests/generator/expressionStatement/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/statements/expression statement/generated/tests/generator/expressionStatement/gen_input.py index 576988ad7..948c555fb 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/statements/expression statement/generated/tests/generator/expressionStatement/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/statements/expression statement/generated/tests/generator/expressionStatement/gen_input.py @@ -11,6 +11,6 @@ def testSegment(): def testPipeline(): g() - def __gen_block_lambda_0(): + def __gen_lambda_0(): g() - f(__gen_block_lambda_0) + f(__gen_lambda_0) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/statements/statement without effect/generated/tests/generator/statementWithoutEffect/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/statements/statement without effect/generated/tests/generator/statementWithoutEffect/gen_input.py index d6023189b..6f52cadf8 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/statements/statement without effect/generated/tests/generator/statementWithoutEffect/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/statements/statement without effect/generated/tests/generator/statementWithoutEffect/gen_input.py @@ -10,6 +10,6 @@ def testSegment(): # Pipelines -------------------------------------------------------------------- def testPipeline(): - def __gen_block_lambda_0(): + def __gen_lambda_0(): pass - f(__gen_block_lambda_0) + f(__gen_lambda_0) From 3a3c2bbe8dde46c03bb1a99d135681a68704ff6e Mon Sep 17 00:00:00 2001 From: Lars Reimann Date: Thu, 18 Apr 2024 18:54:18 +0200 Subject: [PATCH 2/2] feat: generate nested functions for expression lambdas --- .../generation/safe-ds-python-generator.ts | 56 ++++++++++++------- .../parameterWithPythonName/gen_input.py | 6 +- .../parameterWithPythonName/gen_input.py.map | 2 +- .../generator/expressionLambda/gen_input.py | 8 ++- .../expressionLambda/gen_input.py.map | 2 +- .../partialPureDependency/gen_input.py | 4 +- .../partialPureDependency/gen_input.py.map | 2 +- .../expressions/calls/main/gen_input.py | 30 ++++++---- .../expressions/calls/main/gen_input.py.map | 2 +- 9 files changed, 74 insertions(+), 38 deletions(-) diff --git a/packages/safe-ds-lang/src/language/generation/safe-ds-python-generator.ts b/packages/safe-ds-lang/src/language/generation/safe-ds-python-generator.ts index 330370cd8..8619ac6dd 100644 --- a/packages/safe-ds-lang/src/language/generation/safe-ds-python-generator.ts +++ b/packages/safe-ds-lang/src/language/generation/safe-ds-python-generator.ts @@ -60,6 +60,8 @@ import { SdsClassMember, SdsDeclaration, SdsExpression, + SdsExpressionLambda, + SdsLambda, SdsModule, SdsParameter, SdsParameterList, @@ -593,23 +595,31 @@ export class SafeDsPythonGenerator { frame: GenerationInfoFrame, generateLambda: boolean, ): CompositeGeneratorNode { - const blockLambdaCode: CompositeGeneratorNode[] = []; + const result: CompositeGeneratorNode[] = []; if (isSdsAssignment(statement)) { if (statement.expression) { - for (const lambda of AstUtils.streamAllContents(statement.expression).filter(isSdsBlockLambda)) { - blockLambdaCode.push(this.generateBlockLambda(lambda, frame)); + for (const node of AstUtils.streamAllContents(statement.expression)) { + if (isSdsBlockLambda(node)) { + result.push(this.generateBlockLambda(node, frame)); + } else if (isSdsExpressionLambda(node)) { + result.push(this.generateExpressionLambda(node, frame)); + } } } - blockLambdaCode.push(this.generateAssignment(statement, frame, generateLambda)); - return joinTracedToNode(statement)(blockLambdaCode, (stmt) => stmt, { + result.push(this.generateAssignment(statement, frame, generateLambda)); + return joinTracedToNode(statement)(result, (stmt) => stmt, { separator: NL, })!; } else if (isSdsExpressionStatement(statement)) { - for (const lambda of AstUtils.streamAllContents(statement.expression).filter(isSdsBlockLambda)) { - blockLambdaCode.push(this.generateBlockLambda(lambda, frame)); + for (const node of AstUtils.streamAllContents(statement.expression)) { + if (isSdsBlockLambda(node)) { + result.push(this.generateBlockLambda(node, frame)); + } else if (isSdsExpressionLambda(node)) { + result.push(this.generateExpressionLambda(node, frame)); + } } - blockLambdaCode.push(this.generateExpression(statement.expression, frame)); - return joinTracedToNode(statement)(blockLambdaCode, (stmt) => stmt, { + result.push(this.generateExpression(statement.expression, frame)); + return joinTracedToNode(statement)(result, (stmt) => stmt, { separator: NL, })!; } @@ -701,7 +711,7 @@ export class SafeDsPythonGenerator { )}`, ); } - return expandTracedToNode(blockLambda)`def ${frame.getUniqueLambdaBlockName( + return expandTracedToNode(blockLambda)`def ${frame.getUniqueLambdaName( blockLambda, )}(${this.generateParameters(blockLambda.parameterList, frame)}):` .appendNewLine() @@ -711,6 +721,17 @@ export class SafeDsPythonGenerator { }); } + private generateExpressionLambda(node: SdsExpressionLambda, frame: GenerationInfoFrame): CompositeGeneratorNode { + const name = frame.getUniqueLambdaName(node); + const parameters = this.generateParameters(node.parameterList, frame); + const result = this.generateExpression(node.result, frame); + + return expandTracedToNode(node)` + def ${name}(${parameters}): + return ${result} + `; + } + private generateExpression(expression: SdsExpression, frame: GenerationInfoFrame): CompositeGeneratorNode { if (isSdsTemplateStringPart(expression)) { if (isSdsTemplateStringStart(expression)) { @@ -765,7 +786,7 @@ export class SafeDsPythonGenerator { { separator: ', ' }, )}]`; } else if (isSdsBlockLambda(expression)) { - return traceToNode(expression)(frame.getUniqueLambdaBlockName(expression)); + return traceToNode(expression)(frame.getUniqueLambdaName(expression)); } else if (isSdsCall(expression)) { const callable = this.nodeMapper.callToCallable(expression); const receiver = this.generateExpression(expression.receiver, frame); @@ -807,10 +828,7 @@ export class SafeDsPythonGenerator { return call; } } else if (isSdsExpressionLambda(expression)) { - return expandTracedToNode(expression)`lambda ${this.generateParameters( - expression.parameterList, - frame, - )}: ${this.generateExpression(expression.result, frame)}`; + return traceToNode(expression)(frame.getUniqueLambdaName(expression)); } else if (isSdsInfixOperation(expression)) { const leftOperand = this.generateExpression(expression.leftOperand, frame); const rightOperand = this.generateExpression(expression.rightOperand, frame); @@ -1260,7 +1278,7 @@ interface ImportData { } class GenerationInfoFrame { - private readonly blockLambdaManager: IdManager; + private readonly lambdaManager: IdManager; private readonly importSet: Map; private readonly utilitySet: Set; private readonly typeVariableSet: Set; @@ -1276,7 +1294,7 @@ class GenerationInfoFrame { targetPlaceholder: string | undefined = undefined, disableRunnerIntegration: boolean = false, ) { - this.blockLambdaManager = new IdManager(); + this.lambdaManager = new IdManager(); this.importSet = importSet; this.utilitySet = utilitySet; this.typeVariableSet = typeVariableSet; @@ -1312,8 +1330,8 @@ class GenerationInfoFrame { } } - getUniqueLambdaBlockName(lambda: SdsBlockLambda): string { - return `${LAMBDA_PREFIX}${this.blockLambdaManager.assignId(lambda)}`; + getUniqueLambdaName(lambda: SdsLambda): string { + return `${LAMBDA_PREFIX}${this.lambdaManager.assignId(lambda)}`; } } diff --git a/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py index 2070caacc..eaa5c6de3 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py @@ -5,7 +5,9 @@ # Segments --------------------------------------------------------------------- def test(param1, param_2, param_3=0): - f1(lambda a, b, c=0: 1) def __gen_lambda_0(a, b, c=0): + return 1 + f1(__gen_lambda_0) + def __gen_lambda_1(a, b, c=0): pass - f2(__gen_lambda_0) + f2(__gen_lambda_1) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py.map b/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py.map index 28a8b9e07..1f03b46c3 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py.map +++ b/packages/safe-ds-lang/tests/resources/generation/python/declarations/parameter with python name/generated/tests/generator/parameterWithPythonName/gen_input.py.map @@ -1 +1 @@ -{"version":3,"sources":["input.sdsdev"],"names":["test","param1","param2","param3","f1","a","b","c","f2"],"mappings":"AAAA;;;;;;AAKA,IAAQA,IAAI,CAACC,MAAM,EAA8BC,OAAM,EAA8BC,OAAM,CAAQ,CAAC;IAChGC,EAAE,CAAC,OAACC,CAAC,EAAOC,CAAC,EAAOC,CAAC,CAAQ,CAAC,EAAK,CAAC;IACjC,mBAACF,CAAC,EAAOC,CAAC,EAAOC,CAAC,CAAQ,CAAC;QAAE,IAAE;IAAlCC,EAAE,CAAC","file":"gen_input.py"} \ No newline at end of file +{"version":3,"sources":["input.sdsdev"],"names":["test","param1","param2","param3","a","b","c","f1","f2"],"mappings":"AAAA;;;;;;AAKA,IAAQA,IAAI,CAACC,MAAM,EAA8BC,OAAM,EAA8BC,OAAM,CAAQ,CAAC;IAC7F,mBAACC,CAAC,EAAOC,CAAC,EAAOC,CAAC,CAAQ,CAAC;eAAK,CAAC;IAApCC,EAAE,CAAC;IACA,mBAACH,CAAC,EAAOC,CAAC,EAAOC,CAAC,CAAQ,CAAC;QAAE,IAAE;IAAlCE,EAAE,CAAC","file":"gen_input.py"} \ No newline at end of file diff --git a/packages/safe-ds-lang/tests/resources/generation/python/expressions/expression lambda/generated/tests/generator/expressionLambda/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/expressions/expression lambda/generated/tests/generator/expressionLambda/gen_input.py index 32afd0e36..c951b3b82 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/expressions/expression lambda/generated/tests/generator/expressionLambda/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/expressions/expression lambda/generated/tests/generator/expressionLambda/gen_input.py @@ -5,5 +5,9 @@ # Pipelines -------------------------------------------------------------------- def test(): - f(lambda a, b=2: 1) - f(lambda a, b: 1) + def __gen_lambda_0(a, b=2): + return 1 + f(__gen_lambda_0) + def __gen_lambda_1(a, b): + return 1 + f(__gen_lambda_1) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/expressions/expression lambda/generated/tests/generator/expressionLambda/gen_input.py.map b/packages/safe-ds-lang/tests/resources/generation/python/expressions/expression lambda/generated/tests/generator/expressionLambda/gen_input.py.map index c671facea..58be37485 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/expressions/expression lambda/generated/tests/generator/expressionLambda/gen_input.py.map +++ b/packages/safe-ds-lang/tests/resources/generation/python/expressions/expression lambda/generated/tests/generator/expressionLambda/gen_input.py.map @@ -1 +1 @@ -{"version":3,"sources":["input.sdsdev"],"names":["test","f","a","b"],"mappings":"AAAA;;;;;;AAIA,IAASA,IAAI;IACTC,CAAC,CAAC,OAACC,CAAC,EAAEC,CAAC,CAAG,CAAC,EAAK,CAAC;IACjBF,CAAC,CAAC,OAACC,CAAC,EAAEC,CAAC,EAAK,CAAC","file":"gen_input.py"} \ No newline at end of file +{"version":3,"sources":["input.sdsdev"],"names":["test","a","b","f"],"mappings":"AAAA;;;;;;AAIA,IAASA,IAAI;IACP,mBAACC,CAAC,EAAEC,CAAC,CAAG,CAAC;eAAK,CAAC;IAAjBC,CAAC,CAAC;IACA,mBAACF,CAAC,EAAEC,CAAC;eAAK,CAAC;IAAbC,CAAC,CAAC","file":"gen_input.py"} \ No newline at end of file diff --git a/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py index 44c02394f..ac4f1adaa 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py @@ -19,7 +19,9 @@ def __gen_lambda_0(): j2 = 4 __gen_block_lambda_result_z = 7 return __gen_block_lambda_result_z - o = (f(__gen_lambda_0)) + (f(lambda : 2)) + def __gen_lambda_1(): + return 2 + o = (f(__gen_lambda_0)) + (f(__gen_lambda_1)) mapKey = 'key' mapValue = 'value' mapResult = g2({'key': 'value'}) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py.map b/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py.map index c8c891ecd..f2586ccfa 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py.map +++ b/packages/safe-ds-lang/tests/resources/generation/python/partial/pure dependency/generated/tests/generator/partialPureDependency/gen_input.py.map @@ -1 +1 @@ -{"version":3,"sources":["input.sdsdev"],"names":["testpipeline","false","null","g","boolean1","ldouble","lint","lnull","lstrmulti","z","f","g2","mapkey","mapvalue","nopartialevalint","listv1","listv3","list3","g3","list","o","value1","mapresult","listresult","g4","listvalue"],"mappings":"AAAA;;;;;;AAcA,IAASA,YAAY;IACjB,SAAaC,KAAK;IAGlB,UAAc,IAAI;IAGlB,OAAW,CAAC;IAGZ,QAAYC,IAAI;IAGhB,YAAgB;IAIhB,WAAe;IAGf,SAAaC,CAAC,CAACC,IAAQ,EAAEC,IAAO,EAAEC,CAAI,EAAEC,IAAK,EAAEC,aAAS;IAG9C;QACN,IAAQ,CAAC;QACT,KAAS,CAAC;QACV,IAAQ;QACR,KAAS;QACT,0BAAMC,CAAC,GAAG;QALJ,OAKN,0BAAMA,CAAC;IALX,IAAQ,CAAAC,CAAC,CAAC,iBAMP,CAAC,EAACA,CAAC,CAAC,SAAM,CAAC;IAcd,SAAa,KAAK;IAClB,WAAe,OAAO;IACtB,YAAgBC,EAAE,CAAC,CAACC,KAAM,EAAEC,OAAQ;IAMpC,SAAa,CAAC;IAEd,SAAaC,gBAAgB,CAACC,CAAM;IAEpC,OAAW,CAACA,CAAM;IAElB,QAAY,CAACC,MAAM;IACnB,YAAgBC,KAAK,CAAC,CAAC;IAEvB,aAAiBC,EAAE,CAACC,IAAI;IAIxB,SAAe,CAAO,CAAP,CAAA,CAAC,CAAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAACC,MAAM,GAAC,CAAC,EAAwB,CAAvB,CAAAC,SAAS,EAAC,CAAC,EAACC,UAAU,GAAC,CAAC,EAACC,EAAE,CAACC,SAAS","file":"gen_input.py"} \ No newline at end of file +{"version":3,"sources":["input.sdsdev"],"names":["testpipeline","false","null","g","boolean1","ldouble","lint","lnull","lstrmulti","z","f","g2","mapkey","mapvalue","nopartialevalint","listv1","listv3","list3","g3","list","o","value1","mapresult","listresult","g4","listvalue"],"mappings":"AAAA;;;;;;AAcA,IAASA,YAAY;IACjB,SAAaC,KAAK;IAGlB,UAAc,IAAI;IAGlB,OAAW,CAAC;IAGZ,QAAYC,IAAI;IAGhB,YAAgB;IAIhB,WAAe;IAGf,SAAaC,CAAC,CAACC,IAAQ,EAAEC,IAAO,EAAEC,CAAI,EAAEC,IAAK,EAAEC,aAAS;IAG9C;QACN,IAAQ,CAAC;QACT,KAAS,CAAC;QACV,IAAQ;QACR,KAAS;QACT,0BAAMC,CAAC,GAAG;QALJ,OAKN,0BAAMA,CAAC;IACJ;eAAM,CAAC;IANd,IAAQ,CAAAC,CAAC,CAAC,iBAMP,CAAC,EAACA,CAAC,CAAC;IAcP,SAAa,KAAK;IAClB,WAAe,OAAO;IACtB,YAAgBC,EAAE,CAAC,CAACC,KAAM,EAAEC,OAAQ;IAMpC,SAAa,CAAC;IAEd,SAAaC,gBAAgB,CAACC,CAAM;IAEpC,OAAW,CAACA,CAAM;IAElB,QAAY,CAACC,MAAM;IACnB,YAAgBC,KAAK,CAAC,CAAC;IAEvB,aAAiBC,EAAE,CAACC,IAAI;IAIxB,SAAe,CAAO,CAAP,CAAA,CAAC,CAAAC,CAAC,GAAC,CAAC,EAAC,CAAC,GAAC,CAAC,EAACC,MAAM,GAAC,CAAC,EAAwB,CAAvB,CAAAC,SAAS,EAAC,CAAC,EAACC,UAAU,GAAC,CAAC,EAACC,EAAE,CAACC,SAAS","file":"gen_input.py"} \ No newline at end of file diff --git a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py index dd2adafce..40299b387 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py +++ b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py @@ -39,20 +39,30 @@ def test(): __gen_null_safe_call(j, lambda: 'abc'.j(123)) __gen_null_safe_call(k, lambda: k(456, 1.23)) f(safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.readFile", readFile, [], [safeds_runner.file_mtime('a.txt')])) - f(l(lambda a: segment_a(a))) - f(l(lambda a: (3) * (segment_a(a)))) - f(l(lambda a: safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [(3) * (segment_a(a))], []))) - f(l(lambda a: (3) * (safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [(3) * (segment_a(a))], [])], [])))) def __gen_lambda_0(a): - __gen_block_lambda_result_result = segment_a(a) - return __gen_block_lambda_result_result + return segment_a(a) f(l(__gen_lambda_0)) def __gen_lambda_1(a): - __gen_block_lambda_result_result = safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [segment_a(a)], []) - return __gen_block_lambda_result_result + return (3) * (segment_a(a)) f(l(__gen_lambda_1)) - f(safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.l", l, [lambda a: (3) * (a)], [])) def __gen_lambda_2(a): + return safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [(3) * (segment_a(a))], []) + f(l(__gen_lambda_2)) + def __gen_lambda_3(a): + return (3) * (safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [(3) * (segment_a(a))], [])], [])) + f(l(__gen_lambda_3)) + def __gen_lambda_4(a): + __gen_block_lambda_result_result = segment_a(a) + return __gen_block_lambda_result_result + f(l(__gen_lambda_4)) + def __gen_lambda_5(a): + __gen_block_lambda_result_result = safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [segment_a(a)], []) + return __gen_block_lambda_result_result + f(l(__gen_lambda_5)) + def __gen_lambda_6(a): + return (3) * (a) + f(safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.l", l, [__gen_lambda_6], [])) + def __gen_lambda_7(a): __gen_block_lambda_result_result = (3) * (safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.m", m, [a], [])) return __gen_block_lambda_result_result - f(safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.l", l, [__gen_lambda_2], [])) + f(safeds_runner.memoized_static_call("tests.generator.runnerIntegration.expressions.calls.main.l", l, [__gen_lambda_7], [])) diff --git a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py.map b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py.map index 1e09de5e5..85dcac310 100644 --- a/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py.map +++ b/packages/safe-ds-lang/tests/resources/generation/python/runner integration/expressions/calls/main/generated/tests/generator/runnerIntegration/expressions/calls/main/gen_input.py.map @@ -1 +1 @@ -{"version":3,"sources":["input.sdsdev"],"names":["segment_a","a","result","test","f","g","param2","h","i","j","k","readfile","l","m"],"mappings":"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","file":"gen_input.py"} \ No newline at end of file +{"version":3,"sources":["input.sdsdev"],"names":["segment_a","a","result","test","f","g","param2","h","i","j","k","readfile","l","m"],"mappings":"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","file":"gen_input.py"} \ No newline at end of file