Fix isTypeModuleObjectExpression (#17599)
This commit is contained in:
1 parent
876f3931a9
commit
dd8d59b983
7 files changed
+208
-121
No files matched your search
@@ -378,16 +378,24 @@ function isNonEmptyBlockStatement(node) {
|
||||
);
|
||||
}
|
||||
|
||||
// { type: "module" }
|
||||
// `{ type: "module" }` and `{"type": "module"}`
|
||||
function isTypeModuleObjectExpression(node) {
|
||||
if (!(node.type === "ObjectExpression" && node.properties.length === 1)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const [property] = node.properties;
|
||||
|
||||
if (!isObjectProperty(property)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return (
|
||||
node.type === "ObjectExpression" &&
|
||||
node.properties.length === 1 &&
|
||||
isObjectProperty(node.properties[0]) &&
|
||||
node.properties[0].key.type === "Identifier" &&
|
||||
node.properties[0].key.name === "type" &&
|
||||
isStringLiteral(node.properties[0].value) &&
|
||||
node.properties[0].value.value === "module"
|
||||
!property.computed &&
|
||||
((property.key.type === "Identifier" && property.key.name === "type") ||
|
||||
(isStringLiteral(property.key) && property.key.value === "type")) &&
|
||||
isStringLiteral(property.value) &&
|
||||
property.value.value === "module"
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
||||
|
||||
exports[`comments.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:32)
|
||||
@@ -295,91 +295,3 @@ foo(module {
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
|
||||
exports[`worker.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:32)
|
||||
> 1 | let worker = new Worker(module {
|
||||
| ^
|
||||
2 | onmessage = function({data}) {
|
||||
3 | let mod = import(data);
|
||||
4 | postMessage(mod.fn());
|
||||
Cause: Unexpected token (1:31)"
|
||||
`;
|
||||
|
||||
exports[`worker.js [espree] format 1`] = `
|
||||
"Unexpected token { (1:32)
|
||||
> 1 | let worker = new Worker(module {
|
||||
| ^
|
||||
2 | onmessage = function({data}) {
|
||||
3 | let mod = import(data);
|
||||
4 | postMessage(mod.fn());
|
||||
Cause: Unexpected token {"
|
||||
`;
|
||||
|
||||
exports[`worker.js [meriyah] format 1`] = `
|
||||
"Expected ')' (1:32)
|
||||
> 1 | let worker = new Worker(module {
|
||||
| ^
|
||||
2 | onmessage = function({data}) {
|
||||
3 | let mod = import(data);
|
||||
4 | postMessage(mod.fn());
|
||||
Cause: [1:31-1:32]: Expected ')'"
|
||||
`;
|
||||
|
||||
exports[`worker.js [oxc] format 1`] = `
|
||||
"Expected \`,\` but found \`{\` (1:32)
|
||||
> 1 | let worker = new Worker(module {
|
||||
| ^
|
||||
2 | onmessage = function({data}) {
|
||||
3 | let mod = import(data);
|
||||
4 | postMessage(mod.fn());"
|
||||
`;
|
||||
|
||||
exports[`worker.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
let worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {type: "module"});
|
||||
|
||||
let worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {type: "module", foo: "bar" });
|
||||
|
||||
worker.postMessage(module { export function fn() { return "hello!" } });
|
||||
|
||||
=====================================output=====================================
|
||||
let worker = new Worker(module {
|
||||
onmessage = function ({ data }) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
};
|
||||
}, { type: "module" });
|
||||
|
||||
let worker = new Worker(
|
||||
module {
|
||||
onmessage = function ({ data }) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
};
|
||||
},
|
||||
{ type: "module", foo: "bar" },
|
||||
);
|
||||
|
||||
worker.postMessage(module {
|
||||
export function fn() {
|
||||
return "hello!";
|
||||
}
|
||||
});
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
@@ -1,9 +1,9 @@
|
||||
runFormatTest(import.meta, ["babel"], {
|
||||
errors: {
|
||||
acorn: ["module-blocks.js", "range.js", "comments.js", "worker.js"],
|
||||
espree: ["module-blocks.js", "range.js", "comments.js", "worker.js"],
|
||||
meriyah: ["module-blocks.js", "range.js", "comments.js", "worker.js"],
|
||||
oxc: ["module-blocks.js", "range.js", "comments.js", "worker.js"],
|
||||
"oxc-ts": ["module-blocks.js", "range.js", "comments.js", "worker.js"],
|
||||
},
|
||||
});
|
||||
const errors = {
|
||||
acorn: ["module-blocks.js", "range.js", "comments.js"],
|
||||
espree: ["module-blocks.js", "range.js", "comments.js"],
|
||||
meriyah: ["module-blocks.js", "range.js", "comments.js"],
|
||||
oxc: ["module-blocks.js", "range.js", "comments.js"],
|
||||
"oxc-ts": ["module-blocks.js", "range.js", "comments.js"],
|
||||
};
|
||||
|
||||
runFormatTest(import.meta, ["babel"], { errors });
|
||||
@@ -0,0 +1,137 @@
|
||||
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
||||
|
||||
exports[`worker.js [acorn] format 1`] = `
|
||||
"Unexpected token (1:28)
|
||||
> 1 | worker = new Worker(module {
|
||||
| ^
|
||||
2 | onmessage = function({data}) {
|
||||
3 | let mod = import(data);
|
||||
4 | postMessage(mod.fn());
|
||||
Cause: Unexpected token (1:27)"
|
||||
`;
|
||||
|
||||
exports[`worker.js [espree] format 1`] = `
|
||||
"Unexpected token { (1:28)
|
||||
> 1 | worker = new Worker(module {
|
||||
| ^
|
||||
2 | onmessage = function({data}) {
|
||||
3 | let mod = import(data);
|
||||
4 | postMessage(mod.fn());
|
||||
Cause: Unexpected token {"
|
||||
`;
|
||||
|
||||
exports[`worker.js [meriyah] format 1`] = `
|
||||
"Expected ')' (1:28)
|
||||
> 1 | worker = new Worker(module {
|
||||
| ^
|
||||
2 | onmessage = function({data}) {
|
||||
3 | let mod = import(data);
|
||||
4 | postMessage(mod.fn());
|
||||
Cause: [1:27-1:28]: Expected ')'"
|
||||
`;
|
||||
|
||||
exports[`worker.js [oxc] format 1`] = `
|
||||
"Expected \`,\` but found \`{\` (1:28)
|
||||
> 1 | worker = new Worker(module {
|
||||
| ^
|
||||
2 | onmessage = function({data}) {
|
||||
3 | let mod = import(data);
|
||||
4 | postMessage(mod.fn());"
|
||||
`;
|
||||
|
||||
exports[`worker.js format 1`] = `
|
||||
====================================options=====================================
|
||||
parsers: ["babel"]
|
||||
printWidth: 80
|
||||
| printWidth
|
||||
=====================================input======================================
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {type: "module"});
|
||||
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {'type': "module"});
|
||||
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {type: "module", foo: "bar" });
|
||||
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {...{type: "module"}});
|
||||
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {[type]: "module"});
|
||||
|
||||
worker.postMessage(module { export function fn() { return "hello!" } });
|
||||
|
||||
=====================================output=====================================
|
||||
worker = new Worker(module {
|
||||
onmessage = function ({ data }) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
};
|
||||
}, { type: "module" });
|
||||
|
||||
worker = new Worker(module {
|
||||
onmessage = function ({ data }) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
};
|
||||
}, { type: "module" });
|
||||
|
||||
worker = new Worker(
|
||||
module {
|
||||
onmessage = function ({ data }) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
};
|
||||
},
|
||||
{ type: "module", foo: "bar" },
|
||||
);
|
||||
|
||||
worker = new Worker(
|
||||
module {
|
||||
onmessage = function ({ data }) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
};
|
||||
},
|
||||
{ ...{ type: "module" } },
|
||||
);
|
||||
|
||||
worker = new Worker(
|
||||
module {
|
||||
onmessage = function ({ data }) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
};
|
||||
},
|
||||
{ [type]: "module" },
|
||||
);
|
||||
|
||||
worker.postMessage(module {
|
||||
export function fn() {
|
||||
return "hello!";
|
||||
}
|
||||
});
|
||||
|
||||
================================================================================
|
||||
`;
|
||||
@@ -0,0 +1,9 @@
|
||||
runFormatTest(import.meta, ["babel"], {
|
||||
errors: {
|
||||
acorn: ["worker.js"],
|
||||
espree: ["worker.js"],
|
||||
meriyah: ["worker.js"],
|
||||
oxc: ["worker.js"],
|
||||
"oxc-ts": ["worker.js"],
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,36 @@
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {type: "module"});
|
||||
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {'type': "module"});
|
||||
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {type: "module", foo: "bar" });
|
||||
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {...{type: "module"}});
|
||||
|
||||
worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {[type]: "module"});
|
||||
|
||||
worker.postMessage(module { export function fn() { return "hello!" } });
|
||||
@@ -1,15 +0,0 @@
|
||||
let worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {type: "module"});
|
||||
|
||||
let worker = new Worker(module {
|
||||
onmessage = function({data}) {
|
||||
let mod = import(data);
|
||||
postMessage(mod.fn());
|
||||
}
|
||||
}, {type: "module", foo: "bar" });
|
||||
|
||||
worker.postMessage(module { export function fn() { return "hello!" } });
|
||||
Reference in new issue
Block a user