TypeScript Version: 2.6.2
Code
import * as ts from 'typescript'
const testTypeOf = ts.createTypeOf(ts.createLiteral(""))
const testAwait = ts.createAwait(ts.createLiteral(""))
console.log(testTypeOf.kind, testAwait.kind) // 189, 191
console.log(ts.isTypeOfExpression(testTypeOf)) // Prints false, should be true
console.log(ts.isTypeOfExpression(testAwait)) // Prints true, should be false
Expected behavior:
ts.isTypeofExpression should return true (only) for TypeOfExpression nodes.
Actual behavior:
It returns true for AwaitExpression nodes instead.
Reason
The nodes both get created correctly (TypeOfExpression has kind 189 like it should), but the generated code for isTypeOfExpression uses the wrong number for kind: (from tsc.ts, starting on line 9132)
function isTypeOfExpression(node) {
return node.kind === 191;
}
ts.isTypeOfExpression = isTypeOfExpression;
function isVoidExpression(node) {
return node.kind === 190;
}
ts.isVoidExpression = isVoidExpression;
function isAwaitExpression(node) {
return node.kind === 191;
}
ts.isAwaitExpression = isAwaitExpression;
Note that some code uses the correct kind:
function createTypeOf(expression) {
var node = createSynthesizedNode(189);
node.expression = ts.parenthesizePrefixOperand(expression);
return node;
}
Note that this issue also exists on master, even though the numbers for SyntaxKind enum values have changed.
I couldn't find where this code gets generated, so I haven't been able to investigate further.
TypeScript Version: 2.6.2
Code
Expected behavior:
ts.isTypeofExpressionshould returntrue(only) forTypeOfExpressionnodes.Actual behavior:
It returns
trueforAwaitExpressionnodes instead.Reason
The nodes both get created correctly (
TypeOfExpressionhas kind189like it should), but the generated code forisTypeOfExpressionuses the wrong number forkind: (fromtsc.ts, starting on line 9132)Note that some code uses the correct
kind:Note that this issue also exists on master, even though the numbers for
SyntaxKindenum values have changed.I couldn't find where this code gets generated, so I haven't been able to investigate further.