From adc7beec3b8ee4cc4c4e8d09b8bbc380f90b05cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Fri, 22 Jan 2021 17:46:10 -0500 Subject: [PATCH] fix: start TypePredicate node after returnToken --- packages/babel-parser/src/plugins/typescript/index.js | 5 ++--- .../typescript/arrow-function/predicate-types/output.json | 2 +- .../typescript/assert-predicate/arrow-function/output.json | 4 ++-- .../typescript/assert-predicate/asserts-this/output.json | 2 +- .../assert-predicate/asserts-var-with-predicate/output.json | 2 +- .../typescript/assert-predicate/asserts-var/output.json | 6 +++--- .../declare-asserts-var-with-predicate/output.json | 6 +++--- .../assert-predicate/function-declaration/output.json | 4 ++-- .../invalid-escaped-asserts-keyword/output.json | 6 +++--- .../typescript/function/predicate-types/output.json | 4 ++-- 10 files changed, 20 insertions(+), 21 deletions(-) diff --git a/packages/babel-parser/src/plugins/typescript/index.js b/packages/babel-parser/src/plugins/typescript/index.js index 8603b975c69f..3a88f8d67305 100644 --- a/packages/babel-parser/src/plugins/typescript/index.js +++ b/packages/babel-parser/src/plugins/typescript/index.js @@ -1050,6 +1050,8 @@ export default (superClass: Class): Class => const t: N.TsTypeAnnotation = this.startNode(); this.expect(returnToken); + const node = this.startNode(); + const asserts = !!this.tsTryParse( this.tsParseTypePredicateAsserts.bind(this), ); @@ -1061,7 +1063,6 @@ export default (superClass: Class): Class => // if it turns out to be a `TSThisType`, wrap it with `TSTypePredicate` // : asserts this if (thisTypePredicate.type === "TSThisType") { - const node: N.TsTypePredicate = this.startNodeAtNode(t); node.parameterName = (thisTypePredicate: N.TsThisType); node.asserts = true; thisTypePredicate = this.finishNode(node, "TSTypePredicate"); @@ -1082,7 +1083,6 @@ export default (superClass: Class): Class => return this.tsParseTypeAnnotation(/* eatColon */ false, t); } - const node: N.TsTypePredicate = this.startNodeAtNode(t); // : asserts foo node.parameterName = this.parseIdentifier(); node.asserts = asserts; @@ -1092,7 +1092,6 @@ export default (superClass: Class): Class => // : asserts foo is type const type = this.tsParseTypeAnnotation(/* eatColon */ false); - const node = this.startNodeAtNode(t); node.parameterName = typePredicateVariable; node.typeAnnotation = type; node.asserts = asserts; diff --git a/packages/babel-parser/test/fixtures/typescript/arrow-function/predicate-types/output.json b/packages/babel-parser/test/fixtures/typescript/arrow-function/predicate-types/output.json index 69135a95cab8..a022a2fa3647 100644 --- a/packages/babel-parser/test/fixtures/typescript/arrow-function/predicate-types/output.json +++ b/packages/babel-parser/test/fixtures/typescript/arrow-function/predicate-types/output.json @@ -18,7 +18,7 @@ "start":8,"end":21,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":21}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":8,"end":21,"loc":{"start":{"line":1,"column":8},"end":{"line":1,"column":21}}, + "start":10,"end":21,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":21}}, "parameterName": { "type": "Identifier", "start":10,"end":11,"loc":{"start":{"line":1,"column":10},"end":{"line":1,"column":11},"identifierName":"x"}, diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/arrow-function/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/arrow-function/output.json index 5c2fb6c0f625..5d921ad9527d 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/arrow-function/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/arrow-function/output.json @@ -27,7 +27,7 @@ "start":32,"end":57,"loc":{"start":{"line":1,"column":32},"end":{"line":1,"column":57}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":32,"end":57,"loc":{"start":{"line":1,"column":32},"end":{"line":1,"column":57}}, + "start":34,"end":57,"loc":{"start":{"line":1,"column":34},"end":{"line":1,"column":57}}, "parameterName": { "type": "Identifier", "start":42,"end":47,"loc":{"start":{"line":1,"column":42},"end":{"line":1,"column":47},"identifierName":"value"}, @@ -93,7 +93,7 @@ "start":96,"end":111,"loc":{"start":{"line":2,"column":32},"end":{"line":2,"column":47}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":96,"end":111,"loc":{"start":{"line":2,"column":32},"end":{"line":2,"column":47}}, + "start":98,"end":111,"loc":{"start":{"line":2,"column":34},"end":{"line":2,"column":47}}, "parameterName": { "type": "Identifier", "start":106,"end":111,"loc":{"start":{"line":2,"column":42},"end":{"line":2,"column":47},"identifierName":"value"}, diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-this/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-this/output.json index 46971ca25ce9..733703069e1f 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-this/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-this/output.json @@ -40,7 +40,7 @@ "start":15,"end":29,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":19}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":15,"end":29,"loc":{"start":{"line":2,"column":5},"end":{"line":2,"column":19}}, + "start":17,"end":29,"loc":{"start":{"line":2,"column":7},"end":{"line":2,"column":19}}, "parameterName": { "type": "TSThisType", "start":25,"end":29,"loc":{"start":{"line":2,"column":15},"end":{"line":2,"column":19}} diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var-with-predicate/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var-with-predicate/output.json index b356931f8a16..430a06d18339 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var-with-predicate/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var-with-predicate/output.json @@ -54,7 +54,7 @@ "start":42,"end":67,"loc":{"start":{"line":2,"column":32},"end":{"line":2,"column":57}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":42,"end":67,"loc":{"start":{"line":2,"column":32},"end":{"line":2,"column":57}}, + "start":44,"end":67,"loc":{"start":{"line":2,"column":34},"end":{"line":2,"column":57}}, "parameterName": { "type": "Identifier", "start":52,"end":57,"loc":{"start":{"line":2,"column":42},"end":{"line":2,"column":47},"identifierName":"value"}, diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var/output.json index 438bfea02bc2..4a28b0a63fa7 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/asserts-var/output.json @@ -10,6 +10,7 @@ { "type": "TSDeclareFunction", "start":0,"end":63,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":63}}, + "declare": true, "id": { "type": "Identifier", "start":17,"end":31,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":31},"identifierName":"assertIsString"}, @@ -37,7 +38,7 @@ "start":47,"end":62,"loc":{"start":{"line":1,"column":47},"end":{"line":1,"column":62}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":47,"end":62,"loc":{"start":{"line":1,"column":47},"end":{"line":1,"column":62}}, + "start":49,"end":62,"loc":{"start":{"line":1,"column":49},"end":{"line":1,"column":62}}, "parameterName": { "type": "Identifier", "start":57,"end":62,"loc":{"start":{"line":1,"column":57},"end":{"line":1,"column":62},"identifierName":"value"}, @@ -45,8 +46,7 @@ }, "asserts": true } - }, - "declare": true + } } ], "directives": [] diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/declare-asserts-var-with-predicate/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/declare-asserts-var-with-predicate/output.json index 6cfc63021f38..3f6847346d3f 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/declare-asserts-var-with-predicate/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/declare-asserts-var-with-predicate/output.json @@ -10,6 +10,7 @@ { "type": "TSDeclareFunction", "start":0,"end":73,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":73}}, + "declare": true, "id": { "type": "Identifier", "start":17,"end":31,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":31},"identifierName":"assertIsString"}, @@ -37,7 +38,7 @@ "start":47,"end":72,"loc":{"start":{"line":1,"column":47},"end":{"line":1,"column":72}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":47,"end":72,"loc":{"start":{"line":1,"column":47},"end":{"line":1,"column":72}}, + "start":49,"end":72,"loc":{"start":{"line":1,"column":49},"end":{"line":1,"column":72}}, "parameterName": { "type": "Identifier", "start":57,"end":62,"loc":{"start":{"line":1,"column":57},"end":{"line":1,"column":62},"identifierName":"value"}, @@ -53,8 +54,7 @@ }, "asserts": true } - }, - "declare": true + } } ], "directives": [] diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/function-declaration/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/function-declaration/output.json index 9e6d3541554c..fd3cd4e56d83 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/function-declaration/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/function-declaration/output.json @@ -37,7 +37,7 @@ "start":34,"end":59,"loc":{"start":{"line":1,"column":34},"end":{"line":1,"column":59}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":34,"end":59,"loc":{"start":{"line":1,"column":34},"end":{"line":1,"column":59}}, + "start":36,"end":59,"loc":{"start":{"line":1,"column":36},"end":{"line":1,"column":59}}, "parameterName": { "type": "Identifier", "start":44,"end":49,"loc":{"start":{"line":1,"column":44},"end":{"line":1,"column":49},"identifierName":"value"}, @@ -91,7 +91,7 @@ "start":98,"end":113,"loc":{"start":{"line":2,"column":34},"end":{"line":2,"column":49}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":98,"end":113,"loc":{"start":{"line":2,"column":34},"end":{"line":2,"column":49}}, + "start":100,"end":113,"loc":{"start":{"line":2,"column":36},"end":{"line":2,"column":49}}, "parameterName": { "type": "Identifier", "start":108,"end":113,"loc":{"start":{"line":2,"column":44},"end":{"line":2,"column":49},"identifierName":"value"}, diff --git a/packages/babel-parser/test/fixtures/typescript/assert-predicate/invalid-escaped-asserts-keyword/output.json b/packages/babel-parser/test/fixtures/typescript/assert-predicate/invalid-escaped-asserts-keyword/output.json index 8caf5c9c34a9..f8e8595b61c9 100644 --- a/packages/babel-parser/test/fixtures/typescript/assert-predicate/invalid-escaped-asserts-keyword/output.json +++ b/packages/babel-parser/test/fixtures/typescript/assert-predicate/invalid-escaped-asserts-keyword/output.json @@ -13,6 +13,7 @@ { "type": "TSDeclareFunction", "start":0,"end":68,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":68}}, + "declare": true, "id": { "type": "Identifier", "start":17,"end":31,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":31},"identifierName":"assertIsString"}, @@ -40,7 +41,7 @@ "start":47,"end":67,"loc":{"start":{"line":1,"column":47},"end":{"line":1,"column":67}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":47,"end":67,"loc":{"start":{"line":1,"column":47},"end":{"line":1,"column":67}}, + "start":49,"end":67,"loc":{"start":{"line":1,"column":49},"end":{"line":1,"column":67}}, "parameterName": { "type": "Identifier", "start":62,"end":67,"loc":{"start":{"line":1,"column":62},"end":{"line":1,"column":67},"identifierName":"value"}, @@ -48,8 +49,7 @@ }, "asserts": true } - }, - "declare": true + } } ], "directives": [] diff --git a/packages/babel-parser/test/fixtures/typescript/function/predicate-types/output.json b/packages/babel-parser/test/fixtures/typescript/function/predicate-types/output.json index 593fba67d38d..fe92c89b9a8a 100644 --- a/packages/babel-parser/test/fixtures/typescript/function/predicate-types/output.json +++ b/packages/babel-parser/test/fixtures/typescript/function/predicate-types/output.json @@ -37,7 +37,7 @@ "start":18,"end":32,"loc":{"start":{"line":1,"column":18},"end":{"line":1,"column":32}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":18,"end":32,"loc":{"start":{"line":1,"column":18},"end":{"line":1,"column":32}}, + "start":20,"end":32,"loc":{"start":{"line":1,"column":20},"end":{"line":1,"column":32}}, "parameterName": { "type": "Identifier", "start":20,"end":21,"loc":{"start":{"line":1,"column":20},"end":{"line":1,"column":21},"identifierName":"x"}, @@ -94,7 +94,7 @@ "start":53,"end":67,"loc":{"start":{"line":2,"column":17},"end":{"line":2,"column":31}}, "typeAnnotation": { "type": "TSTypePredicate", - "start":53,"end":67,"loc":{"start":{"line":2,"column":17},"end":{"line":2,"column":31}}, + "start":55,"end":67,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":31}}, "parameterName": { "type": "Identifier", "start":55,"end":56,"loc":{"start":{"line":2,"column":19},"end":{"line":2,"column":20},"identifierName":"x"},