@Override public void visitFunctionExpression(FunctionExpressionTree tree) { checkFunction(tree, tree.functionKeyword()); super.visitFunctionExpression(tree); }
private static SyntaxToken functionToken(FunctionTree functionTree) { SyntaxToken token; if (functionTree.is(Kind.FUNCTION_DECLARATION, Kind.GENERATOR_DECLARATION)) { token = ((FunctionDeclarationTree) functionTree).name().identifierToken(); } else if (functionTree.is(Kind.FUNCTION_EXPRESSION, Kind.GENERATOR_FUNCTION_EXPRESSION)) { token = ((FunctionExpressionTree) functionTree).functionKeyword(); } else { token = ((ArrowFunctionTree) functionTree).doubleArrowToken(); } return token; }
@Override public void visitNewExpression(NewExpressionTree tree) { ExpressionTree expression = tree.expression(); if (!expression.types().isEmpty() && !isConstructor(expression.types())) { Tree primaryLocationTree = expression; String expressionStr = CheckUtils.asString(expression); ExpressionTree unwrapped = CheckUtils.removeParenthesis(expression); if (unwrapped.is(Tree.Kind.FUNCTION_EXPRESSION)) { primaryLocationTree = ((FunctionExpressionTree) unwrapped).functionKeyword(); expressionStr = "this function"; } addIssue(primaryLocationTree, String.format(MESSAGE, expressionStr)) .secondary(tree.newKeyword()); } super.visitNewExpression(tree); }
private static IssueLocation getPrimaryLocation(Tree tree) { Tree firstTree; Tree lastTree; if (tree.is(Kind.GENERATOR_DECLARATION)) { FunctionDeclarationTree functionDeclarationTree = (FunctionDeclarationTree) tree; firstTree = functionDeclarationTree.functionKeyword(); lastTree = functionDeclarationTree.name(); } else if (tree.is(Kind.GENERATOR_METHOD)) { MethodDeclarationTree methodDeclarationTree = (MethodDeclarationTree) tree; firstTree = methodDeclarationTree.starToken(); lastTree = methodDeclarationTree.name(); } else { FunctionExpressionTree functionExpressionTree = (FunctionExpressionTree) tree; firstTree = functionExpressionTree.functionKeyword(); if (functionExpressionTree.name() != null) { lastTree = functionExpressionTree.name(); } else { lastTree = functionExpressionTree.starToken(); } } return new IssueLocation(firstTree, lastTree, MESSAGE); } }