ember-cli / ember-cli/babel-plugin-debug-macros

Wrong transpilation when optional chaining is used in `assert()`

Abierto
#89 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
13
Forks
13
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I have this code:

```
assert('Need profile data', this.args.window.profile?.data);
```

When optional chaining is *not* transpiled, things work fine. The line above is transformed to:

```
(true && !(this.args.window.profile?.data) && (0, _debug.assert)('Need profile data', this.args.window.profile?.data));
```

However some automated dependency updates including most Babel stuff changed behavior, in that optional chaining is now transpiled, I believe due to some bug in Chrome, see https://github.com/babel/babel/issues/13145.

But now the transform yields this broken code:

```
var _this$args$window$pro;

(true && !(_this$args$window$pro.data) && (0, _debug.assert)('Need profile data', (_this$args$window$pro = this.args.window.profile) === null || _this$args$window$pro === void 0 ? void 0 : _this$args$window$pro.data));
```

Which throws with `Cannot read properties of undefined (reading 'data')` as at the time the `!(_this$args$window$pro.data)` expression is evaluated `_this$args$window$pro` is still undefined!

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.