Rely entirely on sourceType for module vs script differentiation. (#7417)
This commit is contained in:
parent
bf8b25289b
commit
ddd40bf5c7
@ -214,6 +214,7 @@ describe("api", function() {
|
||||
|
||||
function execTest(passPerPreset) {
|
||||
return babel.transform("type Foo = number; let x = (y): Foo => y;", {
|
||||
sourceType: "script",
|
||||
passPerPreset: passPerPreset,
|
||||
presets: [
|
||||
// First preset with our plugin, "before"
|
||||
|
||||
@ -209,7 +209,7 @@ export default class ImportInjector {
|
||||
// to a variable.
|
||||
let name = nameHint || importName;
|
||||
|
||||
const isMod = isModule(this._programPath, true);
|
||||
const isMod = isModule(this._programPath);
|
||||
const isModuleForNode = isMod && importingInterop === "node";
|
||||
const isModuleForBabel = isMod && importingInterop === "babel";
|
||||
|
||||
|
||||
@ -1,11 +1,7 @@
|
||||
/**
|
||||
* A small utility to check if a file qualifies as a module, based on a few
|
||||
* possible conditions.
|
||||
* A small utility to check if a file qualifies as a module.
|
||||
*/
|
||||
export default function isModule(
|
||||
path: NodePath,
|
||||
requireUnambiguous: boolean = false,
|
||||
) {
|
||||
export default function isModule(path: NodePath) {
|
||||
const { sourceType } = path.node;
|
||||
if (sourceType !== "module" && sourceType !== "script") {
|
||||
throw path.buildCodeFrameError(
|
||||
@ -13,19 +9,5 @@ export default function isModule(
|
||||
);
|
||||
}
|
||||
|
||||
const filename = path.hub.file.opts.filename;
|
||||
if (/\.mjs$/.test(filename)) {
|
||||
requireUnambiguous = false;
|
||||
}
|
||||
|
||||
return (
|
||||
path.node.sourceType === "module" &&
|
||||
(!requireUnambiguous || isUnambiguousModule(path))
|
||||
);
|
||||
}
|
||||
|
||||
// This approach is not ideal. It is here to preserve compatibility for now,
|
||||
// but really this should just return true or be deleted.
|
||||
function isUnambiguousModule(path) {
|
||||
return path.get("body").some(p => p.isModuleDeclaration());
|
||||
return path.node.sourceType === "module";
|
||||
}
|
||||
|
||||
@ -330,6 +330,7 @@ function run(task) {
|
||||
const newOpts = merge(
|
||||
{
|
||||
filename: self.loc,
|
||||
sourceType: "unambiguous",
|
||||
},
|
||||
opts,
|
||||
);
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleIds": true,
|
||||
"moduleId": "my custom module name"
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleIds": true
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleIds": true,
|
||||
"moduleId": "my custom module name",
|
||||
"plugins": [
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleIds": true,
|
||||
"plugins": [
|
||||
"external-helpers",
|
||||
|
||||
@ -98,9 +98,7 @@ export default function(api, options) {
|
||||
visitor: {
|
||||
Program: {
|
||||
exit(path) {
|
||||
// For now this requires unambiguous rather that just sourceType
|
||||
// because Babel currently parses all files as sourceType:module.
|
||||
if (!isModule(path, true /* requireUnambiguous */)) return;
|
||||
if (!isModule(path)) return;
|
||||
|
||||
// Rename the bindings auto-injected into the scope so there is no
|
||||
// risk of conflict between the bindings.
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleIds": true,
|
||||
"moduleId": "my custom module name",
|
||||
"plugins": [
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleId": "MyLib",
|
||||
"plugins": [
|
||||
"external-helpers",
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleIds": true,
|
||||
"plugins": [
|
||||
"external-helpers",
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleIds": true,
|
||||
"moduleId": "my custom module name"
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleId": "MyLib"
|
||||
}
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"moduleIds": true
|
||||
}
|
||||
|
||||
@ -7,6 +7,7 @@ require("../babel-preset-env");
|
||||
describe("babel-preset-env-standalone", () => {
|
||||
it("works w/o targets", () => {
|
||||
const output = Babel.transform("const a = 1;", {
|
||||
sourceType: "script",
|
||||
presets: ["env"],
|
||||
}).code;
|
||||
assert.equal(output, "var a = 1;");
|
||||
@ -14,6 +15,7 @@ describe("babel-preset-env-standalone", () => {
|
||||
|
||||
it("doesn't transpile `const` with chrome 60", () => {
|
||||
const output = Babel.transform("const a = 1;", {
|
||||
sourceType: "script",
|
||||
presets: [
|
||||
[
|
||||
"env",
|
||||
@ -30,6 +32,7 @@ describe("babel-preset-env-standalone", () => {
|
||||
|
||||
it("transpiles `const` with chrome 60 and preset-es2015", () => {
|
||||
const output = Babel.transform("const a = 1;", {
|
||||
sourceType: "script",
|
||||
presets: [
|
||||
[
|
||||
"env",
|
||||
@ -47,6 +50,7 @@ describe("babel-preset-env-standalone", () => {
|
||||
|
||||
it("uses transform-new-targets plugin", () => {
|
||||
const output = Babel.transform("function Foo() {new.target}", {
|
||||
sourceType: "script",
|
||||
presets: ["env"],
|
||||
}).code;
|
||||
assert.equal(
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"useBuiltIns": "usage"
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"sourceType": "module",
|
||||
"presets": [
|
||||
["../../../../lib", {
|
||||
"shippedProposals": true,
|
||||
|
||||
@ -16,6 +16,7 @@ describe("@babel/standalone", () => {
|
||||
});
|
||||
it("handles the es2015-loose preset", () => {
|
||||
const output = Babel.transform("class A {}", {
|
||||
sourceType: "script",
|
||||
presets: ["es2015-loose"],
|
||||
}).code;
|
||||
assert.equal(output, "var A = function A() {};");
|
||||
@ -52,7 +53,7 @@ describe("@babel/standalone", () => {
|
||||
},
|
||||
},
|
||||
],
|
||||
sourceType: "module",
|
||||
sourceType: "script",
|
||||
};
|
||||
const output = Babel.transformFromAst(ast, "42", { presets: ["es2015"] })
|
||||
.code;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user