move @babel/helper-optimise-call-expression to ts (#12411)

* move @babel/helper-optimise-call-expression to ts

* chore: add flow interface
This commit is contained in:
Huáng Jùnliàng 2020-12-01 10:31:39 -05:00 committed by GitHub
parent 71f87874ce
commit 3266d2679a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 7 deletions

View File

@ -34,3 +34,12 @@ declare module "@babel/template" {
program: Program,
};
}
declare module "@babel/helper-optimise-call-expression" {
declare export default function optimiseCallExpression(
callee: BabelNodeExpression,
thisNode: BabelNodeExpression,
args: $Readonly<Array<BabelNodeExpression | BabelNodeSpreadElement>>,
optional: boolean
): BabelNodeCallExpression | BabelNodeOptionalCallExpression;
}

View File

@ -1,20 +1,26 @@
import * as t from "@babel/types";
import type {
CallExpression,
Expression,
OptionalCallExpression,
SpreadElement,
} from "@babel/types";
/**
* A helper function that generates a new call expression with given thisNode.
It will also optimize `(...arguments)` to `.apply(arguments)`
*
* @export
* @param {Node} callee The callee of call expression
* @param {Node} thisNode The desired this of call expression
* @param {Node[]} args The arguments of call expression
* @param {Expression} callee The callee of call expression
* @param {Expression} thisNode The desired this of call expression
* @param {Readonly<Array<Expression | SpreadElement>>} args The arguments of call expression
* @param {boolean} optional Whether the call expression is optional
* @returns {CallExpression | OptionalCallExpression} The generated new call expression
*/
export default function (
callee: Node,
thisNode: Node,
args: Node[],
export default function optimiseCallExpression(
callee: Expression,
thisNode: Expression,
args: Readonly<Array<Expression | SpreadElement>>,
optional: boolean,
): CallExpression | OptionalCallExpression {
if (