ember-cli / ember-cli-htmlbars

MIT License
77 stars 67 forks source link

Colocation babel plugin drops class decorators #442

Open ef4 opened 4 years ago

ef4 commented 4 years ago

With an input like

import hbs from 'ember-cli-htmlbars-inline-precompile';
const __COLOCATED_TEMPLATE__ = hbs`{{yield}}`;
export default @dec class {}

The class decorator @dec gets dropped:

import hbs from 'ember-cli-htmlbars-inline-precompile';
const __COLOCATED_TEMPLATE__ = hbs`{{yield}}`;
export default Ember._setComponentTemplate(__COLOCATED_TEMPLATE__, class {});

See example https://astexplorer.net/#/gist/4fb9360091ca6422ca0f9e4ee8ef9505/90046a397d94a8ccf8e97c17fd4f2d0cb867a129

I think all that is required to fix is to pass defaultExportDeclaration.decorators as the fourth argument to t.classExpression().

rwjblue commented 4 years ago

awesome, thank you for reporting @ef4!

rwjblue commented 4 years ago

We should also confirm that we don't loose comments (IIRC comments are sometimes attached to the node like this).