Add support for printing ImportAttribute (#11641)

This commit is contained in:
Brian Ng 2020-05-29 08:49:38 -05:00 committed by GitHub
parent 8e41f26e12
commit d7d36a6c25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 70 additions and 0 deletions

View File

@ -179,9 +179,24 @@ export function ImportDeclaration(node: Object) {
} }
this.print(node.source, node); this.print(node.source, node);
if (node.attributes?.length) {
this.space();
this.word("with");
this.space();
this.printList(node.attributes, node);
}
this.semicolon(); this.semicolon();
} }
export function ImportAttribute(node: Object) {
this.print(node.key);
this.token(":");
this.space();
this.print(node.value);
}
export function ImportNamespaceSpecifier(node: Object) { export function ImportNamespaceSpecifier(node: Object) {
this.token("*"); this.token("*");
this.space(); this.space();

View File

@ -0,0 +1 @@
import("foo.json", { with: { type: "json" } },);

View File

@ -0,0 +1,11 @@
{
"plugins": [
[
"moduleAttributes",
{
"version": "may-2020"
}
]
],
"sourceType": "module"
}

View File

@ -0,0 +1,5 @@
import("foo.json", {
with: {
type: "json"
}
});

View File

@ -0,0 +1 @@
import foo from "foo.json" with type: "json";

View File

@ -0,0 +1,11 @@
{
"plugins": [
[
"moduleAttributes",
{
"version": "may-2020"
}
]
],
"sourceType": "module"
}

View File

@ -0,0 +1 @@
import foo from "foo.json" with type: "json";

View File

@ -767,6 +767,9 @@ export function assertClassPrivateMethod(
export function assertImport(node: Object, opts?: Object = {}): void { export function assertImport(node: Object, opts?: Object = {}): void {
assert("Import", node, opts); assert("Import", node, opts);
} }
export function assertImportAttribute(node: Object, opts?: Object = {}): void {
assert("ImportAttribute", node, opts);
}
export function assertDecorator(node: Object, opts?: Object = {}): void { export function assertDecorator(node: Object, opts?: Object = {}): void {
assert("Decorator", node, opts); assert("Decorator", node, opts);
} }

View File

@ -692,6 +692,10 @@ export function Import(...args: Array<any>): Object {
return builder("Import", ...args); return builder("Import", ...args);
} }
export { Import as import }; export { Import as import };
export function ImportAttribute(...args: Array<any>): Object {
return builder("ImportAttribute", ...args);
}
export { ImportAttribute as importAttribute };
export function Decorator(...args: Array<any>): Object { export function Decorator(...args: Array<any>): Object {
return builder("Decorator", ...args); return builder("Decorator", ...args);
} }

View File

@ -224,6 +224,10 @@ defineType("Import", {
aliases: ["Expression"], aliases: ["Expression"],
}); });
defineType("ImportAttribute", {
visitor: ["key", "value"],
});
defineType("Decorator", { defineType("Decorator", {
visitor: ["expression"], visitor: ["expression"],
fields: { fields: {

View File

@ -2441,6 +2441,20 @@ export function isImport(node: ?Object, opts?: Object): boolean {
return false; return false;
} }
export function isImportAttribute(node: ?Object, opts?: Object): boolean {
if (!node) return false;
const nodeType = node.type;
if (nodeType === "ImportAttribute") {
if (typeof opts === "undefined") {
return true;
} else {
return shallowEqual(node, opts);
}
}
return false;
}
export function isDecorator(node: ?Object, opts?: Object): boolean { export function isDecorator(node: ?Object, opts?: Object): boolean {
if (!node) return false; if (!node) return false;