2014-09-30 14:14:22 +00:00
|
|
|
import {INSTANCEOF} from 'traceur/src/syntax/TokenType';
|
2014-10-01 14:29:45 +00:00
|
|
|
import {ParseTreeTransformer} from './ParseTreeTransformer';
|
2014-10-09 21:04:25 +00:00
|
|
|
import {
|
|
|
|
|
createBinaryExpression,
|
|
|
|
|
createOperatorToken
|
|
|
|
|
} from 'traceur/src/codegeneration/ParseTreeFactory';
|
2014-09-30 14:14:22 +00:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Transforms `a instanceof b` to `a is b`,
|
|
|
|
|
*/
|
|
|
|
|
export class InstanceOfTransformer extends ParseTreeTransformer {
|
|
|
|
|
/**
|
|
|
|
|
* @param {BinaryExpression} tree
|
|
|
|
|
* @return {ParseTree}
|
|
|
|
|
*/
|
|
|
|
|
transformBinaryExpression(tree) {
|
2014-10-17 11:08:57 +00:00
|
|
|
tree = super.transformBinaryExpression(tree);
|
2014-09-30 14:14:22 +00:00
|
|
|
|
2014-10-09 21:04:25 +00:00
|
|
|
if (tree.operator.type === INSTANCEOF) {
|
|
|
|
|
return createBinaryExpression(tree.left, createOperatorToken('is'), tree.right);
|
2014-09-30 14:14:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return tree;
|
|
|
|
|
}
|
2014-10-09 21:04:25 +00:00
|
|
|
}
|