UNPKG

2.37 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 url: "https://eslint.org/docs/rules/no-spaced-func"
21 },
22
23 deprecated: true,
24
25 fixable: "whitespace",
26 schema: []
27 },
28
29 create(context) {
30
31 const sourceCode = context.getSourceCode();
32
33 /**
34 * Check if open space is present in a function name
35 * @param {ASTNode} node node to evaluate
36 * @returns {void}
37 * @private
38 */
39 function detectOpenSpaces(node) {
40 const lastCalleeToken = sourceCode.getLastToken(node.callee);
41 let prevToken = lastCalleeToken,
42 parenToken = sourceCode.getTokenAfter(lastCalleeToken);
43
44 // advances to an open parenthesis.
45 while (
46 parenToken &&
47 parenToken.range[1] < node.range[1] &&
48 parenToken.value !== "("
49 ) {
50 prevToken = parenToken;
51 parenToken = sourceCode.getTokenAfter(parenToken);
52 }
53
54 // look for a space between the callee and the open paren
55 if (parenToken &&
56 parenToken.range[1] < node.range[1] &&
57 sourceCode.isSpaceBetweenTokens(prevToken, parenToken)
58 ) {
59 context.report({
60 node,
61 loc: lastCalleeToken.loc.start,
62 message: "Unexpected space between function name and paren.",
63 fix(fixer) {
64 return fixer.removeRange([prevToken.range[1], parenToken.range[0]]);
65 }
66 });
67 }
68 }
69
70 return {
71 CallExpression: detectOpenSpaces,
72 NewExpression: detectOpenSpaces
73 };
74
75 }
76};