From e744dc721f74cd8bcf2851736ef4666968890568 Mon Sep 17 00:00:00 2001 From: Aliaksei Chapyzhenka Date: Fri, 21 Aug 2015 17:08:02 -0700 Subject: [PATCH 1/2] added isExpressionES6 & isStatementES6 --- lib/ast.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/lib/ast.js b/lib/ast.js index 8faadae..3b62811 100644 --- a/lib/ast.js +++ b/lib/ast.js @@ -49,6 +49,23 @@ 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': + // patterns may not belong here? + case 'AssignmentPattern': + case 'ArrayPattern': + case 'ObjectPattern': + return true; + } + return false; + } + function isIterationStatement(node) { if (node == null) { return false; } switch (node.type) { @@ -87,6 +104,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 +160,9 @@ module.exports = { isExpression: isExpression, + isExpressionES6: isExpressionES6, isStatement: isStatement, + isStatementES6: isStatementES6, isIterationStatement: isIterationStatement, isSourceElement: isSourceElement, isProblematicIfStatement: isProblematicIfStatement, From de114fb7e4574215ce2f273113b4a95aef75ae2c Mon Sep 17 00:00:00 2001 From: Aliaksei Chapyzhenka Date: Sat, 22 Aug 2015 11:48:09 -0700 Subject: [PATCH 2/2] added isPatternES6 API --- lib/ast.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/ast.js b/lib/ast.js index 3b62811..f71b96e 100644 --- a/lib/ast.js +++ b/lib/ast.js @@ -57,7 +57,14 @@ case 'ClassExpression': case 'TaggedTemplateExpression': case 'YieldExpression': - // patterns may not belong here? + return true; + } + return false; + } + + function isPatternES6(node) { + if (node == null) { return false; } + switch (node.type) { case 'AssignmentPattern': case 'ArrayPattern': case 'ObjectPattern': @@ -161,6 +168,7 @@ module.exports = { isExpression: isExpression, isExpressionES6: isExpressionES6, + isPatternES6: isPatternES6, isStatement: isStatement, isStatementES6: isStatementES6, isIterationStatement: isIterationStatement,