fix(babel): use correct types for params and args

This commit is contained in:
LuLaValva 2023-11-13 09:05:18 -08:00 committed by Dylan Piercey
parent 648a94928f
commit ad176646e1
3 changed files with 17 additions and 16 deletions

View File

@ -208,7 +208,7 @@ export function parseMarko(file) {
);
},
onTagTypeParams(part) {
currentTag.node.typeParameters = parseTypeParams(
currentBody.node.typeParameters = parseTypeParams(
file,
parser.read(part.value),
part.start,

View File

@ -193,12 +193,12 @@ Object.assign(Printer.prototype, {
}
if (node.body.params.length) {
if (node.typeParameters) {
if (node.body.typeParameters) {
if (!node.typeArguments) {
this.token(" ");
}
this.token("<");
this.printList(node.typeParameters.params, node);
this.printList(node.body.typeParameters.params, node);
this.token(">");
}
this.token("|");

View File

@ -147,7 +147,7 @@ const MarkoDefinitions = {
MarkoTagBody: {
aliases: ["Marko", "BlockParent", "Scope"],
builder: ["body", "params"],
visitor: ["params", "body"],
visitor: ["typeParameters", "params", "body"],
fields: {
params: {
validate: chain(
@ -156,6 +156,10 @@ const MarkoDefinitions = {
),
default: [],
},
typeParameters: {
validate: assertNodeType("TSTypeParameterDeclaration"),
optional: true,
},
body: {
validate: arrayOfType([
"MarkoTag",
@ -173,7 +177,14 @@ const MarkoDefinitions = {
MarkoTag: {
aliases: ["Marko", "Statement"],
builder: ["name", "attributes", "body", "arguments", "var"],
visitor: ["name", "attributes", "body", "arguments", "var"],
visitor: [
"name",
"typeArguments",
"attributes",
"body",
"arguments",
"var",
],
fields: {
name: {
validate: assertNodeType("Expression"),
@ -193,17 +204,7 @@ const MarkoDefinitions = {
optional: true,
},
typeArguments: {
validate: chain(
assertValueType("array"),
assertEach(assertNodeType("TypeAnnotation"))
),
optional: true,
},
typeParameters: {
validate: chain(
assertValueType("array"),
assertEach(assertNodeType("TypeAnnotation"))
),
validate: assertNodeType("TSTypeParameterInstantiation"),
optional: true,
},
rawValue: {