UNPKG

2.31 kBJavaScriptView Raw
1/**
2 * @fileoverview Rule to check that spaced function application
3 * @author Matt DuVall <http://www.mattduvall.com>
4 * @deprecated in ESLint v3.3.0
5 */
6
7"use strict";
8
9//------------------------------------------------------------------------------
10// Rule Definition
11//------------------------------------------------------------------------------
12
13module.exports = {
14 meta: {
15 docs: {
16 description: "disallow spacing between function identifiers and their applications (deprecated)",
17 category: "Stylistic Issues",
18 recommended: false,
19 replacedBy: ["func-call-spacing"]
20 },
21
22 deprecated: true,
23
24 fixable: "whitespace",
25 schema: []
26 },
27
28 create(context) {
29
30 const sourceCode = context.getSourceCode();
31
32 /**
33 * Check if open space is present in a function name
34 * @param {ASTNode} node node to evaluate
35 * @returns {void}
36 * @private
37 */
38 function detectOpenSpaces(node) {
39 const lastCalleeToken = sourceCode.getLastToken(node.callee);
40 let prevToken = lastCalleeToken,
41 parenToken = sourceCode.getTokenAfter(lastCalleeToken);
42
43 // advances to an open parenthesis.
44 while (
45 parenToken &&
46 parenToken.range[1] < node.range[1] &&
47 parenToken.value !== "("
48 ) {
49 prevToken = parenToken;
50 parenToken = sourceCode.getTokenAfter(parenToken);
51 }
52
53 // look for a space between the callee and the open paren
54 if (parenToken &&
55 parenToken.range[1] < node.range[1] &&
56 sourceCode.isSpaceBetweenTokens(prevToken, parenToken)
57 ) {
58 context.report({
59 node,
60 loc: lastCalleeToken.loc.start,
61 message: "Unexpected space between function name and paren.",
62 fix(fixer) {
63 return fixer.removeRange([prevToken.range[1], parenToken.range[0]]);
64 }
65 });
66 }
67 }
68
69 return {
70 CallExpression: detectOpenSpaces,
71 NewExpression: detectOpenSpaces
72 };
73
74 }
75};