jsii icon indicating copy to clipboard operation
jsii copied to clipboard

`jsii-rosetta`: Multi-line assignment statement where function is on the right hand side breaks in Python

Open mutahhir opened this issue 2 years ago • 1 comments

Describe the bug

Rosetta respects a multi-line assignment when the right hand side expression is a function, which is not allowed in Python.

It's interesting to note that the same doesn't happen with other types that I've tested, so primitives, arrays, maps etc. are not a problem because rosetta forces them on the same line even when it's a multi-line assignment in Typescript.

Expected Behavior

The following code in Typescript:

  let aSimpleThing = 
    aFunction();

Should be converted to the following in python:

    a_simple_thing = a_function()

Current Behavior

Current conversion is:

    a_simple_thing =
    a_function()

which is a syntax error in Python

Reproduction Steps

The following Typescript code should be enough to reproduce the error when converted with rosetta to Python:

function aFunction() {
  return "hello";
}

export function main() {
  let aSimpleThing = 
    aFunction();

  return aSimpleThing;
}

Possible Solution

No response

Additional Information/Context

No response

SDK version used

1.75.0

Environment details (OS name and version, etc.)

Mac OS 13.2 Arm64

mutahhir avatar Feb 15 '23 12:02 mutahhir

The same problem occurs with new:

let obj = new F();

is translated to

obj =
F()

jorpic avatar Nov 07 '23 19:11 jorpic