11import { types as t } from "@babel/core" ;
22
3- const { isObjectProperty } = t ;
3+ const {
4+ isObjectProperty,
5+ isArrayPattern,
6+ isObjectPattern,
7+ isAssignmentPattern,
8+ isRestElement,
9+ isIdentifier,
10+ } = t ;
411/**
512 * This is a helper function to determine if we should create an intermediate variable
613 * such that the RHS of an assignment is not duplicated.
@@ -9,11 +16,11 @@ const { isObjectProperty } = t;
916 * on further optimizations.
1017 */
1118export default function shouldStoreRHSInTemporaryVariable ( node : t . LVal ) {
12- if ( t . isArrayPattern ( node ) ) {
19+ if ( isArrayPattern ( node ) ) {
1320 const nonNullElements = node . elements . filter ( element => element !== null ) ;
1421 if ( nonNullElements . length > 1 ) return true ;
1522 else return shouldStoreRHSInTemporaryVariable ( nonNullElements [ 0 ] ) ;
16- } else if ( t . isObjectPattern ( node ) ) {
23+ } else if ( isObjectPattern ( node ) ) {
1724 const { properties } = node ;
1825 if ( properties . length > 1 ) return true ;
1926 else if ( properties . length === 0 ) return false ;
@@ -26,10 +33,10 @@ export default function shouldStoreRHSInTemporaryVariable(node: t.LVal) {
2633 return shouldStoreRHSInTemporaryVariable ( firstProperty ) ;
2734 }
2835 }
29- } else if ( t . isAssignmentPattern ( node ) ) {
36+ } else if ( isAssignmentPattern ( node ) ) {
3037 return shouldStoreRHSInTemporaryVariable ( node . left ) ;
31- } else if ( t . isRestElement ( node ) ) {
32- if ( t . isIdentifier ( node . argument ) ) return true ;
38+ } else if ( isRestElement ( node ) ) {
39+ if ( isIdentifier ( node . argument ) ) return true ;
3340 return shouldStoreRHSInTemporaryVariable ( node . argument ) ;
3441 } else {
3542 // node is Identifier or MemberExpression
0 commit comments