diff --git a/src/babel/transformation/file/logger.js b/src/babel/transformation/file/logger.js index f0ce002374..3752bfebd8 100644 --- a/src/babel/transformation/file/logger.js +++ b/src/babel/transformation/file/logger.js @@ -16,6 +16,10 @@ export default class Logger { return parts; } + warn(msg) { + console.warn(this._buildMessage(msg)); + } + error(msg: string, Constructor = Error) { throw new Constructor(this._buildMessage(msg)); } diff --git a/src/babel/transformation/file/options.json b/src/babel/transformation/file/options.json index d1207b14dd..3aab927529 100644 --- a/src/babel/transformation/file/options.json +++ b/src/babel/transformation/file/options.json @@ -47,7 +47,8 @@ }, "experimental": { - "deprecated": "use `--stage 0`/`{ stage: 0 }` instead" + "description": "allow use of experimental transformers", + "default": false }, "highlightCode": { diff --git a/src/babel/transformation/transformer-pass.js b/src/babel/transformation/transformer-pass.js index 615c56ccd1..176376b3e9 100644 --- a/src/babel/transformation/transformer-pass.js +++ b/src/babel/transformation/transformer-pass.js @@ -13,6 +13,10 @@ export default class TransformerPass { this.handlers = transformer.handlers; this.file = file; this.key = transformer.key; + + if (this.canTransform() && transformer.metadata.experimental && !file.opts.experimental) { + file.log.warn(`THE TRANSFORMER ${this.key} HAS BEEN MARKED AS EXPERIMENTAL. USE AT YOUR OWN RISK. THIS WILL HIGHLY LIKELY BREAK YOUR CODE SO USE WITH **EXTREME** CAUTION`); + } } canTransform(): boolean { diff --git a/src/babel/transformation/transformers/minification/constant-folding.js b/src/babel/transformation/transformers/minification/constant-folding.js index 58c7f09716..2380cdae3c 100644 --- a/src/babel/transformation/transformers/minification/constant-folding.js +++ b/src/babel/transformation/transformers/minification/constant-folding.js @@ -2,7 +2,8 @@ import * as t from "../../../types"; export var metadata = { optional: true, - group: "builtin-prepass" + group: "builtin-prepass", + experimental: true }; export function AssignmentExpression() { diff --git a/src/babel/transformation/transformers/minification/dead-code-elimination.js b/src/babel/transformation/transformers/minification/dead-code-elimination.js index 8b8407144f..9d659dafeb 100644 --- a/src/babel/transformation/transformers/minification/dead-code-elimination.js +++ b/src/babel/transformation/transformers/minification/dead-code-elimination.js @@ -19,7 +19,8 @@ function toStatements(node) { export var metadata = { optional: true, - group: "builtin-pre" + group: "builtin-pre", + experimental: true }; export function ReferencedIdentifier(node, parent, scope) {