Fix moduleAttributesVersion errors with stage-0 preset in babel standalone (#11631)

* Fix moduleAttributesVersion errors with stage-0 preset in babel standalone

* Add regression test for stage-0 not erroring on missing moduleattributes version

* Remove moduleAttributesVersion from preset config
This commit is contained in:
Matt Hamlin 2020-05-28 14:35:06 -04:00 committed by GitHub
parent ddfdf00167
commit 8e41f26e12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 30 deletions

View File

@ -3,11 +3,11 @@ import { declare } from "@babel/helper-plugin-utils";
export default declare((api, { version }) => {
api.assertVersion(7);
if (typeof version !== "string" || version !== "apr-2020") {
if (typeof version !== "string" || version !== "may-2020") {
throw new Error(
"The 'moduleAttributes' plugin requires a 'version' option," +
" representing the last proposal update. Currently, the" +
" only supported value is 'apr-2020'.",
" only supported value is 'may-2020'.",
);
}

View File

@ -9,29 +9,39 @@
<textarea id="input" style="width: 100%" rows="10">
const getMessage = () => 'Hello World';
const someDiv = <div>{getMessage()}</div>;
</textarea>
</textarea
>
Transformed code using Babel <strong id="version"></strong>:
<pre id="output">Loading...</pre>
<script src="../babel.js"></script>
<script>
console.log('Babel =', Babel);
document.getElementById('version').innerHTML = Babel.version;
var inputEl = document.getElementById('input');
var outputEl = document.getElementById('output');
console.log("Babel =", Babel);
document.getElementById("version").innerHTML = Babel.version;
var inputEl = document.getElementById("input");
var outputEl = document.getElementById("output");
function transform() {
try {
outputEl.innerHTML = Babel.transform(inputEl.value, {
presets: ['es2015', 'react', 'stage-0']
presets: [
"es2015",
"react",
[
"stage-0",
{
decoratorsBeforeExport: false,
},
],
],
}).code;
} catch (ex) {
outputEl.innerHTML = 'ERROR: ' + ex.message;
outputEl.innerHTML = "ERROR: " + ex.message;
}
}
inputEl.addEventListener('keyup', transform, false);
inputEl.addEventListener("keyup", transform, false);
transform();
</script>
</body>

View File

@ -9,6 +9,7 @@ export default (_: any, opts: Object = {}) => {
decoratorsLegacy = false,
decoratorsBeforeExport,
pipelineProposal = "minimal",
moduleAttributesVersion = "may-2020",
} = opts;
return {
@ -21,6 +22,7 @@ export default (_: any, opts: Object = {}) => {
decoratorsLegacy,
decoratorsBeforeExport,
pipelineProposal,
moduleAttributesVersion,
},
],
],

View File

@ -203,6 +203,13 @@
Babel.transform("/a*/u", { presets: ["es2015"] }),
).not.toThrow();
});
it("#11628 - supports stage-0 passing moduleAttributesVersion to stage-1", () => {
expect(() =>
Babel.transform("const getMessage = () => 'Hello World'", {
presets: [["stage-0", { decoratorsBeforeExport: false }]],
}),
).not.toThrow();
});
});
},
);