bublejs / buble

https://buble.surge.sh
MIT License
869 stars 67 forks source link

fix(loop-function): handle async or generator function #224

Open vitorveiga opened 4 years ago

vitorveiga commented 4 years ago

Hello,

Transpiling the following snippet with options generator and asyncAwait disabled:

function* foo() {
  do {
    yield 1;
    const b = "string";

    function x() {
      console.log(b);
    }

    x();
  } while (1);
}

the result is:

function* foo() {
    var loop = function () {
        yield 1;
        var b = "string";

        function x() {
            console.log(b);
        }

        x();
    };
    do {
        loop();
    } while (1);
};

Evaluating the transpiled code, a Syntax Error occur due to the *missing ''** in loop function.

Note: Same behaviour in async functions.

vitorveiga commented 4 years ago

Semantically different. Working on a possible solutions.

vitorveiga commented 4 years ago

In order to be semantically equal, it was add await loop() for async function and yield* for generator functions