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

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

Offen
#89 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
TypeScript
Sterne
13
Forks
13
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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!

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.