Skip to content

Commit

Permalink
Update LKG
Browse files Browse the repository at this point in the history
  • Loading branch information
DanielRosenwasser committed Oct 23, 2020
1 parent 2c0e966 commit 4f78376
Show file tree
Hide file tree
Showing 6 changed files with 318 additions and 174 deletions.
47 changes: 33 additions & 14 deletions lib/tsc.js
Expand Up @@ -73480,6 +73480,8 @@ var ts;
switch (node.kind) {
case 213:
return visitBinaryExpression(node);
case 332:
return visitCommaListExpression(node);
case 214:
return visitConditionalExpression(node);
case 216:
Expand Down Expand Up @@ -73671,20 +73673,6 @@ var ts;
}
return ts.visitEachChild(node, visitor, context);
}
function visitLogicalBinaryExpression(node) {
var resultLabel = defineLabel();
var resultLocal = declareLocal();
emitAssignment(resultLocal, ts.visitNode(node.left, visitor, ts.isExpression), node.left);
if (node.operatorToken.kind === 55) {
emitBreakWhenFalse(resultLabel, resultLocal, node.left);
}
else {
emitBreakWhenTrue(resultLabel, resultLocal, node.left);
}
emitAssignment(resultLocal, ts.visitNode(node.right, visitor, ts.isExpression), node.right);
markLabel(resultLabel);
return resultLocal;
}
function visitCommaExpression(node) {
var pendingExpressions = [];
visit(node.left);
Expand All @@ -73704,6 +73692,37 @@ var ts;
}
}
}
function visitCommaListExpression(node) {
var pendingExpressions = [];
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
var elem = _a[_i];
if (ts.isBinaryExpression(elem) && elem.operatorToken.kind === 27) {
pendingExpressions.push(visitCommaExpression(elem));
}
else {
if (containsYield(elem) && pendingExpressions.length > 0) {
emitWorker(1, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(elem, visitor, ts.isExpression));
}
}
return factory.inlineExpressions(pendingExpressions);
}
function visitLogicalBinaryExpression(node) {
var resultLabel = defineLabel();
var resultLocal = declareLocal();
emitAssignment(resultLocal, ts.visitNode(node.left, visitor, ts.isExpression), node.left);
if (node.operatorToken.kind === 55) {
emitBreakWhenFalse(resultLabel, resultLocal, node.left);
}
else {
emitBreakWhenTrue(resultLabel, resultLocal, node.left);
}
emitAssignment(resultLocal, ts.visitNode(node.right, visitor, ts.isExpression), node.right);
markLabel(resultLabel);
return resultLocal;
}
function visitConditionalExpression(node) {
if (containsYield(node.whenTrue) || containsYield(node.whenFalse)) {
var whenFalseLabel = defineLabel();
Expand Down
89 changes: 57 additions & 32 deletions lib/tsserver.js
Expand Up @@ -89418,6 +89418,8 @@ var ts;
switch (node.kind) {
case 213 /* BinaryExpression */:
return visitBinaryExpression(node);
case 332 /* CommaListExpression */:
return visitCommaListExpression(node);
case 214 /* ConditionalExpression */:
return visitConditionalExpression(node);
case 216 /* YieldExpression */:
Expand Down Expand Up @@ -89712,6 +89714,61 @@ var ts;
}
return ts.visitEachChild(node, visitor, context);
}
/**
* Visits a comma expression containing `yield`.
*
* @param node The node to visit.
*/
function visitCommaExpression(node) {
// [source]
// x = a(), yield, b();
//
// [intermediate]
// a();
// .yield resumeLabel
// .mark resumeLabel
// x = %sent%, b();
var pendingExpressions = [];
visit(node.left);
visit(node.right);
return factory.inlineExpressions(pendingExpressions);
function visit(node) {
if (ts.isBinaryExpression(node) && node.operatorToken.kind === 27 /* CommaToken */) {
visit(node.left);
visit(node.right);
}
else {
if (containsYield(node) && pendingExpressions.length > 0) {
emitWorker(1 /* Statement */, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(node, visitor, ts.isExpression));
}
}
}
/**
* Visits a comma-list expression.
*
* @param node The node to visit.
*/
function visitCommaListExpression(node) {
// flattened version of `visitCommaExpression`
var pendingExpressions = [];
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
var elem = _a[_i];
if (ts.isBinaryExpression(elem) && elem.operatorToken.kind === 27 /* CommaToken */) {
pendingExpressions.push(visitCommaExpression(elem));
}
else {
if (containsYield(elem) && pendingExpressions.length > 0) {
emitWorker(1 /* Statement */, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(elem, visitor, ts.isExpression));
}
}
return factory.inlineExpressions(pendingExpressions);
}
/**
* Visits a logical binary expression containing `yield`.
*
Expand Down Expand Up @@ -89761,38 +89818,6 @@ var ts;
markLabel(resultLabel);
return resultLocal;
}
/**
* Visits a comma expression containing `yield`.
*
* @param node The node to visit.
*/
function visitCommaExpression(node) {
// [source]
// x = a(), yield, b();
//
// [intermediate]
// a();
// .yield resumeLabel
// .mark resumeLabel
// x = %sent%, b();
var pendingExpressions = [];
visit(node.left);
visit(node.right);
return factory.inlineExpressions(pendingExpressions);
function visit(node) {
if (ts.isBinaryExpression(node) && node.operatorToken.kind === 27 /* CommaToken */) {
visit(node.left);
visit(node.right);
}
else {
if (containsYield(node) && pendingExpressions.length > 0) {
emitWorker(1 /* Statement */, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(node, visitor, ts.isExpression));
}
}
}
/**
* Visits a conditional expression containing `yield`.
*
Expand Down
89 changes: 57 additions & 32 deletions lib/tsserverlibrary.js
Expand Up @@ -89612,6 +89612,8 @@ var ts;
switch (node.kind) {
case 213 /* BinaryExpression */:
return visitBinaryExpression(node);
case 332 /* CommaListExpression */:
return visitCommaListExpression(node);
case 214 /* ConditionalExpression */:
return visitConditionalExpression(node);
case 216 /* YieldExpression */:
Expand Down Expand Up @@ -89906,6 +89908,61 @@ var ts;
}
return ts.visitEachChild(node, visitor, context);
}
/**
* Visits a comma expression containing `yield`.
*
* @param node The node to visit.
*/
function visitCommaExpression(node) {
// [source]
// x = a(), yield, b();
//
// [intermediate]
// a();
// .yield resumeLabel
// .mark resumeLabel
// x = %sent%, b();
var pendingExpressions = [];
visit(node.left);
visit(node.right);
return factory.inlineExpressions(pendingExpressions);
function visit(node) {
if (ts.isBinaryExpression(node) && node.operatorToken.kind === 27 /* CommaToken */) {
visit(node.left);
visit(node.right);
}
else {
if (containsYield(node) && pendingExpressions.length > 0) {
emitWorker(1 /* Statement */, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(node, visitor, ts.isExpression));
}
}
}
/**
* Visits a comma-list expression.
*
* @param node The node to visit.
*/
function visitCommaListExpression(node) {
// flattened version of `visitCommaExpression`
var pendingExpressions = [];
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
var elem = _a[_i];
if (ts.isBinaryExpression(elem) && elem.operatorToken.kind === 27 /* CommaToken */) {
pendingExpressions.push(visitCommaExpression(elem));
}
else {
if (containsYield(elem) && pendingExpressions.length > 0) {
emitWorker(1 /* Statement */, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(elem, visitor, ts.isExpression));
}
}
return factory.inlineExpressions(pendingExpressions);
}
/**
* Visits a logical binary expression containing `yield`.
*
Expand Down Expand Up @@ -89955,38 +90012,6 @@ var ts;
markLabel(resultLabel);
return resultLocal;
}
/**
* Visits a comma expression containing `yield`.
*
* @param node The node to visit.
*/
function visitCommaExpression(node) {
// [source]
// x = a(), yield, b();
//
// [intermediate]
// a();
// .yield resumeLabel
// .mark resumeLabel
// x = %sent%, b();
var pendingExpressions = [];
visit(node.left);
visit(node.right);
return factory.inlineExpressions(pendingExpressions);
function visit(node) {
if (ts.isBinaryExpression(node) && node.operatorToken.kind === 27 /* CommaToken */) {
visit(node.left);
visit(node.right);
}
else {
if (containsYield(node) && pendingExpressions.length > 0) {
emitWorker(1 /* Statement */, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(node, visitor, ts.isExpression));
}
}
}
/**
* Visits a conditional expression containing `yield`.
*
Expand Down
89 changes: 57 additions & 32 deletions lib/typescript.js
Expand Up @@ -89612,6 +89612,8 @@ var ts;
switch (node.kind) {
case 213 /* BinaryExpression */:
return visitBinaryExpression(node);
case 332 /* CommaListExpression */:
return visitCommaListExpression(node);
case 214 /* ConditionalExpression */:
return visitConditionalExpression(node);
case 216 /* YieldExpression */:
Expand Down Expand Up @@ -89906,6 +89908,61 @@ var ts;
}
return ts.visitEachChild(node, visitor, context);
}
/**
* Visits a comma expression containing `yield`.
*
* @param node The node to visit.
*/
function visitCommaExpression(node) {
// [source]
// x = a(), yield, b();
//
// [intermediate]
// a();
// .yield resumeLabel
// .mark resumeLabel
// x = %sent%, b();
var pendingExpressions = [];
visit(node.left);
visit(node.right);
return factory.inlineExpressions(pendingExpressions);
function visit(node) {
if (ts.isBinaryExpression(node) && node.operatorToken.kind === 27 /* CommaToken */) {
visit(node.left);
visit(node.right);
}
else {
if (containsYield(node) && pendingExpressions.length > 0) {
emitWorker(1 /* Statement */, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(node, visitor, ts.isExpression));
}
}
}
/**
* Visits a comma-list expression.
*
* @param node The node to visit.
*/
function visitCommaListExpression(node) {
// flattened version of `visitCommaExpression`
var pendingExpressions = [];
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
var elem = _a[_i];
if (ts.isBinaryExpression(elem) && elem.operatorToken.kind === 27 /* CommaToken */) {
pendingExpressions.push(visitCommaExpression(elem));
}
else {
if (containsYield(elem) && pendingExpressions.length > 0) {
emitWorker(1 /* Statement */, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(elem, visitor, ts.isExpression));
}
}
return factory.inlineExpressions(pendingExpressions);
}
/**
* Visits a logical binary expression containing `yield`.
*
Expand Down Expand Up @@ -89955,38 +90012,6 @@ var ts;
markLabel(resultLabel);
return resultLocal;
}
/**
* Visits a comma expression containing `yield`.
*
* @param node The node to visit.
*/
function visitCommaExpression(node) {
// [source]
// x = a(), yield, b();
//
// [intermediate]
// a();
// .yield resumeLabel
// .mark resumeLabel
// x = %sent%, b();
var pendingExpressions = [];
visit(node.left);
visit(node.right);
return factory.inlineExpressions(pendingExpressions);
function visit(node) {
if (ts.isBinaryExpression(node) && node.operatorToken.kind === 27 /* CommaToken */) {
visit(node.left);
visit(node.right);
}
else {
if (containsYield(node) && pendingExpressions.length > 0) {
emitWorker(1 /* Statement */, [factory.createExpressionStatement(factory.inlineExpressions(pendingExpressions))]);
pendingExpressions = [];
}
pendingExpressions.push(ts.visitNode(node, visitor, ts.isExpression));
}
}
}
/**
* Visits a conditional expression containing `yield`.
*
Expand Down

0 comments on commit 4f78376

Please sign in to comment.