goldstein 4.1.2 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ChangeLog +10 -0
- package/README.md +0 -4
- package/build/parser.cjs +24 -1
- package/package.json +1 -1
- package/packages/keyword-if/index.js +2 -2
- package/packages/keyword-try/index.js +22 -0
- package/packages/printer/index.js +20 -0
- package/packages/printer/visitors/await-expression.js +10 -0
- package/packages/printer/visitors/call-expression.js +10 -0
- package/packages/printer/visitors/if-statement.js +19 -0
- package/packages/printer/visitors/try-statement.js +13 -0
package/ChangeLog
CHANGED
package/README.md
CHANGED
package/build/parser.cjs
CHANGED
|
@@ -5498,11 +5498,21 @@ function keywordTry(Parser3) {
|
|
|
5498
5498
|
arguments: [
|
|
5499
5499
|
expression.callee,
|
|
5500
5500
|
...expression.arguments
|
|
5501
|
-
]
|
|
5501
|
+
],
|
|
5502
|
+
goldstein: createGoldsteinNode({
|
|
5503
|
+
await: false,
|
|
5504
|
+
callee: expression.callee,
|
|
5505
|
+
arguments: expression.arguments
|
|
5506
|
+
})
|
|
5502
5507
|
};
|
|
5503
5508
|
else if (isAwaitExpression(expression))
|
|
5504
5509
|
node.expression = {
|
|
5505
5510
|
type: "AwaitExpression",
|
|
5511
|
+
goldstein: createGoldsteinNode({
|
|
5512
|
+
await: true,
|
|
5513
|
+
callee: expression.argument.callee,
|
|
5514
|
+
arguments: expression.argument.arguments
|
|
5515
|
+
}),
|
|
5506
5516
|
argument: {
|
|
5507
5517
|
type: "CallExpression",
|
|
5508
5518
|
callee: {
|
|
@@ -5546,6 +5556,18 @@ function keywordTry(Parser3) {
|
|
|
5546
5556
|
}
|
|
5547
5557
|
};
|
|
5548
5558
|
}
|
|
5559
|
+
function createGoldsteinNode(args) {
|
|
5560
|
+
return {
|
|
5561
|
+
type: "TryStatement",
|
|
5562
|
+
expression: true,
|
|
5563
|
+
await: args.await,
|
|
5564
|
+
argument: {
|
|
5565
|
+
type: "CallExpression",
|
|
5566
|
+
callee: args.callee,
|
|
5567
|
+
arguments: args.arguments
|
|
5568
|
+
}
|
|
5569
|
+
};
|
|
5570
|
+
}
|
|
5549
5571
|
|
|
5550
5572
|
// packages/keyword-should/index.js
|
|
5551
5573
|
var import_putout2 = require("putout");
|
|
@@ -5779,6 +5801,7 @@ function fn2(Parser3) {
|
|
|
5779
5801
|
this.raise(this.start, `Use both parens ('(', ')') or none`);
|
|
5780
5802
|
node.consequent = this.parseStatement("if");
|
|
5781
5803
|
node.alternate = this.eat(types$1._else) ? this.parseStatement("if") : null;
|
|
5804
|
+
node.goldsteinIf = true;
|
|
5782
5805
|
return this.finishNode(node, "IfStatement");
|
|
5783
5806
|
}
|
|
5784
5807
|
};
|
package/package.json
CHANGED
|
@@ -6,7 +6,6 @@ export default function fn(Parser) {
|
|
|
6
6
|
this.next();
|
|
7
7
|
|
|
8
8
|
const isParenL = this.eat(tt.parenL);
|
|
9
|
-
|
|
10
9
|
node.test = this.parseExpression();
|
|
11
10
|
const isParenR = this.eat(tt.parenR);
|
|
12
11
|
|
|
@@ -19,8 +18,9 @@ export default function fn(Parser) {
|
|
|
19
18
|
node.consequent = this.parseStatement('if');
|
|
20
19
|
node.alternate = this.eat(tt._else) ? this.parseStatement('if') : null;
|
|
21
20
|
|
|
21
|
+
node.goldsteinIf = true;
|
|
22
|
+
|
|
22
23
|
return this.finishNode(node, 'IfStatement');
|
|
23
24
|
}
|
|
24
25
|
};
|
|
25
26
|
}
|
|
26
|
-
|
|
@@ -43,10 +43,20 @@ export default function keywordTry(Parser) {
|
|
|
43
43
|
expression.callee,
|
|
44
44
|
...expression.arguments,
|
|
45
45
|
],
|
|
46
|
+
goldstein: createGoldsteinNode({
|
|
47
|
+
await: false,
|
|
48
|
+
callee: expression.callee,
|
|
49
|
+
arguments: expression.arguments,
|
|
50
|
+
}),
|
|
46
51
|
};
|
|
47
52
|
else if (isAwaitExpression(expression))
|
|
48
53
|
node.expression = {
|
|
49
54
|
type: 'AwaitExpression',
|
|
55
|
+
goldstein: createGoldsteinNode({
|
|
56
|
+
await: true,
|
|
57
|
+
callee: expression.argument.callee,
|
|
58
|
+
arguments: expression.argument.arguments,
|
|
59
|
+
}),
|
|
50
60
|
argument: {
|
|
51
61
|
type: 'CallExpression',
|
|
52
62
|
callee: {
|
|
@@ -100,3 +110,15 @@ export default function keywordTry(Parser) {
|
|
|
100
110
|
};
|
|
101
111
|
}
|
|
102
112
|
|
|
113
|
+
function createGoldsteinNode(args) {
|
|
114
|
+
return {
|
|
115
|
+
type: 'TryStatement',
|
|
116
|
+
expression: true,
|
|
117
|
+
await: args.await,
|
|
118
|
+
argument: {
|
|
119
|
+
type: 'CallExpression',
|
|
120
|
+
callee: args.callee,
|
|
121
|
+
arguments: args.arguments,
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {print as printJS} from '@putout/printer';
|
|
2
|
+
|
|
3
|
+
import {fixEmpty} from '../goldstein/index.js';
|
|
4
|
+
import {AwaitExpression} from './visitors/await-expression.js';
|
|
5
|
+
import {CallExpression} from './visitors/call-expression.js';
|
|
6
|
+
import {TryStatement} from './visitors/try-statement.js';
|
|
7
|
+
import {IfStatement} from './visitors/if-statement.js';
|
|
8
|
+
|
|
9
|
+
export const print = (ast) => {
|
|
10
|
+
const code = printJS(ast, {
|
|
11
|
+
visitors: {
|
|
12
|
+
CallExpression,
|
|
13
|
+
TryStatement,
|
|
14
|
+
AwaitExpression,
|
|
15
|
+
IfStatement,
|
|
16
|
+
},
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
return fixEmpty(code);
|
|
20
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {visitors as v} from '@putout/printer';
|
|
2
|
+
|
|
3
|
+
export const IfStatement = (path, printer, semantics) => {
|
|
4
|
+
const {print} = printer;
|
|
5
|
+
const {node} = path;
|
|
6
|
+
|
|
7
|
+
if (!node.goldsteinIf)
|
|
8
|
+
return v.IfStatement(path, printer, semantics);
|
|
9
|
+
|
|
10
|
+
print('if ');
|
|
11
|
+
print('__test');
|
|
12
|
+
print(' ');
|
|
13
|
+
print('__consequent');
|
|
14
|
+
|
|
15
|
+
if (node.alternate) {
|
|
16
|
+
print(' else ');
|
|
17
|
+
print('__alternate');
|
|
18
|
+
}
|
|
19
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {visitors as v} from '@putout/printer';
|
|
2
|
+
|
|
3
|
+
export const TryStatement = (path, printer, semantics) => {
|
|
4
|
+
const {maybe, print} = printer;
|
|
5
|
+
const {node} = path;
|
|
6
|
+
|
|
7
|
+
if (!node.expression)
|
|
8
|
+
return v.TryStatement(path, printer, semantics);
|
|
9
|
+
|
|
10
|
+
print('try ');
|
|
11
|
+
maybe.print(node.await, 'await ');
|
|
12
|
+
print('__argument');
|
|
13
|
+
};
|