Skip to content

Commit 6410f1a

Browse files
committed
fix: rest propertyName
1 parent bc7e2db commit 6410f1a

File tree

15 files changed

+91
-792
lines changed

15 files changed

+91
-792
lines changed

src/emitter.ts

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
*/
55

66
import * as ts from 'typescript';
7+
78
import {
89
SyntaxKind,
910
ListFormat,
1011
SourceFile,
1112
Symbol,
12-
Node
13+
Node,
14+
isImportSpecifier,
15+
isBlock,
1316
} from 'typescript';
1417

1518
import {
@@ -26,21 +29,23 @@ import {
2629
isPrologueDirective,
2730
rangeStartPositionsAreOnSameLine,
2831
} from './utilities';
32+
2933
import * as utilities from './utilities';
34+
3035
import {
3136
shouldAddDollar,
32-
isImportSpecifier,
3337
shouldUseArray,
3438
shouldAddDoubleQuote,
35-
isBlock,
3639
isStringLike
3740
} from './utilities/nodeTest';
41+
3842
import {
3943
some,
4044
cast,
4145
lastOrUndefined,
4246
singleOrUndefined
4347
} from './core';
48+
4449
import {tokenToString} from './scanner';
4550
import {getStartsOnNewLine} from './factory';
4651
import {CompilerState} from './types';
@@ -516,8 +521,8 @@ export function emitFile(sourceFile: SourceFile, state: CompilerState) {
516521
// return emitClassExpression(<ClassExpression>node);
517522
// case SyntaxKind.OmittedExpression:
518523
// return;
519-
// case SyntaxKind.AsExpression:
520-
// return emitAsExpression(<AsExpression>node);
524+
case SyntaxKind.AsExpression:
525+
return emitAsExpression(<ts.AsExpression>node);
521526
// case SyntaxKind.NonNullExpression:
522527
// return emitNonNullExpression(<NonNullExpression>node);
523528
// case SyntaxKind.MetaProperty:
@@ -1300,15 +1305,15 @@ export function emitFile(sourceFile: SourceFile, state: CompilerState) {
13001305
// emitTypeArguments(node, node.typeArguments);
13011306
// }
13021307

1303-
// function emitAsExpression(node: AsExpression) {
1304-
// emitExpression(node.expression);
1305-
// if (node.type) {
1306-
// writeSpace();
1307-
// writeKeyword("as");
1308-
// writeSpace();
1309-
// emit(node.type);
1310-
// }
1311-
// }
1308+
function emitAsExpression(node: ts.AsExpression) {
1309+
emitExpression(node.expression);
1310+
// if (node.type) {
1311+
// writeSpace();
1312+
// writeKeyword("as");
1313+
// writeSpace();
1314+
// emit(node.type);
1315+
// }
1316+
}
13121317

13131318
// function emitNonNullExpression(node: NonNullExpression) {
13141319
// emitExpression(node.expression);
@@ -1555,9 +1560,14 @@ export function emitFile(sourceFile: SourceFile, state: CompilerState) {
15551560
const count = node.name.elements.length;
15561561
let initializer = node.initializer;
15571562
node.name.elements.forEach((element, index) => {
1558-
if (ts.isIdentifier(element.name) && ts.isIdentifier(initializer)) {
1563+
1564+
if (ts.isIdentifier(element.name)) {
1565+
15591566
const nameNode = element.name;
1560-
const access = ts.createPropertyAccess(initializer, nameNode);
1567+
const access = ts.createPropertyAccess(
1568+
initializer,
1569+
element.propertyName ? getTextOfNode(element.propertyName) : nameNode
1570+
);
15611571

15621572
writeBase("$");
15631573
emit(nameNode);
@@ -1880,7 +1890,7 @@ export function emitFile(sourceFile: SourceFile, state: CompilerState) {
18801890
const moduleIt = allowedModules[importModuleName];
18811891

18821892
// 需要将引入的变量跟 module 对应起来
1883-
if (node.importClause.namedBindings) {
1893+
if (node.importClause && node.importClause.namedBindings) {
18841894
node.importClause.namedBindings.forEachChild(child => {
18851895
const name = getTextOfNode(child);
18861896
state.moduleNamedImports[name] = {
@@ -1899,7 +1909,7 @@ export function emitFile(sourceFile: SourceFile, state: CompilerState) {
18991909
writeLine();
19001910
}
19011911

1902-
if (node.importClause.name) {
1912+
if (node.importClause && node.importClause.name) {
19031913
let text = getTextOfNode(node.importClause.name);
19041914
state.moduleDefaultImports[text] = {
19051915
className: moduleIt.className,

src/features/array.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,12 @@
44
*/
55

66
import {
7-
EmitHint
8-
} from 'typescript';
9-
10-
import {
7+
EmitHint,
118
isArrayLiteralExpression,
129
isPropertyAccessExpression,
1310
isCallExpression,
1411
isIdentifier
15-
} from '../utilities/nodeTest';
12+
} from 'typescript';
1613

1714
import method from '../utilities/method';
1815

src/features/console.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
*/
55

66
import {
7-
EmitHint
8-
} from 'typescript';
9-
10-
import {
7+
EmitHint,
118
isPropertyAccessExpression,
129
isIdentifier,
1310
isCallExpression
14-
} from '../utilities/nodeTest';
11+
} from 'typescript';
1512

1613
import method from '../utilities/method';
1714

src/features/date.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
*/
55

66
import {
7-
EmitHint
8-
} from 'typescript';
9-
10-
import {
7+
EmitHint,
118
isPropertyAccessExpression,
129
isIdentifier,
1310
isCallExpression
14-
} from '../utilities/nodeTest';
11+
} from 'typescript';
1512

1613
import method from '../utilities/method';
1714

src/features/global.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@
44
*/
55

66
import {
7-
EmitHint
8-
} from 'typescript';
9-
10-
import {
7+
EmitHint,
118
isCallExpression
12-
} from '../utilities/nodeTest';
9+
} from 'typescript';
1310

1411
import method from '../utilities/method';
1512

src/features/import.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
* @author cxtom(cxtom2008@gmail.com)
44
*/
55

6-
import * as ts from 'typescript';
7-
86
import {
97
EmitHint,
108
isCallExpression,

src/features/json.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,11 @@ import {
88
CallExpression,
99
createLiteral,
1010
createNodeArray,
11-
ListFormat
12-
} from 'typescript';
13-
14-
import {
11+
ListFormat,
1512
isPropertyAccessExpression,
1613
isIdentifier,
1714
isCallExpression
18-
} from '../utilities/nodeTest';
15+
} from 'typescript';
1916

2017

2118
const methods = {

src/features/math.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
*/
55

66
import {
7-
EmitHint
8-
} from 'typescript';
9-
10-
import {
7+
EmitHint,
118
isPropertyAccessExpression,
129
isIdentifier,
1310
isCallExpression
14-
} from '../utilities/nodeTest';
11+
} from 'typescript';
1512

1613
import method from '../utilities/method';
1714

src/features/number.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
*/
55

66
import {
7-
EmitHint, Expression, PropertyAccessExpression
8-
} from 'typescript';
9-
10-
import {
7+
EmitHint,
118
isPropertyAccessExpression,
129
isIdentifier,
1310
isCallExpression,
11+
} from 'typescript';
12+
13+
import {
1414
isNumberLike
1515
} from '../utilities/nodeTest';
1616

src/features/object.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44
*/
55

66
import {
7-
EmitHint
8-
} from 'typescript';
9-
10-
import {
7+
EmitHint,
118
isPropertyAccessExpression,
129
isIdentifier,
1310
isCallExpression
14-
} from '../utilities/nodeTest';
11+
} from 'typescript';
1512

1613
import method from '../utilities/method';
1714

0 commit comments

Comments
 (0)