diff --git a/lib/ast.js b/lib/ast.js index 8faadae..f71b96e 100644 --- a/lib/ast.js +++ b/lib/ast.js @@ -49,6 +49,30 @@ return false; } + function isExpressionES6(node) { + if (node == null) { return false; } + if (isExpression(node)) { return true; } + switch (node.type) { + case 'ArrowFunctionExpression': + case 'ClassExpression': + case 'TaggedTemplateExpression': + case 'YieldExpression': + return true; + } + return false; + } + + function isPatternES6(node) { + if (node == null) { return false; } + switch (node.type) { + case 'AssignmentPattern': + case 'ArrayPattern': + case 'ObjectPattern': + return true; + } + return false; + } + function isIterationStatement(node) { if (node == null) { return false; } switch (node.type) { @@ -87,6 +111,16 @@ return false; } + function isStatementES6(node) { + if (node == null) { return false; } + if (isStatement(node)) { return true; } + switch (node.type) { + case 'ForOfStatement': + return true; + } + return false; + } + function isSourceElement(node) { return isStatement(node) || node != null && node.type === 'FunctionDeclaration'; } @@ -133,7 +167,10 @@ module.exports = { isExpression: isExpression, + isExpressionES6: isExpressionES6, + isPatternES6: isPatternES6, isStatement: isStatement, + isStatementES6: isStatementES6, isIterationStatement: isIterationStatement, isSourceElement: isSourceElement, isProblematicIfStatement: isProblematicIfStatement,