summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Rennie <Michael_Rennie@ca.ibm.com>2016-11-29 11:27:13 -0500
committerMike Rennie <Michael_Rennie@ca.ibm.com>2016-11-29 11:29:57 -0500
commit3e55216911241c49b0a9ab4c47194f3d0302d50e (patch)
tree55fff55ab941cff2bde285b2d18679259e71d73f
parent9baee90bbefa6982aceadab8a283b90647860e0d (diff)
downloadorg.eclipse.orion.client-3e55216911241c49b0a9ab4c47194f3d0302d50e.zip
org.eclipse.orion.client-3e55216911241c49b0a9ab4c47194f3d0302d50e.tar.gz
org.eclipse.orion.client-3e55216911241c49b0a9ab4c47194f3d0302d50e.tar.bz2
Bug 508392 - [quickfix] Use isNaN fix breaks code logic
-rw-r--r--bundles/org.eclipse.orion.client.javascript/web/javascript/ternPlugins/quickfixes.js2365
-rw-r--r--bundles/org.eclipse.orion.client.javascript/web/js-tests/javascript/quickfixTests.js1001
2 files changed, 1731 insertions, 1635 deletions
diff --git a/bundles/org.eclipse.orion.client.javascript/web/javascript/ternPlugins/quickfixes.js b/bundles/org.eclipse.orion.client.javascript/web/javascript/ternPlugins/quickfixes.js
index ee927d9..116d760 100644
--- a/bundles/org.eclipse.orion.client.javascript/web/javascript/ternPlugins/quickfixes.js
+++ b/bundles/org.eclipse.orion.client.javascript/web/javascript/ternPlugins/quickfixes.js
@@ -1,10 +1,10 @@
/*******************************************************************************
* @license
* Copyright (c) 2016 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License v1.0
- * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
- * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0
+ * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
+ * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
*
* Contributors:
* IBM Corporation - initial API and implementation
@@ -17,10 +17,10 @@ define([
tern.registerPlugin("quickfixes", /* @callback */ function(server, options) { //$NON-NLS-1$
return {
- //no pass hooks needed
- };
+ //no pass hooks needed
+ };
});
-
+
tern.defineQueryType("fixes", { //$NON-NLS-1$
takesFile: true,
/**
@@ -30,7 +30,7 @@ define([
return computeFixes(query, file);
}
});
-
+
var availableFixes = {
/**
* @description Fix for 'radix' problem
@@ -149,7 +149,7 @@ define([
if(parent.arguments.length > 0) {
var str = parent.arguments[0];
if(str.type === 'Literal') {
- s = String(str.value);
+ s = String(str.value);
} else if(str.type === 'Identifier') {
if(str.name === 'undefined') {
s = String(undefined);
@@ -202,7 +202,7 @@ define([
} else {
b = Boolean(arg.name);
}
- } else if(arg.type === 'UnaryExpression' && arg.operator === '-' &&
+ } else if(arg.type === 'UnaryExpression' && arg.operator === '-' &&
arg.argument.type === 'Literal' && typeof arg.argument.value === 'number') {
b = false;
}
@@ -226,7 +226,7 @@ define([
var tok = Finder.findToken(annot.end, file.ast.tokens);
if(tok && tok.type === 'Punctuator' && tok.value === ';') {
end = tok.range[1];
- }
+ }
return {text: '', start: annot.start, end: end};
});
},
@@ -314,13 +314,13 @@ define([
return {text: '()', start: node.range[1], end: node.range[1]}; //$NON-NLS-1$
}
},
- /**
+ /**
* @description fix for the missing-nls rule
- * @function
+ * @function
* @callback
*/
"missing-nls": function(annotation, annotations, file){
- return applySingleFixToAll(annotations, function(annot) {
+ return applySingleFixToAll(annotations, function(annot) {
if(annot.data && typeof annot.data.indexOnLine === 'number') {
// Insert the correct non nls comment
var end = getLineEnd(file.ast.sourceFile.text, annot.end);
@@ -330,9 +330,9 @@ define([
}
});
},
- /**
+ /**
* @description fix for the 'no-comma-dangle' rule
- * @function
+ * @function
* @callback
*/
"no-comma-dangle": function(annotation, annotations, file) {
@@ -344,9 +344,9 @@ define([
return {text: '', start: annot.start, end: end};
});
},
- /**
+ /**
* @description fix for the 'no-comma-dangle' rule
- * @function
+ * @function
* @callback
*/
"no-empty-block": function(annotation, annotations, file) {
@@ -357,9 +357,9 @@ define([
fix += computePostfix(file.ast.sourceFile.text, annotation);
return {text: fix, start: annotation.start+1, end: annotation.start+1};
},
- /**
+ /**
* @description fix for the 'no-extra-parens' rule
- * @function
+ * @function
* @callback
*/
"no-extra-parens": function(annotation, annotations, file) {
@@ -395,9 +395,9 @@ define([
}
});
},
- /**
+ /**
* @description fix for the 'no-extra-semi' rule
- * @function
+ * @function
* @callback
*/
"no-extra-semi": function(annotation, annotations, file) {
@@ -405,9 +405,9 @@ define([
return {text: '', start: currentAnnotation.start, end: currentAnnotation.end};
});
},
- /**
+ /**
* @description fix for the 'no-fallthrough' rule
- * @function
+ * @function
* @callback
*/
"no-fallthrough": function(annotation, annotations, file) {
@@ -417,9 +417,9 @@ define([
fix += computePostfix(file.ast.sourceFile.text, annotation, indent);
return {text: fix, start: annotation.start, end: annotation.start};
},
- /**
+ /**
* @description fix for the 'no-fallthrough-break' rule
- * @function
+ * @function
* @callback
*/
"no-fallthrough-break": function(annotation, annotations, file) {
@@ -429,30 +429,30 @@ define([
fix += computePostfix(file.ast.sourceFile.text, annotation, indent);
return {text: fix, start: annotation.start, end: annotation.start};
},
- /**
+ /**
* @description fix for the 'no-new-array' rule
- * @function
+ * @function
* @callback
*/
"no-new-array": function(annotation, annotations, file) {
- var node = Finder.findNode(annotation.start, file.ast, {parents:true});
- if(node && node.parents) {
- var p = node.parents[node.parents.length-1];
- if(p.type === 'CallExpression' || p.type === 'NewExpression') {
- var fix = '';
- if(p.arguments.length > 0) {
- var start = p.arguments[0].range[0], end = p.arguments[p.arguments.length-1].range[1];
- fix += '[' + file.ast.sourceFile.text.substring(start, end) + ']';
- } else {
- fix += '[]'; //$NON-NLS-1$
- }
- return {text: fix, start: p.start, end: p.end};
- }
- }
+ var node = Finder.findNode(annotation.start, file.ast, {parents:true});
+ if(node && node.parents) {
+ var p = node.parents[node.parents.length-1];
+ if(p.type === 'CallExpression' || p.type === 'NewExpression') {
+ var fix = '';
+ if(p.arguments.length > 0) {
+ var start = p.arguments[0].range[0], end = p.arguments[p.arguments.length-1].range[1];
+ fix += '[' + file.ast.sourceFile.text.substring(start, end) + ']';
+ } else {
+ fix += '[]'; //$NON-NLS-1$
+ }
+ return {text: fix, start: p.start, end: p.end};
+ }
+ }
},
- /**
+ /**
* @description fix for the 'no-reserved-keys' rule
- * @function
+ * @function
* @callback
*/
"no-reserved-keys": function(annotation, annotations, file) {
@@ -475,9 +475,9 @@ define([
}
});
},
- /**
+ /**
* @description fix for the 'no-throw-literal' rule
- * @function
+ * @function
* @callback
*/
"no-throw-literal": function(annotation, annotations, file) {
@@ -485,9 +485,9 @@ define([
var source = node.raw || file.ast.sourceFile.text.slice(node.range[0], node.range[1]);
return {text: 'new Error(' + source + ')', start: annotation.start, end: annotation.end}; //$NON-NLS-1$
},
- /**
+ /**
* @description fix for the 'no-undef-defined' rule
- * @function
+ * @function
* @callback
*/
"no-undef-defined": function(annotation, annotations, file) {
@@ -497,7 +497,7 @@ define([
function assignLike(node) {
if(node && node.parents && node.parents.length > 0 && node.type === 'Identifier') {
var parent = node.parents.pop();
- return parent && (parent.type === 'AssignmentExpression' || parent.type === 'UpdateExpression');
+ return parent && (parent.type === 'AssignmentExpression' || parent.type === 'UpdateExpression');
}
return false;
}
@@ -516,15 +516,15 @@ define([
return {text: updateDirective(comment.value, 'globals', insert), start: start, end: start+comment.value.length}; //$NON-NLS-1$
}
var point = getDirectiveInsertionPoint(file.ast);
- var linestart = getLineStart(file.ast.sourceFile.text, point);
- var indent = computeIndent(file.ast.sourceFile.text, linestart, false);
- var fix = '/*globals '+insert+' */\n' + indent; //$NON-NLS-1$ //$NON-NLS-2$
+ var linestart = getLineStart(file.ast.sourceFile.text, point);
+ var indent = computeIndent(file.ast.sourceFile.text, linestart, false);
+ var fix = '/*globals '+insert+' */\n' + indent; //$NON-NLS-1$ //$NON-NLS-2$
return {text: fix, start: point, end: point};
}
},
- /**
+ /**
* @description fix for the 'no-undef-defined-inenv' rule
- * @function
+ * @function
* @callback
*/
"no-undef-defined-inenv": function(annotation, annotations, file) {
@@ -539,32 +539,32 @@ define([
* @since 12.0
*/
function getEnv(name) {
- switch(name) {
- case 'require': {
- if(file.ast.environments) {
- if(file.ast.environments.node && !file.ast.environments.amd) {
- return 'node';
- }
- if(file.ast.environments.node && file.ast.environments.amd) {
- return 'amd';
- }
- if(file.ast.environments.amd) {
- return 'amd';
- }
- }
- break;
- }
- case 'console': {
- if(file.ast.environments) {
- if(file.ast.environments.node && !file.ast.environments.amd) {
- return 'node';
- }
- return 'browser';
- }
- break;
- }
- }
- return Finder.findESLintEnvForMember(name);
+ switch(name) {
+ case 'require': {
+ if(file.ast.environments) {
+ if(file.ast.environments.node && !file.ast.environments.amd) {
+ return 'node';
+ }
+ if(file.ast.environments.node && file.ast.environments.amd) {
+ return 'amd';
+ }
+ if(file.ast.environments.amd) {
+ return 'amd';
+ }
+ }
+ break;
+ }
+ case 'console': {
+ if(file.ast.environments) {
+ if(file.ast.environments.node && !file.ast.environments.amd) {
+ return 'node';
+ }
+ return 'browser';
+ }
+ break;
+ }
+ }
+ return Finder.findESLintEnvForMember(name);
}
var env = getEnv(name);
if(env) {
@@ -574,1204 +574,1219 @@ define([
return {text: updateDirective(comment.value, 'eslint-env', env, true), start: start, end: start+comment.value.length}; //$NON-NLS-1$
}
var point = getDirectiveInsertionPoint(file.ast);
- var linestart = getLineStart(file.ast.sourceFile.text, point);
- var indent = computeIndent(file.ast.sourceFile.text, linestart, false);
- var fix = '/*eslint-env '+env+' */\n' + indent; //$NON-NLS-1$ //$NON-NLS-2$
+ var linestart = getLineStart(file.ast.sourceFile.text, point);
+ var indent = computeIndent(file.ast.sourceFile.text, linestart, false);
+ var fix = '/*eslint-env '+env+' */\n' + indent; //$NON-NLS-1$ //$NON-NLS-2$
return {text: fix, start: point, end: point};
}
}
},
/**
* @description Fix for the 'unknown-require-missing-env' rule
- * @function
- * @callback
+ * @function
+ * @callback
* @since 12.0
*/
"unknown-require-missing-env": function(annotation, annotations, file) {
- var name = annotation.data;
- if(typeof name === 'string') {
- var start,
- comment = Finder.findDirective(file.ast, 'eslint-env'); //$NON-NLS-1$
+ var name = annotation.data;
+ if(typeof name === 'string') {
+ var start,
+ comment = Finder.findDirective(file.ast, 'eslint-env'); //$NON-NLS-1$
if(comment) {
start = getDocOffset(file.ast.sourceFile.text, comment.range[0]) + comment.range[0];
return {text: updateDirective(comment.value, 'eslint-env', name, true), start: start, end: start+comment.value.length}; //$NON-NLS-1$
}
var point = getDirectiveInsertionPoint(file.ast);
- var linestart = getLineStart(file.ast.sourceFile.text, point);
- var indent = computeIndent(file.ast.sourceFile.text, linestart, false);
- var fix = '/*eslint-env '+name+' */\n' + indent; //$NON-NLS-1$ //$NON-NLS-2$
+ var linestart = getLineStart(file.ast.sourceFile.text, point);
+ var indent = computeIndent(file.ast.sourceFile.text, linestart, false);
+ var fix = '/*eslint-env '+name+' */\n' + indent; //$NON-NLS-1$ //$NON-NLS-2$
return {text: fix, start: point, end: point};
- }
+ }
},
- /**
+ /**
* @description fix for the 'no-unreachable' rule
- * @function
+ * @function
* @callback
*/
"no-unreachable": function(annotation, annotations, file) {
- return {text: '', start: annotation.start, end: annotation.end};
+ return {text: '', start: annotation.start, end: annotation.end};
},
- /**
+ /**
* @description fix for the 'no-unused-params' rule
- * @function
+ * @function
* @callback
*/
"no-unused-params": function(annotation, annotations, file) {
- var analyzed = false;
- var analyzeResult = {};
- return applySingleFixToAll(annotations, function(annot){
- if (!analyzed){
- for (var i = annotations.length - 1; i >= 0; i--) {
- var element = annotations[i];
- var node = Finder.findNode(element.start, file.ast, {parents:true});
- var parent = node.parents.pop();
- if (parent){
- var parentLocation = parent.start.toString() + ":" + parent.end.toString();
- if (analyzeResult[parentLocation] || !(analyzeResult[parentLocation] = 0)){
- analyzeResult[parentLocation] += 1;
- }
- }
- }
- analyzed = true;
- }
- var node = Finder.findNode(annot.start, file.ast, {parents:true});
- if(node) {
- var changes = [];
- var parent = node.parents.pop();
- var parentLocation = parent.start.toString() + ":" + parent.end.toString();
- var paramindex = -1;
- var greedy = false;
- for(var i = 0; i < parent.params.length; i++) {
- var p = parent.params[i];
- if(node.range[0] === p.range[0] && node.range[1] === p.range[1]) {
- paramindex = i;
- break;
- }
- }
- if (paramindex === 1 && analyzeResult[parentLocation] === parent.params.length - 1){
- greedy = true;
- }
- var change = removeIndexedItemChange(parent.params, paramindex, greedy);
- if(change) {
- changes.push(change);
- }
- switch(parent.type) {
- case 'FunctionExpression': {
- var funcparent = node.parents.pop();
- if(funcparent.type === 'CallExpression' && (funcparent.callee.name === 'define' || funcparent.callee.name === 'require')) {
- var args = funcparent.arguments;
- for(i = 0; i < args.length; i++) {
- var arg = args[i];
- if(arg.type === 'ArrayExpression') {
- if (arg.elements.length === 1) {
- // we remove the last element in the array
- change = { "start" : arg.range[0], "end" : arg.range[1], "text" : "[]" };
- } else {
- change = removeIndexedItemChange(arg.elements, paramindex, false, arg);
- }
- if(change) {
- changes.push(change);
- }
- break;
- }
- }
- } else if(funcparent.type === 'Property' && funcparent.key.leadingComments && funcparent.key.leadingComments.length > 0) {
- change = updateDoc(funcparent.key, file.ast.sourceFile.text, parent.params[paramindex].name);
- if(change) {
- changes.push(change);
- }
- } else if(funcparent.type === 'Property' && funcparent.leadingComments && funcparent.leadingComments.length > 0) {
- change = updateDoc(funcparent, file.ast.sourceFile.text, parent.params[paramindex].name);
- if(change) {
- changes.push(change);
- }
- }
- break;
- }
- case 'FunctionDeclaration': {
- change = updateDoc(parent, file.ast.sourceFile.text, parent.params[paramindex].name);
- if(change) {
- changes.push(change);
- }
- break;
- }
- }
- return changes;
- }
- });
- },
- /**
- * @description fix for the 'no-unused-params-expr' rule
- * @function
- * @callback
- */
- "no-unused-params-expr": function(annotation, annotations, file) {
- /**
- * @callback
- */
- function updateCallback(node, ast, comments) {
- if(Array.isArray(comments)) {
- //attach it to the last one
- var comment = comments[comments.length-1];
- if(comment.type === 'Block') {
- var valueend = comment.range[0]+comment.value.length+getDocOffset(ast.sourceFile.text, comment.range[0]);
- var start = getLineStart(ast.sourceFile.text, valueend);
- var indent = computeIndent(ast.sourceFile.text, start);
- var fix = "* @callback\n"+indent; //$NON-NLS-1$
- /*if(comment.value.charAt(valueend) !== '\n') {
- fix = '\n' + fix;
- }*/
- return {text: fix, start: valueend-1, end: valueend-1};
+ var analyzed = false;
+ var analyzeResult = {};
+ return applySingleFixToAll(annotations, function(annot){
+ if (!analyzed){
+ for (var i = annotations.length - 1; i >= 0; i--) {
+ var element = annotations[i];
+ var node = Finder.findNode(element.start, file.ast, {parents:true});
+ var parent = node.parents.pop();
+ if (parent){
+ var parentLocation = parent.start.toString() + ":" + parent.end.toString();
+ if (analyzeResult[parentLocation] || !(analyzeResult[parentLocation] = 0)){
+ analyzeResult[parentLocation] += 1;
+ }
+ }
+ }
+ analyzed = true;
+ }
+ var node = Finder.findNode(annot.start, file.ast, {parents:true});
+ if(node) {
+ var changes = [];
+ var parent = node.parents.pop();
+ var parentLocation = parent.start.toString() + ":" + parent.end.toString();
+ var paramindex = -1;
+ var greedy = false;
+ for(var i = 0; i < parent.params.length; i++) {
+ var p = parent.params[i];
+ if(node.range[0] === p.range[0] && node.range[1] === p.range[1]) {
+ paramindex = i;
+ break;
+ }
+ }
+ if (paramindex === 1 && analyzeResult[parentLocation] === parent.params.length - 1){
+ greedy = true;
+ }
+ var change = removeIndexedItemChange(parent.params, paramindex, greedy);
+ if(change) {
+ changes.push(change);
+ }
+ switch(parent.type) {
+ case 'FunctionExpression': {
+ var funcparent = node.parents.pop();
+ if(funcparent.type === 'CallExpression' && (funcparent.callee.name === 'define' || funcparent.callee.name === 'require')) {
+ var args = funcparent.arguments;
+ for(i = 0; i < args.length; i++) {
+ var arg = args[i];
+ if(arg.type === 'ArrayExpression') {
+ if (arg.elements.length === 1) {
+ // we remove the last element in the array
+ change = { "start" : arg.range[0], "end" : arg.range[1], "text" : "[]" };
+ } else {
+ change = removeIndexedItemChange(arg.elements, paramindex, false, arg);
+ }
+ if(change) {
+ changes.push(change);
+ }
+ break;
+ }
+ }
+ } else if(funcparent.type === 'Property' && funcparent.key.leadingComments && funcparent.key.leadingComments.length > 0) {
+ change = updateDoc(funcparent.key, file.ast.sourceFile.text, parent.params[paramindex].name);
+ if(change) {
+ changes.push(change);
+ }
+ } else if(funcparent.type === 'Property' && funcparent.leadingComments && funcparent.leadingComments.length > 0) {
+ change = updateDoc(funcparent, file.ast.sourceFile.text, parent.params[paramindex].name);
+ if(change) {
+ changes.push(change);
+ }
+ }
+ break;
+ }
+ case 'FunctionDeclaration': {
+ change = updateDoc(parent, file.ast.sourceFile.text, parent.params[paramindex].name);
+ if(change) {
+ changes.push(change);
+ }
+ break;
+ }
}
+ return changes;
}
- start = getLineStart(ast.sourceFile.text, node.range[0]);
- indent = computeIndent(ast.sourceFile.text, start);
- return {text: "/**\n"+indent+" * @callback\n"+indent+" */\n"+indent, start: node.range[0], end: node.range[0]}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
- var node = Finder.findNode(annotation.start, file.ast, {parents:true});
- if(node && node.parents && node.parents.length > 0) {
- var func = node.parents.pop();
- var p = node.parents.pop();
- var change;
- switch(p.type) {
- case 'Property': {
- if(!hasDocTag(['@callback', '@public'], p) && !hasDocTag(['@callback', '@public'], p.key)) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- change = updateCallback(p, file.ast, p.leadingComments ? p.leadingComments : p.key.leadingComments);
- }
- break;
- }
- case 'AssignmentExpression': {
- var left = p.left;
- var parent = null;
- if (node.parents.length > 0) {
- parent = node.parents.pop();
- }
- if (parent === null) {
- parent = left;
- }
- if(left.type === 'MemberExpression' && !hasDocTag(['@callback', '@public'], parent)) { //$NON-NLS-1$ //$NON-NLS-2$
- change = updateCallback(left, file.ast, parent.leadingComments);
- } else if(left.type === 'Identifier' && !hasDocTag(['@callback', '@public'], parent)) { //$NON-NLS-1$ //$NON-NLS-2$
- change = updateCallback(p.left, file.ast, parent.leadingComments);
- }
- break;
- }
- case 'VariableDeclarator': {
- var oldp = p;
- p = node.parents.pop();
- if(p.declarations[0].range[0] === oldp.range[0] && p.declarations[0].range[1] === oldp.range[1]) {
- //insert at the var keyword level to not mess up the code
- var leadingComments = oldp.leadingComments;
- if (!leadingComments) {
- leadingComments = p.leadingComments;
- }
- change = updateCallback(p, file.ast, leadingComments);
- } else if(!hasDocTag(['@callback', '@public'], oldp.id)) { //$NON-NLS-1$ //$NON-NLS-2$
- change = updateCallback(oldp, file.ast, oldp.leadingComments);
- }
- break;
- }
- }
- if(!change && !hasDocTag(['@callback', '@public'], func)) { //$NON-NLS-1$ //$NON-NLS-2$
- return {text: "/* @callback */ ", start: func.range[0], end: func.range[0]}; //$NON-NLS-1$
- }
- }
- return change;
+ });
},
- /**
- * @description fix for the 'no-unused-vars-unused' rule
- * @function
- * @callback
- */
- "no-unused-vars-unused": function(annotation, annotations, file) {
- var node = Finder.findNode(annotation.start, file.ast, {parents:true});
- if(node && node.parents && node.parents.length > 0) {
- var declr = node.parents.pop();
- if(declr.type === 'VariableDeclarator') {
- var decl = node.parents.pop();
- if(decl.type === 'VariableDeclaration') {
- if(decl.declarations.length === 1) {
- return {text: '', start: decl.range[0], end: decl.range[1]};
- }
- var idx = indexOf(decl.declarations, declr);
- if(idx > -1) {
- var change = removeIndexedItemChange(decl.declarations, idx);
- if(change) {
- return {text: change.text, start: change.start, end: change.end};
- }
- }
- }
- }
- }
- },
- /**
- * @description fix for the 'no-unused-vars-unread' rule
- * @function
- * @callback
- */
- "no-unused-vars-unread": function(annotation, annotations, file) {
- function getQuickfix(node, child, parents) {
- if (parents.length === 0) {
- return null;
- }
- var decl, idx, change, properties, propertyIndex;
- switch(node.type) {
- case 'VariableDeclarator' : {
- return getQuickfix(parents.pop(), node, parents);
+ /**
+ * @description fix for the 'no-unused-params-expr' rule
+ * @function
+ * @callback
+ */
+ "no-unused-params-expr": function(annotation, annotations, file) {
+ /**
+ * @callback
+ */
+ function updateCallback(node, ast, comments) {
+ if(Array.isArray(comments)) {
+ //attach it to the last one
+ var comment = comments[comments.length-1];
+ if(comment.type === 'Block') {
+ var valueend = comment.range[0]+comment.value.length+getDocOffset(ast.sourceFile.text, comment.range[0]);
+ var start = getLineStart(ast.sourceFile.text, valueend);
+ var indent = computeIndent(ast.sourceFile.text, start);
+ var fix = "* @callback\n"+indent; //$NON-NLS-1$
+ /*if(comment.value.charAt(valueend) !== '\n') {
+ fix = '\n' + fix;
+ }*/
+ return {text: fix, start: valueend-1, end: valueend-1};
+ }
+ }
+ start = getLineStart(ast.sourceFile.text, node.range[0]);
+ indent = computeIndent(ast.sourceFile.text, start);
+ return {text: "/**\n"+indent+" * @callback\n"+indent+" */\n"+indent, start: node.range[0], end: node.range[0]}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ var node = Finder.findNode(annotation.start, file.ast, {parents:true});
+ if(node && node.parents && node.parents.length > 0) {
+ var func = node.parents.pop();
+ var p = node.parents.pop();
+ var change;
+ switch(p.type) {
+ case 'Property': {
+ if(!hasDocTag(['@callback', '@public'], p) && !hasDocTag(['@callback', '@public'], p.key)) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ change = updateCallback(p, file.ast, p.leadingComments ? p.leadingComments : p.key.leadingComments);
+ }
+ break;
+ }
+ case 'AssignmentExpression': {
+ var left = p.left;
+ var parent = null;
+ if (node.parents.length > 0) {
+ parent = node.parents.pop();
+ }
+ if (parent === null) {
+ parent = left;
+ }
+ if(left.type === 'MemberExpression' && !hasDocTag(['@callback', '@public'], parent)) { //$NON-NLS-1$ //$NON-NLS-2$
+ change = updateCallback(left, file.ast, parent.leadingComments);
+ } else if(left.type === 'Identifier' && !hasDocTag(['@callback', '@public'], parent)) { //$NON-NLS-1$ //$NON-NLS-2$
+ change = updateCallback(p.left, file.ast, parent.leadingComments);
+ }
+ break;
+ }
+ case 'VariableDeclarator': {
+ var oldp = p;
+ p = node.parents.pop();
+ if(p.declarations[0].range[0] === oldp.range[0] && p.declarations[0].range[1] === oldp.range[1]) {
+ //insert at the var keyword level to not mess up the code
+ var leadingComments = oldp.leadingComments;
+ if (!leadingComments) {
+ leadingComments = p.leadingComments;
+ }
+ change = updateCallback(p, file.ast, leadingComments);
+ } else if(!hasDocTag(['@callback', '@public'], oldp.id)) { //$NON-NLS-1$ //$NON-NLS-2$
+ change = updateCallback(oldp, file.ast, oldp.leadingComments);
+ }
+ break;
+ }
+ }
+ if(!change && !hasDocTag(['@callback', '@public'], func)) { //$NON-NLS-1$ //$NON-NLS-2$
+ return {text: "/* @callback */ ", start: func.range[0], end: func.range[0]}; //$NON-NLS-1$
+ }
}
- case 'VariableDeclaration' : {
- if(node.declarations.length === 1) {
- return {text: '', start: node.range[0], end: node.range[1]};
- }
- idx = indexOf(node.declarations, child);
- if(idx > -1) {
- change = removeIndexedItemChange(node.declarations, idx);
- if(change) {
- return {text: change.text, start: change.start, end: change.end};
- }
- }
- break;
- }
- case 'ArrayPattern' : {
- var elements = node.elements;
- if (elements.length === 1) {
- // only one element - remove the whole variable declarator
- return getQuickfix(parents.pop(), node, parents);
- }
- // remove only the corresponding elements - might also need to remove elements on the right hand side
- // look for the index inside the elements array
- var index = indexOf(elements, child);
- if (index > -1) {
- var chosenElement = elements[index];
- if(chosenElement) {
- return {text: "", start: chosenElement.range[0], end: chosenElement.range[1]};
- }
- }
- break;
- }
- case 'Identifier' : {
- return getQuickfix(parents.pop(), node, parents);
- }
- case 'Property' : {
- return getQuickfix(parents.pop(), node, parents);
- }
- case 'ObjectPattern' : {
- properties = node.properties;
- if (properties.length === 1) {
- // only one property - we can remove the whole declarator
- return getQuickfix(parents.pop(), node, parents);
- }
- propertyIndex = indexOf(properties, child);
- if(propertyIndex > -1) {
- change = removeIndexedItemChange(properties, propertyIndex);
- if(change) {
- return {text: change.text, start: change.start, end: change.end};
- }
- }
- break;
- }
- }
- return null;
- }
- var found = Finder.findNode(annotation.start, file.ast, {parents:true});
- if(found && found.parents && found.parents.length > 0) {
- var quickfix = getQuickfix(found, null, found.parents);
- if (quickfix) return quickfix;
- }
- },
- /**
- * @description fix for the 'no-unused-vars-unused-funcdecl' rule
- * @function
- * @callback
- */
- "no-unused-vars-unused-funcdecl": function(annotation, annotations, file) {
- var node = Finder.findNode(annotation.start, file.ast, {parents:true});
- if(node && node.parents && node.parents.length > 0) {
- var decl = node.parents.pop();
- if(decl.type === 'FunctionDeclaration') {
- return {text: '', start: decl.range[0], end: decl.range[1]};
- }
- }
- },
- /**
- * @description fix for the 'use-isnan' rule
- * @function
- * @callback
- */
- "use-isnan": function(annotation, annotations, file) {
- return applySingleFixToAll(annotations, function(annot){
- var node = Finder.findNode(annot.start, file.ast, {parents:true});
- if(node && node.parents && node.parents.length > 0) {
- var bin = node.parents.pop();
- if(bin.type === 'BinaryExpression') {
- var tomove;
- if(bin.left.type === 'Identifier' && bin.left.name === 'NaN') {
- tomove = bin.right;
- } else if(bin.right.type === 'Identifier' && bin.right.name === 'NaN') {
- tomove = bin.left;
- }
- if(tomove) {
- var src = file.ast.sourceFile.text.slice(tomove.range[0], tomove.range[1]);
- return {
- text: 'isNaN('+src+')', //$NON-NLS-1$
- start: bin.range[0],
- end: bin.range[1]
- };
- }
- }
- }
- });
- },
- /**
- * @description fix for the 'semi' rule
- * @function
- * @callback
- */
- "semi": function(annotation, annotations, file) {
- return applySingleFixToAll(annotations, function(annot) {
- if (annot.data) {
- switch (annot.data.kind) {
- case 'missing':
+ return change;
+ },
+ /**
+ * @description fix for the 'no-unused-vars-unused' rule
+ * @function
+ * @callback
+ */
+ "no-unused-vars-unused": function(annotation, annotations, file) {
+ var node = Finder.findNode(annotation.start, file.ast, {parents:true});
+ if(node && node.parents && node.parents.length > 0) {
+ var declr = node.parents.pop();
+ if(declr.type === 'VariableDeclarator') {
+ var decl = node.parents.pop();
+ if(decl.type === 'VariableDeclaration') {
+ if(decl.declarations.length === 1) {
+ return {text: '', start: decl.range[0], end: decl.range[1]};
+ }
+ var idx = indexOf(decl.declarations, declr);
+ if(idx > -1) {
+ var change = removeIndexedItemChange(decl.declarations, idx);
+ if(change) {
+ return {text: change.text, start: change.start, end: change.end};
+ }
+ }
+ }
+ }
+ }
+ },
+ /**
+ * @description fix for the 'no-unused-vars-unread' rule
+ * @function
+ * @callback
+ */
+ "no-unused-vars-unread": function(annotation, annotations, file) {
+ function getQuickfix(node, child, parents) {
+ if (parents.length === 0) {
+ return null;
+ }
+ var decl, idx, change, properties, propertyIndex;
+ switch(node.type) {
+ case 'VariableDeclarator' : {
+ return getQuickfix(parents.pop(), node, parents);
+ }
+ case 'VariableDeclaration' : {
+ if(node.declarations.length === 1) {
+ return {text: '', start: node.range[0], end: node.range[1]};
+ }
+ idx = indexOf(node.declarations, child);
+ if(idx > -1) {
+ change = removeIndexedItemChange(node.declarations, idx);
+ if(change) {
+ return {text: change.text, start: change.start, end: change.end};
+ }
+ }
+ break;
+ }
+ case 'ArrayPattern' : {
+ var elements = node.elements;
+ if (elements.length === 1) {
+ // only one element - remove the whole variable declarator
+ return getQuickfix(parents.pop(), node, parents);
+ }
+ // remove only the corresponding elements - might also need to remove elements on the right hand side
+ // look for the index inside the elements array
+ var index = indexOf(elements, child);
+ if (index > -1) {
+ var chosenElement = elements[index];
+ if(chosenElement) {
+ return {text: "", start: chosenElement.range[0], end: chosenElement.range[1]};
+ }
+ }
+ break;
+ }
+ case 'Identifier' : {
+ return getQuickfix(parents.pop(), node, parents);
+ }
+ case 'Property' : {
+ return getQuickfix(parents.pop(), node, parents);
+ }
+ case 'ObjectPattern' : {
+ properties = node.properties;
+ if (properties.length === 1) {
+ // only one property - we can remove the whole declarator
+ return getQuickfix(parents.pop(), node, parents);
+ }
+ propertyIndex = indexOf(properties, child);
+ if(propertyIndex > -1) {
+ change = removeIndexedItemChange(properties, propertyIndex);
+ if(change) {
+ return {text: change.text, start: change.start, end: change.end};
+ }
+ }
+ break;
+ }
+ }
+ return null;
+ }
+ var found = Finder.findNode(annotation.start, file.ast, {parents:true});
+ if(found && found.parents && found.parents.length > 0) {
+ var quickfix = getQuickfix(found, null, found.parents);
+ if (quickfix) { return quickfix; }
+ }
+ },
+ /**
+ * @description fix for the 'no-unused-vars-unused-funcdecl' rule
+ * @function
+ * @callback
+ */
+ "no-unused-vars-unused-funcdecl": function(annotation, annotations, file) {
+ var node = Finder.findNode(annotation.start, file.ast, {parents:true});
+ if(node && node.parents && node.parents.length > 0) {
+ var decl = node.parents.pop();
+ if(decl.type === 'FunctionDeclaration') {
+ return {text: '', start: decl.range[0], end: decl.range[1]};
+ }
+ }
+ },
+ /**
+ * @description fix for the 'use-isnan' rule
+ * @function
+ * @callback
+ */
+ "use-isnan": function(annotation, annotations, file) {
+ return applySingleFixToAll(annotations, function(annot){
+ var node = Finder.findNode(annot.start, file.ast, {parents:true});
+ if(node && node.parents && node.parents.length > 0) {
+ var bin = node.parents.pop();
+ if(bin.type === 'BinaryExpression') {
+ var tomove;
+ if(bin.left.type === 'Identifier' && bin.left.name === 'NaN') {
+ tomove = bin.right;
+ } else if(bin.right.type === 'Identifier' && bin.right.name === 'NaN') {
+ tomove = bin.left;
+ }
+ if(tomove) {
+ var src = file.ast.sourceFile.text.slice(tomove.range[0], tomove.range[1]);
+ var pre = "";
+ if(bin.operator.charAt(0) === '!') {
+ pre = "!";
+ }
+ return {
+ text: pre+'isNaN('+src+')', //$NON-NLS-1$
+ start: bin.range[0],
+ end: bin.range[1]
+ };
+ }
+ }
+ }
+ });
+ },
+ /**
+ * @description fix for the 'semi' rule
+ * @function
+ * @callback
+ */
+ "semi": function(annotation, annotations, file) {
+ return applySingleFixToAll(annotations, function(annot) {
+ if (annot.data) {
+ switch (annot.data.kind) {
+ case 'missing':
+ return {
+ text: ';',
+ start: annot.end,
+ end: annot.end
+ };
+ case 'extra':
+ return {
+ text: '',
+ start: annot.start,
+ end: annot.end
+ };
+ }
+ }
+ });
+ },
+ /**
+ * @description fix for the 'unnecessary-nl' rule
+ * @function
+ * @callback
+ */
+ "unnecessary-nls": function(annotation, annotations, file){
+ return applySingleFixToAll(annotations, function(annot){
+ var comment = Finder.findComment(annot.start + 2, file.ast); // Adjust for leading //
+ var nlsTag = annot.data.nlsComment; // We store the nls tag in the annotation
+ if (comment && comment.type.toLowerCase() === 'line' && nlsTag){
+ var index = comment.value.indexOf(nlsTag);
+ // Check if we can delete the whole comment
+ if (index > 0){
+ var start = annot.start;
+ while (file.ast.sourceFile.text.charAt(start-1) === ' ' || file.ast.sourceFile.text.charAt(start-1) === '\t'){
+ start--;
+ }
return {
- text: ';',
- start: annot.end,
+ text: '',
+ start: start,
end: annot.end
};
- case 'extra':
+ } else if (index === 0){
+ var newComment = comment.value.substring(index+nlsTag.length);
+ start = annot.start;
+ var end = annot.end;
+ if (!newComment.match(/^(\s*|\s*\/\/.*)$/)){
+ start += 2; // Only remove leading // if additional comments start with another //
+ } else {
+ while (file.ast.sourceFile.text.charAt(start-1) === ' ' || file.ast.sourceFile.text.charAt(start-1) === '\t'){
+ start--;
+ }
+ }
+ if (newComment.match(/^\s*$/)){
+ end = comment.range[1]; // If there is only whitespace left in the comment, delete it entirely
+ while (file.ast.sourceFile.text.charAt(start-1) === ' ' || file.ast.sourceFile.text.charAt(start-1) === '\t'){
+ start--;
+ }
+ }
return {
text: '',
- start: annot.start,
- end: annot.end
+ start: start,
+ end: end
};
+ }
}
- }
- });
- },
- /**
- * @description fix for the 'unnecessary-nl' rule
- * @function
- * @callback
- */
- "unnecessary-nls": function(annotation, annotations, file){
- return applySingleFixToAll(annotations, function(annot){
- var comment = Finder.findComment(annot.start + 2, file.ast); // Adjust for leading //
- var nlsTag = annot.data.nlsComment; // We store the nls tag in the annotation
- if (comment && comment.type.toLowerCase() === 'line' && nlsTag){
- var index = comment.value.indexOf(nlsTag);
- // Check if we can delete the whole comment
- if (index > 0){
- var start = annot.start;
- while (file.ast.sourceFile.text.charAt(start-1) === ' ' || file.ast.sourceFile.text.charAt(start-1) === '\t'){
- start--;
+ });
+ },
+ /**
+ * @callback
+ */
+ "no-else-return": function(annotation, annotations, file) {
+ return applySingleFixToAll(annotations, function(annot) {
+ var node = Finder.findNode(annot.start, file.ast, {parents:true});
+ // looking for the if statement
+ while (node && node.type !== 'IfStatement') {
+ node = node.parents.pop();
+ }
+ var thenNode = node.consequent;
+ var elseNode = node.alternate;
+ var parent = node.parent || {};
+ // Replace else statement with newline.
+ var replacement = '\n';
+ if (parent.type === 'BlockStatement' || parent.type === 'IfStatement') {
+ // Preserve whitespace if inside of a block.
+ replacement = node.sourceFile.text.substring(parent.start + 1, parent.body[0].start);
+ if (replacement.charAt(0) !== '\n') {
+ replacement = '\n' + replacement;
}
- return {
- text: '',
- start: start,
- end: annot.end
- };
- } else if (index === 0){
- var newComment = comment.value.substring(index+nlsTag.length);
- start = annot.start;
- var end = annot.end;
- if (!newComment.match(/^(\s*|\s*\/\/.*)$/)){
- start += 2; // Only remove leading // if additional comments start with another //
- } else {
- while (file.ast.sourceFile.text.charAt(start-1) === ' ' || file.ast.sourceFile.text.charAt(start-1) === '\t'){
- start--;
- }
+ }
+ if (elseNode.type === 'BlockStatement') {
+ // need to remove the else { and the closing brace }
+ // check the first statement inside the block for trailing comment
+ var firstStatement = elseNode.body[0];
+ var start = firstStatement.start;
+ if (firstStatement.leadingComments) {
+ start = firstStatement.leadingComments[0].start;
}
- if (newComment.match(/^\s*$/)){
- end = comment.range[1]; // If there is only whitespace left in the comment, delete it entirely
- while (file.ast.sourceFile.text.charAt(start-1) === ' ' || file.ast.sourceFile.text.charAt(start-1) === '\t'){
- start--;
- }
+ var lastStatement = elseNode.body[elseNode.body.length - 1];
+ var closingStart = lastStatement.end;
+ var trailingComments = lastStatement.trailingComments;
+ if (trailingComments) {
+ closingStart = trailingComments[trailingComments.length - 1].end;
+ }
+ return [
+ { text: replacement, start: thenNode.end, end: start },
+ { text: '', start: closingStart, end: elseNode.end },
+ ];
+ }
+ // need to remove the else keyword
+ start = elseNode.start;
+ if (elseNode.leadingComments) {
+ start = elseNode.leadingComments[0].start;
+ }
+ return {
+ text: replacement,
+ start: thenNode.end + 1,
+ end: start
+ };
+ });
+ },
+ /**
+ * @callback
+ */
+ "no-cond-assign": function(annotation, annotations, file) {
+ return applySingleFixToAll(annotations, function(annot) {
+ var node = Finder.findNode(annot.start, file.ast, {parents:true});
+ var assignmentExpression = node.parents.pop();
+ if (assignmentExpression && assignmentExpression.type === 'AssignmentExpression') {
+ var start = assignmentExpression.range[0];
+ var end = assignmentExpression.range[1];
+ return [
+ {text: '(', start: start, end: start},
+ {text: ')', start: end, end: end},
+ ];
+ }
+ });
+ },
+ /**
+ * @callback
+ */
+ "no-extra-bind": function(annotation, annotations, file) {
+ return applySingleFixToAll(annotations, function(annot) {
+ var node = Finder.findNode(annot.start, file.ast, {parents:true});
+ var memberExpression = node.parents.pop();
+ var callExpression = node.parents.pop();
+ if (memberExpression && callExpression) {
+ var object = memberExpression.object;
+ if (object.type === 'ArrowFunctionExpression') {
+ return [
+ {text: '', start: callExpression.range[0], end: object.range[0]},
+ {text: '', start: object.range[1], end: callExpression.range[1]},
+ ];
}
return {
text: '',
- start: start,
- end: end
+ start: memberExpression.object.range[1],
+ end: callExpression.range[1]
};
}
- }
- });
- },
- "no-else-return": function(annotation, annotations, file) {
- return applySingleFixToAll(annotations, function(annot) {
- var node = Finder.findNode(annot.start, file.ast, {parents:true});
- // looking for the if statement
- while (node && node.type !== 'IfStatement') {
- node = node.parents.pop();
- }
- var thenNode = node.consequent;
- var elseNode = node.alternate;
- var parent = node.parent || {};
- // Replace else statement with newline.
- var replacement = '\n';
- if (parent.type === 'BlockStatement' || parent.type === 'IfStatement') {
- // Preserve whitespace if inside of a block.
- replacement = node.sourceFile.text.substring(parent.start + 1, parent.body[0].start);
- if (replacement.charAt(0) !== '\n') {
- replacement = '\n' + replacement;
- }
- }
-
- if (elseNode.type === 'BlockStatement') {
- // need to remove the else { and the closing brace }
- // check the first statement inside the block for trailing comment
- var firstStatement = elseNode.body[0];
- var start = firstStatement.start;
- if (firstStatement.leadingComments) {
- start = firstStatement.leadingComments[0].start;
+ });
+ },
+ "quotes" : function(annotation, annotations, file) {
+ function convertQuotes(str, newQuote) {
+ var oldQuote = str[0];
+ if (newQuote === oldQuote) {
+ return str;
}
- var lastStatement = elseNode.body[elseNode.body.length - 1];
- var closingStart = lastStatement.end;
- var trailingComments = lastStatement.trailingComments;
- if (trailingComments) {
- closingStart = trailingComments[trailingComments.length - 1].end;
- }
- return [
- { text: replacement, start: thenNode.end, end: start },
- { text: '', start: closingStart, end: elseNode.end },
- ];
- }
- // need to remove the else keyword
- var start = elseNode.start;
- if (elseNode.leadingComments) {
- start = elseNode.leadingComments[0].start;
- }
- return {
- text: replacement,
- start: thenNode.end + 1,
- end: start
- };
- });
- },
- "no-cond-assign": function(annotation, annotations, file) {
- return applySingleFixToAll(annotations, function(annot) {
- var node = Finder.findNode(annot.start, file.ast, {parents:true});
- var assignmentExpression = node.parents.pop();
- if (assignmentExpression && assignmentExpression.type === 'AssignmentExpression') {
- var start = assignmentExpression.range[0];
- var end = assignmentExpression.range[1];
- return [
- {text: '(', start: start, end: start},
- {text: ')', start: end, end: end},
- ];
+ return newQuote + str.slice(1, -1).replace(/\\(\${|\r\n?|\n|.)|["'`]|\${|(\r\n?|\n)/g, function(match, escaped, newline) {
+ if (escaped === oldQuote || oldQuote === "`" && escaped === "${") {
+ return escaped; // unescape
+ }
+ if (match === newQuote || newQuote === "`" && match === "${") {
+ return "\\" + match; // escape
+ }
+ if (newline && oldQuote === "`") {
+ return "\\n"; // escape newlines
+ }
+ return match;
+ }) + newQuote;
}
- });
- },
- "no-extra-bind": function(annotation, annotations, file) {
- return applySingleFixToAll(annotations, function(annot) {
- var node = Finder.findNode(annot.start, file.ast, {parents:true});
- var memberExpression = node.parents.pop();
- var callExpression = node.parents.pop();
- if (memberExpression && callExpression) {
- var object = memberExpression.object;
- if (object.type === 'ArrowFunctionExpression') {
- return [
- {text: '', start: callExpression.range[0], end: object.range[0]},
- {text: '', start: object.range[1], end: callExpression.range[1]},
- ];
+ return applySingleFixToAll(annotations, function(annot) {
+ var node = Finder.findNode(annot.start, file.ast, {parents:true});
+ if (node) {
+ switch(node.type) {
+ case 'Literal' :
+ return {
+ text: convertQuotes(node.raw, annotation.data.quote),
+ start: node.range[0],
+ end: node.range[1]
+ };
+ case 'TemplateLiteral' :
+ return {
+ text: convertQuotes('`' + node.quasis[0].value.raw + '`', annotation.data.quote),
+ start: node.range[0],
+ end: node.range[1]
+ };
+ }
}
+ });
+ },
+ /**
+ * @callback
+ */
+ "no-unused-expressions": function(annotation, annotations, file) {
+ return applySingleFixToAll(annotations, function(annot) {
return {
text: '',
- start: memberExpression.object.range[1],
- end: callExpression.range[1]
+ start: annot.start,
+ end: annot.end
};
+ });
+ },
+ /**
+ * @callback
+ */
+ "no-implicit-coercion" : function(annotation, annotations, file) {
+ var INDEX_OF_PATTERN = /^(?:i|lastI)ndexOf$/;
+ /**
+ * Checks whether or not a node is a double logical negating.
+ * @param {ASTNode} node - An UnaryExpression node to check.
+ * @returns {boolean} Whether or not the node is a double logical negating.
+ */
+ function isDoubleLogicalNegating(node) {
+ return node.operator === "!" &&
+ node.argument.type === "UnaryExpression" &&
+ node.argument.operator === "!";
}
- });
- },
- "quotes" : function(annotation, annotations, file) {
- function convertQuotes(str, newQuote) {
- var oldQuote = str[0];
-
- if (newQuote === oldQuote) {
- return str;
+ /**
+ * Checks whether or not a node is a binary negating of `.indexOf()` method calling.
+ * @param {ASTNode} node - An UnaryExpression node to check.
+ * @returns {boolean} Whether or not the node is a binary negating of `.indexOf()` method calling.
+ */
+ function isBinaryNegatingOfIndexOf(node) {
+ return node.operator === "~" &&
+ node.argument.type === "CallExpression" &&
+ node.argument.callee.type === "MemberExpression" &&
+ node.argument.callee.property.type === "Identifier" &&
+ INDEX_OF_PATTERN.test(node.argument.callee.property.name);
}
- return newQuote + str.slice(1, -1).replace(/\\(\${|\r\n?|\n|.)|["'`]|\${|(\r\n?|\n)/g, function(match, escaped, newline) {
- if (escaped === oldQuote || oldQuote === "`" && escaped === "${") {
- return escaped; // unescape
- }
- if (match === newQuote || newQuote === "`" && match === "${") {
- return "\\" + match; // escape
- }
- if (newline && oldQuote === "`") {
- return "\\n"; // escape newlines
+
+ /**
+ * Checks whether or not a node is a multiplying by one.
+ * @param {BinaryExpression} node - A BinaryExpression node to check.
+ * @returns {boolean} Whether or not the node is a multiplying by one.
+ */
+ function isMultiplyByOne(node) {
+ return node.operator === "*" && (
+ node.left.type === "Literal" && node.left.value === 1 ||
+ node.right.type === "Literal" && node.right.value === 1
+ );
+ }
+
+ /**
+ * Checks whether the result of a node is numeric or not
+ * @param {ASTNode} node The node to test
+ * @returns {boolean} true if the node is a number literal or a `Number()`, `parseInt` or `parseFloat` call
+ */
+ function isNumeric(node) {
+ return node.type === "Literal"
+ && typeof node.value === "number"
+ || node.type === "CallExpression"
+ && (node.callee.name === "Number" ||
+ node.callee.name === "parseInt" ||
+ node.callee.name === "parseFloat");
+ }
+
+ /**
+ * Returns the first non-numeric operand in a BinaryExpression. Designed to be
+ * used from bottom to up since it walks up the BinaryExpression trees using
+ * node.parent to find the result.
+ * @param {BinaryExpression} node The BinaryExpression node to be walked up on
+ * @returns {ASTNode} The first non-numeric item in the BinaryExpression tree or
+ */
+ function getNonNumericOperand(node) {
+ var left = node.left,
+ right = node.right;
+ if (right.type !== "BinaryExpression" && !isNumeric(right)) {
+ return right;
}
- return match;
- }) + newQuote;
- };
- return applySingleFixToAll(annotations, function(annot) {
- var node = Finder.findNode(annot.start, file.ast, {parents:true});
- if (node) {
- switch(node.type) {
- case 'Literal' :
- return {
- text: convertQuotes(node.raw, annotation.data.quote),
- start: node.range[0],
- end: node.range[1]
- };
- case 'TemplateLiteral' :
- return {
- text: convertQuotes('`' + node.quasis[0].value.raw + '`', annotation.data.quote),
- start: node.range[0],
- end: node.range[1]
- };
+ if (left.type !== "BinaryExpression" && !isNumeric(left)) {
+ return left;
}
}
- });
- },
- "no-unused-expressions": function(annotation, annotations, file) {
- return applySingleFixToAll(annotations, function(annot) {
- return {
- text: '',
- start: annot.start,
- end: annot.end
- };
- });
- },
- "no-implicit-coercion" : function(annotation, annotations, file) {
- var INDEX_OF_PATTERN = /^(?:i|lastI)ndexOf$/;
- /**
- * Checks whether or not a node is a double logical negating.
- * @param {ASTNode} node - An UnaryExpression node to check.
- * @returns {boolean} Whether or not the node is a double logical negating.
- */
- function isDoubleLogicalNegating(node) {
- return node.operator === "!" &&
- node.argument.type === "UnaryExpression" &&
- node.argument.operator === "!";
- }
- /**
- * Checks whether or not a node is a binary negating of `.indexOf()` method calling.
- * @param {ASTNode} node - An UnaryExpression node to check.
- * @returns {boolean} Whether or not the node is a binary negating of `.indexOf()` method calling.
- */
- function isBinaryNegatingOfIndexOf(node) {
- return node.operator === "~" &&
- node.argument.type === "CallExpression" &&
- node.argument.callee.type === "MemberExpression" &&
- node.argument.callee.property.type === "Identifier" &&
- INDEX_OF_PATTERN.test(node.argument.callee.property.name);
- }
-
- /**
- * Checks whether or not a node is a multiplying by one.
- * @param {BinaryExpression} node - A BinaryExpression node to check.
- * @returns {boolean} Whether or not the node is a multiplying by one.
- */
- function isMultiplyByOne(node) {
- return node.operator === "*" && (
- node.left.type === "Literal" && node.left.value === 1 ||
- node.right.type === "Literal" && node.right.value === 1
- );
- }
-
- /**
- * Checks whether the result of a node is numeric or not
- * @param {ASTNode} node The node to test
- * @returns {boolean} true if the node is a number literal or a `Number()`, `parseInt` or `parseFloat` call
- */
- function isNumeric(node) {
- return node.type === "Literal"
- && typeof node.value === "number"
- || node.type === "CallExpression"
- && (node.callee.name === "Number" ||
- node.callee.name === "parseInt" ||
- node.callee.name === "parseFloat");
- }
-
- /**
- * Returns the first non-numeric operand in a BinaryExpression. Designed to be
- * used from bottom to up since it walks up the BinaryExpression trees using
- * node.parent to find the result.
- * @param {BinaryExpression} node The BinaryExpression node to be walked up on
- * @returns {ASTNode|
- } The first non-numeric item in the BinaryExpression tree or
-
- */
- function getNonNumericOperand(node) {
- var left = node.left,
- right = node.right;
-
- if (right.type !== "BinaryExpression" && !isNumeric(right)) {
- return right;
+
+ /**
+ * Checks whether or not a node is a concatenating with an empty string.
+ * @param {ASTNode} node - A BinaryExpression node to check.
+ * @returns {boolean} Whether or not the node is a concatenating with an empty string.
+ */
+ function isConcatWithEmptyString(node) {
+ return node.operator === "+" && (
+ (node.left.type === "Literal" && node.left.value === "") ||
+ (node.right.type === "Literal" && node.right.value === "")
+ );
}
-
- if (left.type !== "BinaryExpression" && !isNumeric(left)) {
- return left;
+
+ /**
+ * Gets a node that is the left or right operand of a node, is not the specified literal.
+ * @param {ASTNode} node - A BinaryExpression node to get.
+ * @param {any} value - A literal value to check.
+ * @returns {ASTNode} A node that is the left or right operand of the node, is not the specified literal.
+ */
+ function getOtherOperand(node, value) {
+ if (node.left.type === "Literal" && node.left.value === value) {
+ return node.right;
+ }
+ return node.left;
}
- }
-
- /**
- * Checks whether or not a node is a concatenating with an empty string.
- * @param {ASTNode} node - A BinaryExpression node to check.
- * @returns {boolean} Whether or not the node is a concatenating with an empty string.
- */
- function isConcatWithEmptyString(node) {
- return node.operator === "+" && (
- (node.left.type === "Literal" && node.left.value === "") ||
- (node.right.type === "Literal" && node.right.value === "")
- );
- }
-
- /**
- * Gets a node that is the left or right operand of a node, is not the specified literal.
- * @param {ASTNode} node - A BinaryExpression node to get.
- * @param {any} value - A literal value to check.
- * @returns {ASTNode} A node that is the left or right operand of the node, is not the specified literal.
- */
- function getOtherOperand(node, value) {
- if (node.left.type === "Literal" && node.left.value === value) {
- return node.right;
+ function getSource(text, node) {
+ return text.slice(node.range[0], node.range[1]);
}
- return node.left;
- }
- function getSource(text, node) {
- return text.slice(node.range[0], node.range[1]);
- }
- function checkBinaryExpression(node, text, annot) {
- if (isMultiplyByOne(node)) {
- var operandNode = getNonNumericOperand(node);
- if (operandNode) {
- return {
- text: 'Number(' + getSource(text, operandNode) + ')',
- start: annot.start,
- end: annot.end
- };
+ function checkBinaryExpression(node, text, annot) {
+ if (isMultiplyByOne(node)) {
+ var operandNode = getNonNumericOperand(node);
+ if (operandNode) {
+ return {
+ text: 'Number(' + getSource(text, operandNode) + ')',
+ start: annot.start,
+ end: annot.end
+ };
+ }
}
+ // "" + foo
+ return {
+ text: 'String(' + getSource(text, getOtherOperand(node, "")) + ')',
+ start: annot.start,
+ end: annot.end
+ };
}
- // "" + foo
- return {
- text: 'String(' + getSource(text, getOtherOperand(node, "")) + ')',
- start: annot.start,
- end: annot.end
- };
- }
- function checkAssignmentExpression(node, text, annot) {
- var operandNode = getOtherOperand(node, "");
- var source = getSource(text, operandNode);
- return {
- text: source + ' = String(' + source + ')',
- start: annot.start,
- end: annot.end
- };
- }
- var text = file.ast.sourceFile.text;
- return applySingleFixToAll(annotations, function(annot) {
- var node = Finder.findNode(annot.start, file.ast, {parents:true});
- if (node) {
- switch(node.type) {
- case "UnaryExpression" : {
- if (isDoubleLogicalNegating(node)) {
- return {
- text: 'Boolean(' + getSource(text, node.argument.argument) + ')',
- start: annot.start,
- end: annot.end
- };
- } else if (isBinaryNegatingOfIndexOf(node)) {
+ function checkAssignmentExpression(node, text, annot) {
+ var operandNode = getOtherOperand(node, "");
+ var source = getSource(text, operandNode);
+ return {
+ text: source + ' = String(' + source + ')',
+ start: annot.start,
+ end: annot.end
+ };
+ }
+ var text = file.ast.sourceFile.text;
+ return applySingleFixToAll(annotations, function(annot) {
+ var node = Finder.findNode(annot.start, file.ast, {parents:true});
+ if (node) {
+ switch(node.type) {
+ case "UnaryExpression" : {
+ if (isDoubleLogicalNegating(node)) {
+ return {
+ text: 'Boolean(' + getSource(text, node.argument.argument) + ')',
+ start: annot.start,
+ end: annot.end
+ };
+ } else if (isBinaryNegatingOfIndexOf(node)) {
+ return {
+ text: getSource(text, node.argument) + ' !== -1',
+ start: annot.start,
+ end: annot.end
+ };
+ }
+ // +foo
return {
- text: getSource(text, node.argument) + ' !== -1',
+ text: 'Number(' + getSource(text, node.argument) + ')',
start: annot.start,
end: annot.end
};
}
- // +foo
- return {
- text: 'Number(' + getSource(text, node.argument) + ')',
- start: annot.start,
- end: annot.end
- };
- }
- case "Literal" : {
- // check the parent - should be a binary expression
- var parent = node.parents && node.parents.pop();
- if (parent) {
- return checkBinaryExpression(parent, text, annot);
+ case "Literal" : {
+ // check the parent - should be a binary expression
+ var parent = node.parents && node.parents.pop();
+ if (parent) {
+ return checkBinaryExpression(parent, text, annot);
+ }
+ return null;
}
- return null;
- }
- case "BinaryExpression" : {
- return checkBinaryExpression(node, text, annot);
- }
- case "Identifier" : {
- parent = node.parents && node.parents.pop();
- if (parent) {
- return checkAssignmentExpression(parent, text, annot);
+ case "BinaryExpression" : {
+ return checkBinaryExpression(node, text, annot);
+ }
+ case "Identifier" : {
+ parent = node.parents && node.parents.pop();
+ if (parent) {
+ return checkAssignmentExpression(parent, text, annot);
+ }
+ return null;
+ }
+ case "AssignmentExpression" : {
+ return checkAssignmentExpression(node, text, annot);
}
- return null;
- }
- case "AssignmentExpression" : {
- return checkAssignmentExpression(node, text, annot);
}
}
- }
- });
- },
- "remove-duplicate-case" : function(annotation, annotations, file) {
- function getFallthroughComment(node) {
- var comments = node.leadingComments;
- if (comments) {
- var comment = comments[0];
- if (comment.type === 'Line' && comment.value === '$FALLTHROUGH$') {
- // if there is only one comment remove it
- return comment;
+ });
+ },
+ /**
+ * @callback
+ */
+ "remove-duplicate-case" : function(annotation, annotations, file) {
+ function getFallthroughComment(node) {
+ var comments = node.leadingComments;
+ if (comments) {
+ var comment = comments[0];
+ if (comment.type === 'Line' && comment.value === '$FALLTHROUGH$') {
+ // if there is only one comment remove it
+ return comment;
+ }
}
+ return null;
}
- return null;
- }
- return applySingleFixToAll(annotations, function(annot) {
- var node = Finder.findNode(annot.start, file.ast, {parents:true});
- if (node) {
- // get the switch case
- if (node.parents.length > 2) {
- var switchCase = node.parents.pop();
- // get the switch statement
- var statement = node.parents.pop();
- if (statement) {
- // get the index of the switch case
- var index = 0;
- loop: for (var i = 0, max = statement.cases.length; i < max; i++) {
- var currentCase = statement.cases[i];
- if (currentCase.range[0] === switchCase.range[0] && currentCase.range[1] === switchCase.range[1]) {
- index = i;
- break loop;
+ return applySingleFixToAll(annotations, function(annot) {
+ var node = Finder.findNode(annot.start, file.ast, {parents:true});
+ if (node) {
+ // get the switch case
+ if (node.parents.length > 2) {
+ var switchCase = node.parents.pop();
+ // get the switch statement
+ var statement = node.parents.pop();
+ if (statement) {
+ // get the index of the switch case
+ var index = 0;
+ loop: for (var i = 0, max = statement.cases.length; i < max; i++) {
+ var currentCase = statement.cases[i];
+ if (currentCase.range[0] === switchCase.range[0] && currentCase.range[1] === switchCase.range[1]) {
+ index = i;
+ break loop;
+ }
}
}
- }
- var start = switchCase.start;
- var end = switchCase.end;
- // check the next case
- var nextCase = statement.cases[index + 1];
- var comment;
- if (nextCase) {
- // check leading comments if it is a fallthrough comment
- comment = getFallthroughComment(nextCase);
- if (comment) {
- end = comment.end;
+ var start = switchCase.start;
+ var end = switchCase.end;
+ // check the next case
+ var nextCase = statement.cases[index + 1];
+ var comment;
+ if (nextCase) {
+ // check leading comments if it is a fallthrough comment
+ comment = getFallthroughComment(nextCase);
+ if (comment) {
+ end = comment.end;
+ }
}
- }
- if (index !== 0) {
- // check if there is a fallthrough comment for the current case statement we want to remove
- // if yes, we need to preserve it unless there is no other case statement after the one we remove
- comment = getFallthroughComment(switchCase);
- if (comment && nextCase) {
- start = comment.end;
- } else {
- start = statement.cases[index - 1].end;
+ if (index !== 0) {
+ // check if there is a fallthrough comment for the current case statement we want to remove
+ // if yes, we need to preserve it unless there is no other case statement after the one we remove
+ comment = getFallthroughComment(switchCase);
+ if (comment && nextCase) {
+ start = comment.end;
+ } else {
+ start = statement.cases[index - 1].end;
+ }
}
+ return {
+ text: '',
+ start: start,
+ end: end
+ };
}
- return {
- text: '',
- start: start,
- end: end
- };
}
- }
- });
- },
+ });
+ },
+ /**
+ * @callback
+ */
+ "no-trailing-spaces" : function(annotation, annotations, file) {
+ return applySingleFixToAll(annotations, function(annot) {
+ return {
+ text: '',
+ start: annot.start,
+ end: annot.end
+ };
+ });
+ }
+ };
+
/**
- * @callback
+ * @description Compute the fixes
+ * @param {Object} query The original Tern query object
+ * @param {Object} file The file object from Tern
*/
- "no-trailing-spaces" : function(annotation, annotations, file) {
- return applySingleFixToAll(annotations, function(annot) {
- return {
- text: '',
- start: annot.start,
- end: annot.end
- };
- });
- },
- };
-
- /**
- * @description Compute the fixes
- * @param {Object} query The original Tern query object
- * @param {Object} file The file object from Tern
- */
- function computeFixes(query, file) {
- var func = availableFixes[query.problemId];
- if(typeof func === 'function') {
- var fixes = func.call(this, query.annotation, query.annotations, file);
- if(Array.isArray(fixes)) {
- return fixes;
- } else if(fixes) {
- return [fixes];
+ function computeFixes(query, file) {
+ var func = availableFixes[query.problemId];
+ if(typeof func === 'function') {
+ var fixes = func.call(this, query.annotation, query.annotations, file);
+ if(Array.isArray(fixes)) {
+ return fixes;
+ } else if(fixes) {
+ return [fixes];
+ }
}
+ return [];
}
- return [];
- }
-
- /**
- * @description Finds the start of the line in the given text starting at the given offset
- * @param {String} text The text
- * @param {Number} offset The offset
- * @returns {Number} The offset in the text of the new line
- */
- function getLineStart(text, offset) {
- if(!text) {
- return 0;
- }
- if(offset < 0) {
- return 0;
- }
- var off = offset;
- var char = text[off];
- while(off > -1 && !/[\r\n]/.test(char)) {
- char = text[--off];
- }
- return off+1; //last char inspected will be @ -1 or the new line char
- }
-
- /**
- * @description Finds the end of the line in the given text starting at the given offset
- * @param {String} text The text
- * @param {Number} offset The offset
- * @returns {Number} The offset in the text before the new line or end of file
- */
- function getLineEnd(text, offset) {
- if(!text) {
- return 0;
- }
- if(offset < 0) {
- return 0;
- }
- var off = offset;
- var char = text[off];
- while(off < text.length && !/[\r\n]/.test(char)) {
- char = text[++off];
- }
- return off;
- }
-
- /**
- * @description Computes the indent to use in the editor
- * @param {String} text The editor text
- * @param {Number} linestart The start of the line
- * @param {Boolean} extraIndent If we should add an extra indent
- * @returns {String} The ammount of indent / formatting for the start of the string
- */
- function computeIndent(text, linestart, extraIndent) {
- if(!text || linestart < 0) {
- return '';
- }
- var off = linestart;
- var char = text[off];
- var preamble = extraIndent ? '\t' : ''; //$NON-NLS-1$
- //walk the proceeding whitespace so we will insert formatted at the same level
- while(char === ' ' || char === '\t') {
- preamble += char;
- char = text[++off];
- }
- return preamble;
- }
- /**
- * @description Computes the formatting for the trailing part of the fix
- * @param {String} text The editor text
- * @param {Object} annotation The annotation object
- * @param {String} indent Additional formatting to apply after the fix
- * @returns {String} The formatting to apply after the fix
- */
- function computePostfix(text, annotation, indent) {
- if(!text || !annotation) {
- return '';
- }
- var off = annotation.start;
- var char = text[off];
- var val = '';
- var newline = false;
- //walk the trailing whitespace so we can see if we need axtra whitespace
- while(off >= annotation.start && off <= annotation.end) {
- if(char === '\n') {
- newline = true;
- break;
+ /**
+ * @description Finds the start of the line in the given text starting at the given offset
+ * @param {String} text The text
+ * @param {Number} offset The offset
+ * @returns {Number} The offset in the text of the new line
+ */
+ function getLineStart(text, offset) {
+ if(!text) {
+ return 0;
+ }
+ if(offset < 0) {
+ return 0;
+ }
+ var off = offset;
+ var char = text[off];
+ while(off > -1 && !/[\r\n]/.test(char)) {
+ char = text[--off];
+ }
+ return off+1; //last char inspected will be @ -1 or the new line char
+ }
+
+ /**
+ * @description Finds the end of the line in the given text starting at the given offset
+ * @param {String} text The text
+ * @param {Number} offset The offset
+ * @returns {Number} The offset in the text before the new line or end of file
+ */
+ function getLineEnd(text, offset) {
+ if(!text) {
+ return 0;
+ }
+ if(offset < 0) {
+ return 0;
+ }
+ var off = offset;
+ var char = text[off];
+ while(off < text.length && !/[\r\n]/.test(char)) {
+ char = text[++off];
+ }
+ return off;
+ }
+
+ /**
+ * @description Computes the indent to use in the editor
+ * @param {String} text The editor text
+ * @param {Number} linestart The start of the line
+ * @param {Boolean} extraIndent If we should add an extra indent
+ * @returns {String} The ammount of indent / formatting for the start of the string
+ */
+ function computeIndent(text, linestart, extraIndent) {
+ if(!text || linestart < 0) {
+ return '';
+ }
+ var off = linestart;
+ var char = text[off];
+ var preamble = extraIndent ? '\t' : ''; //$NON-NLS-1$
+ //walk the proceeding whitespace so we will insert formatted at the same level
+ while(char === ' ' || char === '\t') {
+ preamble += char;
+ char = text[++off];
}
- char = text[off++];
+ return preamble;
+ }
+
+ /**
+ * @description Computes the formatting for the trailing part of the fix
+ * @param {String} text The editor text
+ * @param {Object} annotation The annotation object
+ * @param {String} indent Additional formatting to apply after the fix
+ * @returns {String} The formatting to apply after the fix
+ */
+ function computePostfix(text, annotation, indent) {
+ if(!text || !annotation) {
+ return '';
+ }
+ var off = annotation.start;
+ var char = text[off];
+ var val = '';
+ var newline = false;
+ //walk the trailing whitespace so we can see if we need axtra whitespace
+ while(off >= annotation.start && off <= annotation.end) {
+ if(char === '\n') {
+ newline = true;
+ break;
+ }
+ char = text[off++];
+ }
+ if(!newline) {
+ val += '\n'; //$NON-NLS-1$
+ }
+ if(typeof indent !== 'undefined') {
+ val += indent;
+ }
+ return val;
}
- if(!newline) {
- val += '\n'; //$NON-NLS-1$
+
+ /**
+ * @description Computes the offset for the block comment. i.e. 2 if the block starts with /*, 3 if it starts with /**
+ * @param {String} text The file text
+ * @param {Number} offset The doc node offset
+ * @returns {Number} 2 or 3 depending on the start of the comment block
+ */
+ function getDocOffset(text, offset) {
+ if(text.charAt(offset+1) === '*') {
+ if(text.charAt(offset+2) === '*') {
+ return 3;
+ }
+ return 2;
+ }
+ return 0;
}
- if(typeof indent !== 'undefined') {
- val += indent;
+
+ /**
+ * @description Updates the eslint directive
+ * @param {String}] text The text of the source file
+ * @param {String} directive The directive text
+ * @param {String} name The name to add
+ * @param {Boolean} usecommas If we should separate the directive entries with commas or not
+ * @returns {String} The new directive text
+ */
+ function updateDirective(text, directive, name, usecommas) {
+ if(usecommas) {
+ if(text.slice(directive.length).trim() !== '') {
+ return text.trim() + ', '+name; //$NON-NLS-1$
+ }
+ return text.trim() + ' '+name; //$NON-NLS-1$
+ }
+ return text.trim() + ' '+name; //$NON-NLS-1$
}
- return val;
- }
-
- /**
- * @description Computes the offset for the block comment. i.e. 2 if the block starts with /*, 3 if it starts with /**
- * @param {String} text The file text
- * @param {Number} offset The doc node offset
- * @returns {Number} 2 or 3 depending on the start of the comment block
- */
- function getDocOffset(text, offset) {
- if(text.charAt(offset+1) === '*') {
- if(text.charAt(offset+2) === '*') {
- return 3;
- }
- return 2;
- }
- return 0;
- }
-
- /**
- * @description Updates the eslint directive
- * @param {String}] text The text of the source file
- * @param {String} directive The directive text
- * @param {String} name The name to add
- * @param {Boolean} usecommas If we should separate the directive entries with commas or not
- * @returns {String} The new directive text
- */
- function updateDirective(text, directive, name, usecommas) {
- if(usecommas) {
- if(text.slice(directive.length).trim() !== '') {
- return text.trim() + ', '+name; //$NON-NLS-1$
+
+ /**
+ * @description Finds the index of the given item in the given list
+ * @param {Array.<Object>} list The array of AST nodes
+ * @param {Object} item The AST node
+ * @returns {Number} The index of the node in the list or -1
+ */
+ function indexOf(list, item) {
+ if(list && list.length) {
+ for(var i = 0; i < list.length; i++) {
+ var p = list[i];
+ if(p && item.range[0] === p.range[0] && item.range[1] === p.range[1]) {
+ return i;
+ }
+ }
}
- return text.trim() + ' '+name; //$NON-NLS-1$
- }
- return text.trim() + ' '+name; //$NON-NLS-1$
- }
-
- /**
- * @description Finds the index of the given item in the given list
- * @param {Array.<Object>} list The array of AST nodes
- * @param {Object} item The AST node
- * @returns {Number} The index of the node in the list or -1
- */
- function indexOf(list, item) {
- if(list && list.length) {
- for(var i = 0; i < list.length; i++) {
- var p = list[i];
- if(p && item.range[0] === p.range[0] && item.range[1] === p.range[1]) {
- return i;
- }
- }
- }
- return -1;
- }
-
- /**
- * @description Remove the item from the list and return it as a change object
- * @param {Array.<Object>} list The list of items to remove from
- * @param {Number} index The index to remove
- * @returns {Object} A change object containg the properties text, start and end
- */
- function removeIndexedItemChange(list, index, greedy, parent) {
- if (index < 0 || index > list.length) {
- return;
+ return -1;
}
- var node = list[index];
- if (list.length === 1) {
- return {
- "start": node.range[0],
- "end": parent ? parent.range[1] - 1 : node.range[1],
- "text": ""
- };
- } else if (index === list.length - 1) {
- return {
- "start": list[index - 1].range[1],
- "end": parent ? parent.range[1] - 1 : node.range[1],
- "text": ""
- };
- } else if (node) {
- if (index === 0) {
- if (list.length === 1) {
+
+ /**
+ * @description Remove the item from the list and return it as a change object
+ * @param {Array.<Object>} list The list of items to remove from
+ * @param {Number} index The index to remove
+ * @returns {Object} A change object containg the properties text, start and end
+ */
+ function removeIndexedItemChange(list, index, greedy, parent) {
+ if (index < 0 || index > list.length) {
+ return;
+ }
+ var node = list[index];
+ if (list.length === 1) {
+ return {
+ "start": node.range[0],
+ "end": parent ? parent.range[1] - 1 : node.range[1],
+ "text": ""
+ };
+ } else if (index === list.length - 1) {
+ return {
+ "start": list[index - 1].range[1],
+ "end": parent ? parent.range[1] - 1 : node.range[1],
+ "text": ""
+ };
+ } else if (node) {
+ if (index === 0) {
+ if (list.length === 1) {
+ return {
+ "start": node.range[0],
+ "end": node.range[1],
+ "text": ""
+ };
+ }
return {
"start": node.range[0],
- "end": node.range[1],
+ "end": list[index + 1].range[0],
"text": ""
};
}
- return {
- "start": node.range[0],
+ return greedy ? {
+ "start": list[index - 1].range[1],
"end": list[index + 1].range[0],
"text": ""
+ } : {
+ "start": list[index - 1].range[1],
+ "end": node.range[1],
+ "text": ""
};
}
- return greedy ? {
- "start": list[index - 1].range[1],
- "end": list[index + 1].range[0],
- "text": ""
- } : {
- "start": list[index - 1].range[1],
- "end": node.range[1],
- "text": ""
- };
+ return null;
}
- return null;
- }
- /**
- * @description Updates the JSDoc attached to the given AST node
- * @param {Object} node The AST node to update
- * @param {String} source The AST source
- * @param {String} name The name of the doc element to remove
- * @returns {Object} The change object or null
- */
- function updateDoc(node, source, name) {
- if(node.leadingComments && node.leadingComments.length > 0) {
- for(var i = node.leadingComments.length-1; i > -1; i--) {
- var comment = node.leadingComments[i];
- var edit = new RegExp("(\\s*[*]+\\s*(?:@param)\\s*(?:\\{.*\\})?\\s*(?:"+name+")+.*)").exec(comment.value); //$NON-NLS-1$ //$NON-NLS-2$
- if(edit) {
- var start = comment.range[0] + edit.index + getDocOffset(source, comment.range[0]);
- return {"start" : start, "end" :start+edit[1].length, "text" : ''};
- }
- }
- }
- return null;
- }
+ /**
+ * @description Updates the JSDoc attached to the given AST node
+ * @param {Object} node The AST node to update
+ * @param {String} source The AST source
+ * @param {String} name The name of the doc element to remove
+ * @returns {Object} The change object or null
+ */
+ function updateDoc(node, source, name) {
+ if(node.leadingComments && node.leadingComments.length > 0) {
+ for(var i = node.leadingComments.length-1; i > -1; i--) {
+ var comment = node.leadingComments[i];
+ var edit = new RegExp("(\\s*[*]+\\s*(?:@param)\\s*(?:\\{.*\\})?\\s*(?:"+name+")+.*)").exec(comment.value); //$NON-NLS-1$ //$NON-NLS-2$
+ if(edit) {
+ var start = comment.range[0] + edit.index + getDocOffset(source, comment.range[0]);
+ return {"start" : start, "end" :start+edit[1].length, "text" : ''};
+ }
+ }
+ }
+ return null;
+ }
- /**
- * @description Returns if the JSDoc attached to the given node has any of the given tags
- * @param {Array.<String>} tags The array of tags
- * @param {Object} node The AST node
- * @returns {Boolean} If the doc attached to the given node has one of the given tags
- */
- function hasDocTag(tags, node) {
- // tags contains all tags that have to be checked
- if(node.leadingComments) {
- for(var i = 0; i < node.leadingComments.length; i++) {
- var comment = node.leadingComments[i];
- for (var j = 0, len = tags.length; j < len; j++) {
- var tag = tags[j];
- if(comment.value.indexOf(tag) > -1) {
- return true;
- }
+ /**
+ * @description Returns if the JSDoc attached to the given node has any of the given tags
+ * @param {Array.<String>} tags The array of tags
+ * @param {Object} node The AST node
+ * @returns {Boolean} If the doc attached to the given node has one of the given tags
+ */
+ function hasDocTag(tags, node) {
+ // tags contains all tags that have to be checked
+ if(node.leadingComments) {
+ for(var i = 0; i < node.leadingComments.length; i++) {
+ var comment = node.leadingComments[i];
+ for (var j = 0, len = tags.length; j < len; j++) {
+ var tag = tags[j];
+ if(comment.value.indexOf(tag) > -1) {
+ return true;
+ }
+ }
}
+ }
+ return false;
+ }
+
+ /**
+ * @description Computes where the eslint directive should be inserted relative to the given node
+ * @param {Object} node The AST node
+ * @returns {Number} The insertion point
+ */
+ function getDirectiveInsertionPoint(node) {
+ if(node.type === 'Program' && node.body && node.body.length > 0) {
+ var n = node.body[0];
+ var val = -1;
+ switch(n.type) {
+ case 'FunctionDeclaration': {
+ val = getCommentStart(n);
+ if(val > -1) {
+ return val;
+ }
+ //TODO see https://github.com/jquery/esprima/issues/1071
+ val = getCommentStart(n.id);
+ if(val > -1) {
+ return val;
+ }
+ return n.range[0];
+ }
+ case 'ExpressionStatement': {
+ if(n.expression && n.expression.right && n.expression.right.type === 'FunctionExpression') {
+ val = getCommentStart(n);
+ if(val > -1) {
+ return val;
+ }
+ //TODO see https://github.com/jquery/esprima/issues/1071
+ val = getCommentStart(n.expression.left);
+ if(val > -1) {
+ return val;
+ }
+ return n.range[0];
+ }
+ return n.range[0];
+ }
+ }
+ }
+ return node.range[0];
+ }
+
+ /**
+ * @description Returns the offset to use when inserting a comment directive
+ * @param {Object} node The node to check for comments
+ * @returns {Number} The offset to insert the comment
+ */
+ function getCommentStart(node) {
+ if(node.leadingComments && node.leadingComments.length > 0) {
+ var comment = node.leadingComments[node.leadingComments.length-1];
+ if(/(?:@param|@return|@returns|@type|@constructor|@name|@description)/ig.test(comment.value)) {
+ //if the immediate comment has any of the tags we use for inferencing, add the directive before it instead of after
+ return comment.range[0];
+ }
}
- }
- return false;
- }
-
- /**
- * @description Computes where the eslint directive should be inserted relative to the given node
- * @param {Object} node The AST node
- * @returns {Number} The insertion point
- */
- function getDirectiveInsertionPoint(node) {
- if(node.type === 'Program' && node.body && node.body.length > 0) {
- var n = node.body[0];
- var val = -1;
- switch(n.type) {
- case 'FunctionDeclaration': {
- val = getCommentStart(n);
- if(val > -1) {
- return val;
- }
- //TODO see https://github.com/jquery/esprima/issues/1071
- val = getCommentStart(n.id);
- if(val > -1) {
- return val;
- }
- return n.range[0];
- }
- case 'ExpressionStatement': {
- if(n.expression && n.expression.right && n.expression.right.type === 'FunctionExpression') {
- val = getCommentStart(n);
- if(val > -1) {
- return val;
- }
- //TODO see https://github.com/jquery/esprima/issues/1071
- val = getCommentStart(n.expression.left);
- if(val > -1) {
- return val;
- }
- return n.range[0];
- }
- return n.range[0];
- }
- }
- }
- return node.range[0];
- }
-
- /**
- * @description Returns the offset to use when inserting a comment directive
- * @param {Object} node The node to check for comments
- * @returns {Number} The offset to insert the comment
- */
- function getCommentStart(node) {
- if(node.leadingComments && node.leadingComments.length > 0) {
- var comment = node.leadingComments[node.leadingComments.length-1];
- if(/(?:@param|@return|@returns|@type|@constructor|@name|@description)/ig.test(comment.value)) {
- //if the immediate comment has any of the tags we use for inferencing, add the directive before it instead of after
- return comment.range[0];
- }
- }
- return -1;
- }
-
- var controlStatements = ['IfStatement', 'WhileStatement', 'ForStatement', 'ForInStatement', 'WithStatement', 'DoWhileStatement', 'ForOfStatement']; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
-
- /**
- * @description Walks the parents array and checks to see if there is a control statement as a direct parent
- * @param {Object} node The AST node to check
- * @returns {Object} The AST node that is a direct control statement parent of the given node, or null
- */
- function getControlStatementParent(node) {
- if(node && node.parents) {
- var i = node.parents.length-1,
- p = node.parents[i];
- while(p && i > -1) {
- if(controlStatements.indexOf(p.type) > -1) {
- return p;
+ return -1;
+ }
+
+ var controlStatements = ['IfStatement', 'WhileStatement', 'ForStatement', 'ForInStatement', 'WithStatement', 'DoWhileStatement', 'ForOfStatement']; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
+
+ /**
+ * @description Walks the parents array and checks to see if there is a control statement as a direct parent
+ * @param {Object} node The AST node to check
+ * @returns {Object} The AST node that is a direct control statement parent of the given node, or null
+ */
+ function getControlStatementParent(node) {
+ if(node && node.parents) {
+ var i = node.parents.length-1,
+ p = node.parents[i];
+ while(p && i > -1) {
+ if(controlStatements.indexOf(p.type) > -1) {
+ return p;
+ }
+ p = node.parents[--i];
}
- p = node.parents[--i];
+ }
+ else {
+ return null;
}
}
- else {
- return null;
- }
- }
-
- /**
- * Takes a quickfix implementation that can be applied to all fixes in a file and applies it to either all annotations (if multiple annotations provided) or
- * just to the single annotation. Handles applying all edits in a single UNDO step as well as setting the caret to the single selected annotation afterward.
- * @param {Array.<Object>} annotations Array of annotations to apply the fix to
- * @param {Function} createTextChange function to create a text edit object (text, start, end) for a given annotation
- */
- function applySingleFixToAll(annotations, createTextChange) {
- var edits = [];
- annotations.forEach(function(current) {
- var change = createTextChange(current);
- if(change) {
- if(Array.isArray(change)) {
- change.forEach(function(fix) {
- edits.push(fix);
- });
- } else {
- edits.push(change);
+
+ /**
+ * Takes a quickfix implementation that can be applied to all fixes in a file and applies it to either all annotations (if multiple annotations provided) or
+ * just to the single annotation. Handles applying all edits in a single UNDO step as well as setting the caret to the single selected annotation afterward.
+ * @param {Array.<Object>} annotations Array of annotations to apply the fix to
+ * @param {Function} createTextChange function to create a text edit object (text, start, end) for a given annotation
+ */
+ function applySingleFixToAll(annotations, createTextChange) {
+ var edits = [];
+ annotations.forEach(function(current) {
+ var change = createTextChange(current);
+ if(change) {
+ if(Array.isArray(change)) {
+ change.forEach(function(fix) {
+ edits.push(fix);
+ });
+ } else {
+ edits.push(change);
+ }
}
+ });
+ // To use setText() with multiple selections they must be in range order
+ edits = edits.sort(function(a, b){
+ return a.start - b.start;
+ });
+ var mergedEdits = [];
+ var intersectedRange = false;
+ for (var i = 0; i < edits.length ; i++) {
+ if(i === edits.length - 1 && !intersectedRange){
+ mergedEdits.push(edits[i]);
+ break;
+ } else if (i === edits.length - 1) {
+ break;
+ }
+ var element = intersectedRange ? mergedEdits.pop() : edits[i];
+ var nextElement = edits[i+1];
+ if (element.end >= nextElement.start){
+ mergedEdits.push({
+ start: element.start,
+ end: nextElement.end,
+ text: element.text + nextElement.text
+ });
+ intersectedRange = true;
+ } else {
+ mergedEdits.push(element);
+ intersectedRange = false;
+ }
}
- });
- // To use setText() with multiple selections they must be in range order
- edits = edits.sort(function(a, b){
- return a.start - b.start;
- });
- var mergedEdits = [];
- var intersectedRange = false;
- for (var i = 0; i < edits.length ; i++) {
- if(i === edits.length - 1 && !intersectedRange){
- mergedEdits.push(edits[i]);
- break;
- } else if (i === edits.length - 1) {
- break;
- }
- var element = intersectedRange ? mergedEdits.pop() : edits[i];
- var nextElement = edits[i+1];
- if (element.end >= nextElement.start){
- mergedEdits.push({
- start: element.start,
- end: nextElement.end,
- text: element.text + nextElement.text
- });
- intersectedRange = true;
- } else {
- mergedEdits.push(element);
- intersectedRange = false;
- }
-
+ return mergedEdits;
}
- return mergedEdits;
- }
-});
+ });
diff --git a/bundles/org.eclipse.orion.client.javascript/web/js-tests/javascript/quickfixTests.js b/bundles/org.eclipse.orion.client.javascript/web/js-tests/javascript/quickfixTests.js
index 14673e1..b08b054 100644
--- a/bundles/org.eclipse.orion.client.javascript/web/js-tests/javascript/quickfixTests.js
+++ b/bundles/org.eclipse.orion.client.javascript/web/js-tests/javascript/quickfixTests.js
@@ -1,9 +1,9 @@
/*******************************************************************************
* @license
* Copyright (c) 2014, 2016 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials are made
- * available under the terms of the Eclipse Public License v1.0
- * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
+ * All rights reserved. This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License v1.0
+ * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution
* License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html).
*
* Contributors:
@@ -25,17 +25,17 @@ define([
'mocha/mocha', //must stay at the end, not a module
], function(QuickFixes, Validator, chai, Deferred, ASTManager, CUProvider, RenameCommand, GenerateDocCommand, mServiceRegistry, JSProject) {
var assert = chai.assert;
-
+
return function(worker) {
describe('Quick Fix Tests',function() {
this.timeout(10000);
before('Reset Tern Server', function(done) {
worker.start(done); // Reset the tern server state to remove any prior files
});
-
+
/**
* @description Sets up the test
- *
+ *
* Supported options include:
* - `buffer` - the source to process
* - `contentType` - the content type to load, defaults to application/javascript if not specified
@@ -70,15 +70,15 @@ define([
}
return new Deferred().resolve(buffer.slice(start, end));
},
-
+
setText: function(text, start, end) {
return new Deferred().resolve(assertFixes(text, start, end, options.expected));
},
-
+
getSelections: function(){
return new Deferred().resolve([]);
},
-
+
getFileMetadata:function() {
var o = Object.create(null);
o.contentType = Object.create(null);
@@ -107,7 +107,7 @@ define([
loc: loc
};
}
-
+
/**
* @callback from Mocha after each test run
*/
@@ -115,7 +115,7 @@ define([
CUProvider.onModelChanging({file: {location: 'quickfix_test_script.js'}});
CUProvider.onModelChanging({file: {location: 'quickfix_test_script.html'}});
});
-
+
/**
* @description Checks the state of the linked models
* @param {Object} linkedModel The linked model from the platform
@@ -150,7 +150,7 @@ define([
worker.getTestState().callback(err);
}
}
-
+
/**
* @description Runs the validator on the given options and computes fixes for those problems
* @param {Object} options {buffer, contentType, rule}
@@ -221,7 +221,7 @@ define([
worker.getTestState().callback(error);
});
}
-
+
/**
* @description Compares the computed fixes set against the expected ones
* @param {Array.<orion.Fix>} computed The computed set of fixes
@@ -234,7 +234,7 @@ define([
assert(Array.isArray(computed.text), "Expected multiple quick fix text edits");
assert(Array.isArray(computed.selection), "Expected multiple quick fix selections");
assert.equal(computed.text.length, expected.length, "Wrong number of quick fix text edits");
- assert.equal(computed.selection.length, expected.length, "Wrong number of quick fix selections");
+ assert.equal(computed.selection.length, expected.length, "Wrong number of quick fix selections");
for (var i=0; i<expected.length; i++) {
assert(computed.text[i] === expected[i].value, 'The fix: \"'+computed.text[i]+'\" does not match the expected fix of: \"'+expected[i].value + '\"');
assert.equal(computed.selection[i].start, expected[i].start, 'The fix starts do not match');
@@ -311,7 +311,7 @@ define([
expected: expected,
callback: done
});
- });
+ });
it("function declaration params", function(done) {
var rule = createTestRule("missing-doc");
var expected = {
@@ -1391,7 +1391,7 @@ define([
};
return getFixes({
buffer: "debugger",
- rule: rule,
+ rule: rule,
expected: expected,
callback: done
});
@@ -1405,7 +1405,7 @@ define([
};
return getFixes({
buffer: "debugger;",
- rule: rule,
+ rule: rule,
expected: expected,
callback: done
});
@@ -1418,7 +1418,7 @@ define([
];
return getFixes({
buffer: "debugger\ndebugger",
- rule: rule,
+ rule: rule,
expected: expected,
callback: done
});
@@ -1431,7 +1431,7 @@ define([
];
return getFixes({
buffer: "debugger;\ndebugger;",
- rule: rule,
+ rule: rule,
expected: expected,
callback: done
});
@@ -1439,13 +1439,13 @@ define([
it("no-debugger semicolon mixed multi", function(done) {
var rule = createTestRule("no-debugger");
var expected = [
- {value: "", start: 0, end: 8},
+ {value: "", start: 0, end: 8},
{value: "", start: 9, end: 18},
{value: "", start: 19, end: 27}
];
return getFixes({
buffer: "debugger\ndebugger;\ndebugger",
- rule: rule,
+ rule: rule,
expected: expected,
callback: done
});
@@ -2029,9 +2029,9 @@ define([
it("Test no-comma-dangle-1", function(callback) {
var rule = createTestRule('no-comma-dangle');
var expected = {value: "",
- start: 15,
+ start: 15,
end: 16};
- return getFixes({buffer: 'f({one:1, two:2,});',
+ return getFixes({buffer: 'f({one:1, two:2,});',
rule: rule,
expected: expected,
callback: callback});
@@ -2039,9 +2039,9 @@ define([
it("Test no-comma-dangle-2", function(callback) {
var rule = createTestRule('no-comma-dangle');
var expected = {value: "",
- start: 21,
+ start: 21,
end: 22};
- return getFixes({buffer: 'var f = {one:1, two:2,};',
+ return getFixes({buffer: 'var f = {one:1, two:2,};',
rule: rule,
expected: expected,
callback: callback});
@@ -2049,9 +2049,9 @@ define([
it("Test no-comma-dangle-3", function(callback) {
var rule = createTestRule('no-comma-dangle');
var expected = {value: "",
- start: 22,
+ start: 22,
end: 23};
- return getFixes({buffer: 'var f = [{one:1, two:2,}];',
+ return getFixes({buffer: 'var f = [{one:1, two:2,}];',
rule: rule,
expected: expected,
callback: callback});
@@ -2059,9 +2059,9 @@ define([
it("Test no-comma-dangle-html-1", function(callback) {
var rule = createTestRule('no-comma-dangle');
var expected = {value: "",
- start: 35,
+ start: 35,
end: 36};
- return getFixes({buffer: '<html><head><script>f({one:1, two:2,});</script></head></html>',
+ return getFixes({buffer: '<html><head><script>f({one:1, two:2,});</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2070,9 +2070,9 @@ define([
it("Test no-comma-dangle-html-2", function(callback) {
var rule = createTestRule('no-comma-dangle');
var expected = {value: "",
- start: 41,
+ start: 41,
end: 42};
- return getFixes({buffer: '<html><head><script>var f = {one:1, two:2,};</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var f = {one:1, two:2,};</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2081,9 +2081,9 @@ define([
it("Test no-comma-dangle-html-3", function(callback) {
var rule = createTestRule('no-comma-dangle');
var expected = {value: "",
- start: 42,
+ start: 42,
end: 43};
- return getFixes({buffer: '<html><head><script>var f = [{one:1, two:2,}];</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var f = [{one:1, two:2,}];</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2092,9 +2092,9 @@ define([
it("Test no-comma-dangle-html-4", function(callback) {
var rule = createTestRule('no-comma-dangle');
var expected = {value: "",
- start: 59,
+ start: 59,
end: 60};
- return getFixes({buffer: '<html><head><script></script><script>var f = [{one:1, two:2,}];</script></head></html>',
+ return getFixes({buffer: '<html><head><script></script><script>var f = [{one:1, two:2,}];</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2104,13 +2104,13 @@ define([
var rule = createTestRule('no-comma-dangle');
var expected = [
{value: "",
- start: 15,
+ start: 15,
end: 16},
{value: "",
- start: 35,
+ start: 35,
end: 36}
];
- return getFixes({buffer: 'f({one:1, two:2,}); f({one:1, two:2,});',
+ return getFixes({buffer: 'f({one:1, two:2,}); f({one:1, two:2,});',
rule: rule,
expected: expected,
callback: callback});
@@ -2119,13 +2119,13 @@ define([
var rule = createTestRule('no-comma-dangle');
var expected = [
{value: "",
- start: 15,
+ start: 15,
end: 16},
{value: "",
- start: 41,
+ start: 41,
end: 42}
];
- return getFixes({buffer: 'f({one:1, two:2,});\nvar f = {one:1, two:2,};',
+ return getFixes({buffer: 'f({one:1, two:2,});\nvar f = {one:1, two:2,};',
rule: rule,
expected: expected,
callback: callback});
@@ -2134,16 +2134,16 @@ define([
var rule = createTestRule('no-comma-dangle');
var expected = [
{value: "",
- start: 15,
+ start: 15,
end: 16},
{value: "",
- start: 41,
+ start: 41,
end: 42},
{value: "",
- start: 67,
+ start: 67,
end: 68}
];
- return getFixes({buffer: 'f({one:1, two:2,}); var f = {one:1, two:2,}; var f = [{one:1, two:2,}];',
+ return getFixes({buffer: 'f({one:1, two:2,}); var f = {one:1, two:2,}; var f = [{one:1, two:2,}];',
rule: rule,
expected: expected,
callback: callback});
@@ -2154,42 +2154,42 @@ define([
it("Test no-empty-block-1", function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 14,
+ start: 14,
end: 14};
- return getFixes({buffer: 'function f() {}',
+ return getFixes({buffer: 'function f() {}',
rule: rule,
expected: expected,
callback: callback});
});
-
+
it("Test no-empty-block-2",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 39,
+ start: 39,
end: 39};
- return getFixes({buffer: 'var f = {f: function() { function q() {}}}',
+ return getFixes({buffer: 'var f = {f: function() { function q() {}}}',
rule: rule,
expected: expected,
callback: callback});
});
-
+
it("Test no-empty-block-3",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 25,
+ start: 25,
end: 25};
- return getFixes({buffer: 'var f = { f: function() {}};',
+ return getFixes({buffer: 'var f = { f: function() {}};',
rule: rule,
expected: expected,
callback: callback});
});
-
+
it("Test no-empty-block-4",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 10,
+ start: 10,
end: 10};
- return getFixes({buffer: 'while(f) {}',
+ return getFixes({buffer: 'while(f) {}',
rule: rule,
expected: expected,
callback: callback});
@@ -2197,9 +2197,9 @@ define([
it("Test no-empty-block-5",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 7,
+ start: 7,
end: 7};
- return getFixes({buffer: 'if(f) {}',
+ return getFixes({buffer: 'if(f) {}',
rule: rule,
expected: expected,
callback: callback});
@@ -2207,9 +2207,9 @@ define([
it("Test no-empty-block-6",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 17,
+ start: 17,
end: 17};
- return getFixes({buffer: 'if(f) {while(f) {}}',
+ return getFixes({buffer: 'if(f) {while(f) {}}',
rule: rule,
expected: expected,
callback: callback});
@@ -2217,45 +2217,45 @@ define([
it("Test no-empty-block-html-1",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 34,
+ start: 34,
end: 34};
- return getFixes({buffer: '<html><head><script>function f() {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>function f() {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
contentType: 'text/html'});
});
-
+
it("Test no-empty-block-html-2",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 59,
+ start: 59,
end: 59};
- return getFixes({buffer: '<html><head><script>var f = {f: function() { function q() {}}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var f = {f: function() { function q() {}}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
contentType: 'text/html'});
});
-
+
it("Test no-empty-block-html-3",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 45,
+ start: 45,
end: 45};
- return getFixes({buffer: '<html><head><script>var f = { f: function() {}};</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var f = { f: function() {}};</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
contentType: 'text/html'});
});
-
+
it("Test no-empty-block-html-4",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 30,
+ start: 30,
end: 30};
- return getFixes({buffer: '<html><head><script>while(f) {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>while(f) {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2264,9 +2264,9 @@ define([
it("Test no-empty-block-html-5",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 27,
+ start: 27,
end: 27};
- return getFixes({buffer: '<html><head><script>if(f) {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>if(f) {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2275,9 +2275,9 @@ define([
it("Test no-empty-block-html-6",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 37,
+ start: 37,
end: 37};
- return getFixes({buffer: '<html><head><script>if(f) {while(f) {}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>if(f) {while(f) {}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2286,9 +2286,9 @@ define([
it("Test no-empty-block-html-7",function(callback) {
var rule = createTestRule('no-empty-block');
var expected = {value: "//TODO empty block",
- start: 54,
+ start: 54,
end: 54};
- return getFixes({buffer: '<html><head><script></script><script>if(f) {while(f) {}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script></script><script>if(f) {while(f) {}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2301,13 +2301,13 @@ define([
var rule = createTestRule('no-extra-parens', 2, {"conditionalAssign": false, "returnAssign": false, "nestedBinaryExpressions": true});
var expected = [
{value: "",
- start: 10,
+ start: 10,
end: 11},
{value: "",
- start: 12,
+ start: 12,
end: 13}
];
- return getFixes({buffer: 'if (a === (b)){}',
+ return getFixes({buffer: 'if (a === (b)){}',
rule: rule,
expected: expected,
callback: callback});
@@ -2316,13 +2316,13 @@ define([
var rule = createTestRule('no-extra-parens');
var expected = [
{value: " ",
- start: 10,
+ start: 10,
end: 11},
{value: "",
- start: 12,
+ start: 12,
end: 13}
];
- return getFixes({buffer: 'if (typeof(a) === "object"){}',
+ return getFixes({buffer: 'if (typeof(a) === "object"){}',
rule: rule,
expected: expected,
callback: callback});
@@ -2331,13 +2331,13 @@ define([
var rule = createTestRule('no-extra-parens');
var expected = [
{value: "",
- start: 10,
+ start: 10,
end: 11},
{value: "",
- start: 13,
+ start: 13,
end: 14}
];
- return getFixes({buffer: 'if (typeof( a) === "object"){}',
+ return getFixes({buffer: 'if (typeof( a) === "object"){}',
rule: rule,
expected: expected,
callback: callback});
@@ -2346,13 +2346,13 @@ define([
var rule = createTestRule('no-extra-parens');
var expected = [
{value: "",
- start: 11,
+ start: 11,
end: 12},
{value: "",
- start: 13,
+ start: 13,
end: 14}
];
- return getFixes({buffer: 'if (typeof (a) === "object"){}',
+ return getFixes({buffer: 'if (typeof (a) === "object"){}',
rule: rule,
expected: expected,
callback: callback});
@@ -2361,19 +2361,19 @@ define([
var rule = createTestRule('no-extra-parens');
var expected = [
{value: "",
- start: 8,
+ start: 8,
end: 9},
{value: "",
- start: 12,
+ start: 12,
end: 13},
{value: "",
- start: 23,
+ start: 23,
end: 24},
{value: "",
- start: 27,
+ start: 27,
end: 28}
];
- return getFixes({buffer: 'var a = (1+1);\nvar b = (1-1);',
+ return getFixes({buffer: 'var a = (1+1);\nvar b = (1-1);',
rule: rule,
expected: expected,
callback: callback});
@@ -2382,19 +2382,19 @@ define([
var rule = createTestRule('no-extra-parens', 2, {"conditionalAssign": false, "returnAssign": false, "nestedBinaryExpressions": true});
var expected = [
{value: "",
- start: 8,
+ start: 8,
end: 10},
{value: "",
- start: 11,
+ start: 11,
end: 12},
{value: "",
- start: 13,
+ start: 13,
end: 14},
{value: "",
- start: 15,
+ start: 15,
end: 17},
];
- return getFixes({buffer: 'var a = ((1)+(1));',
+ return getFixes({buffer: 'var a = ((1)+(1));',
rule: rule,
expected: expected,
callback: callback});
@@ -2404,13 +2404,13 @@ define([
var rule = createTestRule('no-extra-parens');
var expected = [
{value: "",
- start: 10,
+ start: 10,
end: 11},
{value: "",
- start: 12,
+ start: 12,
end: 13},
];
- return getFixes({buffer: 'var a = (((1)));',
+ return getFixes({buffer: 'var a = (((1)));',
rule: rule,
expected: expected,
callback: callback});
@@ -2419,13 +2419,13 @@ define([
var rule = createTestRule('no-extra-parens', 2, {"conditionalAssign": false, "returnAssign": false, "nestedBinaryExpressions": true});
var expected = [
{value: "",
- start: 18,
+ start: 18,
end: 19},
{value: "",
- start: 20,
+ start: 20,
end: 21}
];
- return getFixes({buffer: '<script>if (a === (b)){}</script>',
+ return getFixes({buffer: '<script>if (a === (b)){}</script>',
rule: rule,
expected: expected,
callback: callback,
@@ -2435,13 +2435,13 @@ define([
var rule = createTestRule('no-extra-parens');
var expected = [
{value: " ",
- start: 18,
+ start: 18,
end: 19},
{value: "",
- start: 20,
+ start: 20,
end: 21}
];
- return getFixes({buffer: '<script>if (typeof(a) === "object"){}</script>',
+ return getFixes({buffer: '<script>if (typeof(a) === "object"){}</script>',
rule: rule,
expected: expected,
callback: callback,
@@ -2451,19 +2451,19 @@ define([
var rule = createTestRule('no-extra-parens');
var expected = [
{value: "",
- start: 16,
+ start: 16,
end: 17},
{value: "",
- start: 20,
+ start: 20,
end: 21},
{value: "",
- start: 31,
+ start: 31,
end: 32},
{value: "",
- start: 35,
+ start: 35,
end: 36}
];
- return getFixes({buffer: '<script>var a = (1+1);\nvar b = (1-1);</script>',
+ return getFixes({buffer: '<script>var a = (1+1);\nvar b = (1-1);</script>',
rule: rule,
expected: expected,
callback: callback,
@@ -2473,19 +2473,19 @@ define([
var rule = createTestRule('no-extra-parens', 2, {"conditionalAssign": false, "returnAssign": false, "nestedBinaryExpressions": true});
var expected = [
{value: "",
- start: 16,
+ start: 16,
end: 18},
{value: "",
- start: 19,
+ start: 19,
end: 20},
{value: "",
- start: 21,
+ start: 21,
end: 22},
{value: "",
- start: 23,
+ start: 23,
end: 25},
];
- return getFixes({buffer: '<script>var a = ((1)+(1));</script>',
+ return getFixes({buffer: '<script>var a = ((1)+(1));</script>',
rule: rule,
expected: expected,
callback: callback,
@@ -2495,13 +2495,13 @@ define([
var rule = createTestRule('no-extra-parens', 2, {"conditionalAssign": false, "returnAssign": false, "nestedBinaryExpressions": true});
var expected = [
{value: "",
- start: 10,
+ start: 10,
end: 11},
{value: "",
- start: 14,
+ start: 14,
end: 15}
];
- return getFixes({buffer: 'if (a === (\nb\n)){}',
+ return getFixes({buffer: 'if (a === (\nb\n)){}',
rule: rule,
expected: expected,
callback: callback});
@@ -2510,13 +2510,13 @@ define([
var rule = createTestRule('no-extra-parens', 2, {"conditionalAssign": false, "returnAssign": false, "nestedBinaryExpressions": true});
var expected = [
{value: "",
- start: 10,
+ start: 10,
end: 11},
{value: "",
- start: 13,
+ start: 13,
end: 14}
];
- return getFixes({buffer: 'if (a === (b )){}',
+ return getFixes({buffer: 'if (a === (b )){}',
rule: rule,
expected: expected,
callback: callback});
@@ -2527,9 +2527,9 @@ define([
it("Test no-extra-semi-1",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 15,
+ start: 15,
end: 16};
- return getFixes({buffer: 'function f() {};',
+ return getFixes({buffer: 'function f() {};',
rule: rule,
expected: expected,
callback: callback});
@@ -2537,9 +2537,9 @@ define([
it("Test no-extra-semi-2",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 13,
+ start: 13,
end: 14};
- return getFixes({buffer: 'var foo = 10;;',
+ return getFixes({buffer: 'var foo = 10;;',
rule: rule,
expected: expected,
callback: callback});
@@ -2547,9 +2547,9 @@ define([
it("Test no-extra-semi-3",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 13,
+ start: 13,
end: 14};
- return getFixes({buffer: 'var foo = {};;',
+ return getFixes({buffer: 'var foo = {};;',
rule: rule,
expected: expected,
callback: callback});
@@ -2557,9 +2557,9 @@ define([
it("Test no-extra-semi-4",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 0,
+ start: 0,
end: 1};
- return getFixes({buffer: ';',
+ return getFixes({buffer: ';',
rule: rule,
expected: expected,
callback: callback});
@@ -2567,9 +2567,9 @@ define([
it("Test no-extra-semi-html-1",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 35,
+ start: 35,
end: 36};
- return getFixes({buffer: '<html><head><script>function f() {};</script></head></html>',
+ return getFixes({buffer: '<html><head><script>function f() {};</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2578,9 +2578,9 @@ define([
it("Test no-extra-semi-html-2",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 33,
+ start: 33,
end: 34};
- return getFixes({buffer: '<html><head><script>var foo = 10;;</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var foo = 10;;</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2589,9 +2589,9 @@ define([
it("Test no-extra-semi-html-3",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 33,
+ start: 33,
end: 34};
- return getFixes({buffer: '<html><head><script>var foo = {};;</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var foo = {};;</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2600,9 +2600,9 @@ define([
it("Test no-extra-semi-html-4",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 20,
+ start: 20,
end: 21};
- return getFixes({buffer: '<html><head><script>;</script></head></html>',
+ return getFixes({buffer: '<html><head><script>;</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2611,9 +2611,9 @@ define([
it("Test no-extra-semi-html-5",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 37,
+ start: 37,
end: 38};
- return getFixes({buffer: '<html><head><script></script><script>;</script></head></html>',
+ return getFixes({buffer: '<html><head><script></script><script>;</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2623,13 +2623,13 @@ define([
var rule = createTestRule('no-extra-semi');
var expected = [
{value: "",
- start: 15,
+ start: 15,
end: 16},
{value: "",
- start: 32,
+ start: 32,
end: 33}
];
- return getFixes({buffer: 'function f() {}; function g() {};',
+ return getFixes({buffer: 'function f() {}; function g() {};',
rule: rule,
expected: expected,
callback: callback});
@@ -2638,10 +2638,10 @@ define([
var rule = createTestRule('no-extra-semi');
var expected = [
{value: "",
- start: 11,
+ start: 11,
end: 14}
];
- return getFixes({buffer: 'var a = 10;;;;',
+ return getFixes({buffer: 'var a = 10;;;;',
rule: rule,
expected: expected,
callback: callback});
@@ -2650,10 +2650,10 @@ define([
var rule = createTestRule('no-extra-semi');
var expected = [
{value: "",
- start: 14,
+ start: 14,
end: 17}
];
- return getFixes({buffer: 'function f(){};;;',
+ return getFixes({buffer: 'function f(){};;;',
rule: rule,
expected: expected,
callback: callback});
@@ -2662,19 +2662,19 @@ define([
var rule = createTestRule('no-extra-semi');
var expected = [
{value: "",
- start: 0,
+ start: 0,
end: 1},
{value: "",
- start: 17,
+ start: 17,
end: 18},
{value: "",
- start: 29,
+ start: 29,
end: 30},
{value: "",
- start: 42,
+ start: 42,
end: 43}
];
- return getFixes({buffer: '; function f() {}; var a = 0;; var b = {};;',
+ return getFixes({buffer: '; function f() {}; var a = 0;; var b = {};;',
rule: rule,
expected: expected,
callback: callback});
@@ -2683,10 +2683,10 @@ define([
var rule = createTestRule('no-extra-semi');
var expected = [
{value: "",
- start: 18,
+ start: 18,
end: 21}
];
- return getFixes({buffer: '<script>var a = 0;;;;</script>',
+ return getFixes({buffer: '<script>var a = 0;;;;</script>',
rule: rule,
expected: expected,
callback: callback,
@@ -2695,9 +2695,9 @@ define([
it("Test no-extra-semi-2",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 13,
+ start: 13,
end: 14};
- return getFixes({buffer: 'var foo = 10;;',
+ return getFixes({buffer: 'var foo = 10;;',
rule: rule,
expected: expected,
callback: callback});
@@ -2705,9 +2705,9 @@ define([
it("Test no-extra-semi-3",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 13,
+ start: 13,
end: 14};
- return getFixes({buffer: 'var foo = {};;',
+ return getFixes({buffer: 'var foo = {};;',
rule: rule,
expected: expected,
callback: callback});
@@ -2715,25 +2715,25 @@ define([
it("Test no-extra-semi-4",function(callback) {
var rule = createTestRule('no-extra-semi');
var expected = {value: "",
- start: 0,
+ start: 0,
end: 1};
- return getFixes({buffer: ';',
+ return getFixes({buffer: ';',
rule: rule,
expected: expected,
callback: callback});
});
-
-
-
+
+
+
});
//NO-FALLTHROUGH
describe("no-fallthrough", function() {
it("Test no-fallthrough-1",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "//$FALLTHROUGH$",
- start: 30,
+ start: 30,
end: 30};
- return getFixes({buffer: 'switch(num) {case 1:{code();} case 2:{}}',
+ return getFixes({buffer: 'switch(num) {case 1:{code();} case 2:{}}',
rule: rule,
expected: expected,
callback: callback});
@@ -2741,9 +2741,9 @@ define([
it("Test no-fallthrough-2",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "//$FALLTHROUGH$",
- start: 46,
+ start: 46,
end: 46};
- return getFixes({buffer: 'switch(num) {case 1:{break;} case 2:{code();} default: {}}',
+ return getFixes({buffer: 'switch(num) {case 1:{break;} case 2:{code();} default: {}}',
rule: rule,
expected: expected,
callback: callback});
@@ -2751,9 +2751,9 @@ define([
it("Test no-fallthrough-html-1",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "//$FALLTHROUGH$",
- start: 50,
+ start: 50,
end: 50};
- return getFixes({buffer: '<html><head><script>switch(num) {case 1:{code();} case 2:{}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>switch(num) {case 1:{code();} case 2:{}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2762,9 +2762,9 @@ define([
it("Test no-fallthrough-html-2",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "//$FALLTHROUGH$",
- start: 66,
+ start: 66,
end: 66};
- return getFixes({buffer: '<html><head><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2773,9 +2773,9 @@ define([
it("Test no-fallthrough-html-3",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "//$FALLTHROUGH$",
- start: 83,
+ start: 83,
end: 83};
- return getFixes({buffer: '<html><head><script></script><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script></script><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2784,9 +2784,9 @@ define([
it("Test no-fallthrough-break-1",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "break;",
- start: 30,
+ start: 30,
end: 30};
- return getFixes({buffer: 'switch(num) {case 1:{code();} case 2:{}}',
+ return getFixes({buffer: 'switch(num) {case 1:{code();} case 2:{}}',
rule: rule,
expected: expected,
callback: callback,
@@ -2795,9 +2795,9 @@ define([
it("Test no-fallthrough-break-2",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "break;",
- start: 46,
+ start: 46,
end: 46};
- return getFixes({buffer: 'switch(num) {case 1:{break;} case 2:{code();} default: {}}',
+ return getFixes({buffer: 'switch(num) {case 1:{break;} case 2:{code();} default: {}}',
rule: rule,
expected: expected,
callback: callback,
@@ -2806,9 +2806,9 @@ define([
it("Test no-fallthrough-break-html-1",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "break;",
- start: 50,
+ start: 50,
end: 50};
- return getFixes({buffer: '<html><head><script>switch(num) {case 1:{code();} case 2:{}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>switch(num) {case 1:{code();} case 2:{}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2818,9 +2818,9 @@ define([
it("Test no-fallthrough-break-html-2",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "break;",
- start: 66,
+ start: 66,
end: 66};
- return getFixes({buffer: '<html><head><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -2830,9 +2830,9 @@ define([
it("Test no-fallthrough-break-html-3",function(callback) {
var rule = createTestRule('no-fallthrough');
var expected = {value: "break;",
- start: 83,
+ start: 83,
end: 83};
- return getFixes({buffer: '<html><head><script></script><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script></script><script>switch(num) {case 1:{break;} case 2:{code();} default: {}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3007,9 +3007,9 @@ define([
it("Test no-undef-defined-existing-doc",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*globals aa:true */",
- start: 0,
+ start: 0,
end: 0};
- return getFixes({buffer: '/** @returns {Object} */ function f() {aa = 10;}',
+ return getFixes({buffer: '/** @returns {Object} */ function f() {aa = 10;}',
rule: rule,
expected: expected,
callback: callback});
@@ -3020,9 +3020,9 @@ define([
it("Test no-undef-defined-existing-doc 2",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*globals aa:true */",
- start: 25,
+ start: 25,
end: 25};
- return getFixes({buffer: '/** just some comment */ function f() {aa = 10;}',
+ return getFixes({buffer: '/** just some comment */ function f() {aa = 10;}',
rule: rule,
expected: expected,
callback: callback});
@@ -3033,9 +3033,9 @@ define([
it("Test no-undef-defined-existing-doc 3",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*globals Foo */",
- start: 0,
+ start: 0,
end: 0};
- return getFixes({buffer: '/** @returns {Object} */ Foo["bar"] =function() {};',
+ return getFixes({buffer: '/** @returns {Object} */ Foo["bar"] =function() {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3046,9 +3046,9 @@ define([
it("Test no-undef-defined-existing-doc 4",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*globals Foo */",
- start: 25,
+ start: 25,
end: 25};
- return getFixes({buffer: '/** just some comment */ Foo["bar"] =function() {};',
+ return getFixes({buffer: '/** just some comment */ Foo["bar"] =function() {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3056,10 +3056,10 @@ define([
it("Test no-undef-defined-1",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */",
- start: 0,
+ start: 0,
end: 0};
return getFixes(
- {buffer: 'console.log(10);',
+ {buffer: 'console.log(10);',
rule: rule,
expected: expected,
callback: callback});
@@ -3070,10 +3070,10 @@ define([
it("Test no-undef-defined-1a",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env node */",
- start: 0,
+ start: 0,
end: 0};
return getFixes(
- {buffer: 'var v = require("");\nconsole.log(10);',
+ {buffer: 'var v = require("");\nconsole.log(10);',
rule: rule,
pbcount: 2,
expected: expected,
@@ -3085,10 +3085,10 @@ define([
it("Test no-undef-defined-1b",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */",
- start: 0,
+ start: 0,
end: 0};
return getFixes(
- {buffer: 'define([], function() {console.log(10);});',
+ {buffer: 'define([], function() {console.log(10);});',
rule: rule,
pbcount: 2,
pbindex: 1,
@@ -3101,10 +3101,10 @@ define([
it("Test no-undef-defined-1c",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */",
- start: 0,
+ start: 0,
end: 0};
return getFixes(
- {buffer: 'define([], function(require) { var v = require("");\nconsole.log(10);});',
+ {buffer: 'define([], function(require) { var v = require("");\nconsole.log(10);});',
rule: rule,
pbcount: 2,
pbindex: 1,
@@ -3117,10 +3117,10 @@ define([
it("Test no-undef-defined-1d",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */",
- start: 0,
+ start: 0,
end: 0};
return getFixes(
- {buffer: 'define("", [], function() {console.log(10);});',
+ {buffer: 'define("", [], function() {console.log(10);});',
rule: rule,
pbcount: 2,
pbindex: 1,
@@ -3133,10 +3133,10 @@ define([
it("Test no-undef-defined-1e",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */",
- start: 0,
+ start: 0,
end: 0};
return getFixes(
- {buffer: 'define(function() {console.log(10);});',
+ {buffer: 'define(function() {console.log(10);});',
rule: rule,
pbcount: 2,
pbindex: 1,
@@ -3149,10 +3149,10 @@ define([
it("Test no-undef-defined-1f",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */",
- start: 0,
+ start: 0,
end: 0};
return getFixes(
- {buffer: 'require({}); console.log(10);',
+ {buffer: 'require({}); console.log(10);',
rule: rule,
pbcount: 2,
pbindex: 1,
@@ -3165,10 +3165,10 @@ define([
it("Test no-undef-defined-1g",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */",
- start: 0,
+ start: 0,
end: 0};
return getFixes(
- {buffer: 'require([""]); console.log(10);',
+ {buffer: 'require([""]); console.log(10);',
rule: rule,
pbcount: 2,
pbindex: 1,
@@ -3178,10 +3178,10 @@ define([
it("Test no-undef-defined-2",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*globals foo */",
- start: 0,
+ start: 0,
end: 0};
return getFixes(
- {buffer: 'foo(10);',
+ {buffer: 'foo(10);',
rule: rule,
expected: expected,
callback: callback});
@@ -3189,10 +3189,10 @@ define([
it("Test no-undef-defined-3",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "globals foo bar",
- start: 2,
+ start: 2,
end: 14};
return getFixes(
- {buffer: '/*globals foo */ foo(10); bar();',
+ {buffer: '/*globals foo */ foo(10); bar();',
rule: rule,
expected: expected,
callback: callback});
@@ -3200,9 +3200,9 @@ define([
it("Test no-undef-defined-4",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "globals bar foo:true",
- start: 2,
+ start: 2,
end: 13};
- return getFixes({buffer: '/*globals bar*/ foo++; bar();',
+ return getFixes({buffer: '/*globals bar*/ foo++; bar();',
rule: rule,
expected: expected,
callback: callback});
@@ -3210,9 +3210,9 @@ define([
it("Test no-undef-defined-5",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "globals bar foo:true",
- start: 2,
+ start: 2,
end: 13};
- return getFixes({buffer: '/*globals bar*/ foo = bar; bar();',
+ return getFixes({buffer: '/*globals bar*/ foo = bar; bar();',
rule: rule,
expected: expected,
callback: callback});
@@ -3220,9 +3220,9 @@ define([
it("Test no-undef-defined-eslint-env-4",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "eslint-env node, browser",
- start: 2,
+ start: 2,
end: 18};
- return getFixes({buffer: '/*eslint-env node */ console.log(10); window.open();',
+ return getFixes({buffer: '/*eslint-env node */ console.log(10); window.open();',
rule: rule,
expected: expected,
callback: callback});
@@ -3230,9 +3230,9 @@ define([
it("Test no-undef-defined-indent-1",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*globals foo */\n\t\t",
- start: 2,
+ start: 2,
end: 2};
- return getFixes({buffer: '\t\tfoo(10);',
+ return getFixes({buffer: '\t\tfoo(10);',
rule: rule,
expected: expected,
callback: callback});
@@ -3240,9 +3240,9 @@ define([
it("Test no-undef-defined-indent-2",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*globals foo */\n ",
- start: 4,
+ start: 4,
end: 4};
- return getFixes({buffer: ' foo(10);',
+ return getFixes({buffer: ' foo(10);',
rule: rule,
expected: expected,
callback: callback});
@@ -3250,9 +3250,9 @@ define([
it("Test no-undef-defined-indent-3",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*globals foo */\n\t \t",
- start: 4,
+ start: 4,
end: 4};
- return getFixes({buffer: '\t \tfoo(10);',
+ return getFixes({buffer: '\t \tfoo(10);',
rule: rule,
expected: expected,
callback: callback});
@@ -3260,9 +3260,9 @@ define([
it("Test no-undef-defined-indent-4",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */\n\t\t",
- start: 2,
+ start: 2,
end: 2};
- return getFixes({buffer: '\t\tconsole.log(10);',
+ return getFixes({buffer: '\t\tconsole.log(10);',
rule: rule,
expected: expected,
callback: callback});
@@ -3270,9 +3270,9 @@ define([
it("Test no-undef-defined-indent-5",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */\n ",
- start: 4,
+ start: 4,
end: 4};
- return getFixes({buffer: ' console.log(10);',
+ return getFixes({buffer: ' console.log(10);',
rule: rule,
expected: expected,
callback: callback});
@@ -3280,9 +3280,9 @@ define([
it("Test no-undef-defined-indent-6",function(callback) {
var rule = createTestRule('no-undef');
var expected = {value: "/*eslint-env browser */\n\t \t",
- start: 4,
+ start: 4,
end: 4};
- return getFixes({buffer: '\t \tconsole.log(10);',
+ return getFixes({buffer: '\t \tconsole.log(10);',
rule: rule,
expected: expected,
callback: callback});
@@ -3293,9 +3293,9 @@ define([
it("Navigate to definition in file",function(callback) {
var rule = createTestRule('no-undef-expression');
var expected = {file: 'quickfix_test_script.js',
- start: 8,
+ start: 8,
end: 15};
- return getFixes({buffer: 'var a = {b: ""}; var c = a; c.d();',
+ return getFixes({buffer: 'var a = {b: ""}; var c = a; c.d();',
rule: rule,
expected: expected,
callback: callback});
@@ -3309,7 +3309,7 @@ define([
var expected = {value: "",
start: 11,
end: 12};
- return getFixes({buffer: 'function f(p) {}',
+ return getFixes({buffer: 'function f(p) {}',
rule: rule,
expected: expected,
callback: callback});
@@ -3319,7 +3319,7 @@ define([
var expected = {value: "",
start: 12,
end: 16};
- return getFixes({buffer: 'function f(p, p2, p3) {p(); p3();}',
+ return getFixes({buffer: 'function f(p, p2, p3) {p(); p3();}',
rule: rule,
expected: expected,
callback: callback});
@@ -3329,7 +3329,7 @@ define([
var expected = {value: "",
start:16,
end:20};
- return getFixes({buffer: 'function f(p, p2, p3) {p(); p2();}',
+ return getFixes({buffer: 'function f(p, p2, p3) {p(); p2();}',
rule: rule,
expected: expected,
callback: callback});
@@ -3337,9 +3337,9 @@ define([
it("Test no-unused-params-4",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "/* @callback */",
- start: 11,
+ start: 11,
end: 11};
- return getFixes({buffer: 'define([], function(p, p2, p3) {p(); p2();});',
+ return getFixes({buffer: 'define([], function(p, p2, p3) {p(); p2();});',
rule: rule,
expected: expected,
callback: callback});
@@ -3347,9 +3347,9 @@ define([
it("Test no-unused-params-5",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "/**\n * @callback\n */",
- start: 10,
+ start: 10,
end: 10};
- return getFixes({buffer: 'var f = { one: function(p, p2, p3) {p(); p2();}};',
+ return getFixes({buffer: 'var f = { one: function(p, p2, p3) {p(); p2();}};',
rule: rule,
expected: expected,
callback: callback});
@@ -3360,9 +3360,9 @@ define([
it("Test no-unused-params-existing-doc-1",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "* @callback\n",
- start: 25,
+ start: 25,
end: 25};
- return getFixes({buffer: 'var f = { /**\n *@see\n *\n */\none: function(p, p2, p3) {p(); p2();}};',
+ return getFixes({buffer: 'var f = { /**\n *@see\n *\n */\none: function(p, p2, p3) {p(); p2();}};',
rule: rule,
expected: expected,
callback: callback});
@@ -3374,9 +3374,9 @@ define([
it("Test no-unused-params-assignment-1",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "* @callback\n",
- start: 4,
+ start: 4,
end: 4};
- return getFixes({buffer: '/** */a.b.c = function(p1) {};',
+ return getFixes({buffer: '/** */a.b.c = function(p1) {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3388,9 +3388,9 @@ define([
it("Test no-unused-params-assignment-2",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "* @callback\n",
- start: 4,
+ start: 4,
end: 4};
- return getFixes({buffer: '/** */f = function(p1) {};',
+ return getFixes({buffer: '/** */f = function(p1) {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3402,9 +3402,9 @@ define([
it("Test no-unused-params-assignment-3",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "* @callback\n",
- start: 4,
+ start: 4,
end: 4};
- return getFixes({buffer: '/** */var f = function(p1) {};',
+ return getFixes({buffer: '/** */var f = function(p1) {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3416,9 +3416,9 @@ define([
it("Test no-unused-params-assignment-4",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "* @callback\n",
- start: 16,
+ start: 16,
end: 16};
- return getFixes({buffer: 'var f = 10, /** */g = function(p1) {};',
+ return getFixes({buffer: 'var f = 10, /** */g = function(p1) {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3430,9 +3430,9 @@ define([
it("Test no-unused-params-assignment-5",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "/**\n * @callback\n */\n",
- start: 0,
+ start: 0,
end: 0};
- return getFixes({buffer: 'a.b.c = function(p1) {};',
+ return getFixes({buffer: 'a.b.c = function(p1) {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3444,9 +3444,9 @@ define([
it("Test no-unused-params-assignment-6",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "/**\n * @callback\n */\n",
- start: 0,
+ start: 0,
end: 0};
- return getFixes({buffer: 'f = function(p1) {};',
+ return getFixes({buffer: 'f = function(p1) {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3458,9 +3458,9 @@ define([
it("Test no-unused-params-assignment-7",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "/**\n * @callback\n */\n",
- start: 0,
+ start: 0,
end: 0};
- return getFixes({buffer: 'var f = function(p1) {};',
+ return getFixes({buffer: 'var f = function(p1) {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3472,9 +3472,9 @@ define([
it("Test no-unused-params-assignment-8",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "/**\n * @callback\n */\n",
- start: 12,
+ start: 12,
end: 12};
- return getFixes({buffer: 'var f = 10, g = function(p1) {};',
+ return getFixes({buffer: 'var f = 10, g = function(p1) {};',
rule: rule,
expected: expected,
callback: callback});
@@ -3485,9 +3485,9 @@ define([
it("Test no-unused-params-leading-line-comment-1",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "/**\n * @callback\n */\n ",
- start: 16,
+ start: 16,
end: 16};
- return getFixes({buffer: 'var f = {//foo\n one: function(p, p2, p3) {p(); p2();}};',
+ return getFixes({buffer: 'var f = {//foo\n one: function(p, p2, p3) {p(); p2();}};',
rule: rule,
expected: expected,
callback: callback});
@@ -3497,7 +3497,7 @@ define([
var expected = {value: "",
start: 31,
end: 32};
- return getFixes({buffer: '<html><head><script>function f(p) {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>function f(p) {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3508,7 +3508,7 @@ define([
var expected = {value: "",
start: 32,
end: 36};
- return getFixes({buffer: '<html><head><script>function f(p, p2, p3) {p(); p3();}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>function f(p, p2, p3) {p(); p3();}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3519,7 +3519,7 @@ define([
var expected = {value: "",
start:36,
end:40};
- return getFixes({buffer: '<html><head><script>function f(p, p2, p3) {p(); p2();}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>function f(p, p2, p3) {p(); p2();}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3528,9 +3528,9 @@ define([
it("Test no-unused-params-html-4",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "/* @callback */",
- start: 31,
+ start: 31,
end: 31};
- return getFixes({buffer: '<html><head><script>define([], function(p, p2, p3) {p(); p2();});</script></head></html>',
+ return getFixes({buffer: '<html><head><script>define([], function(p, p2, p3) {p(); p2();});</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3539,9 +3539,9 @@ define([
it("Test no-unused-params-html-5",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "/**\n * @callback\n */\n",
- start: 30,
+ start: 30,
end: 30};
- return getFixes({buffer: '<html><head><script>var f = { one: function(p, p2, p3) {p(); p2();}};</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var f = { one: function(p, p2, p3) {p(); p2();}};</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3553,22 +3553,22 @@ define([
it("Test no-unused-params-html-existing-doc-1",function(callback) {
var rule = createTestRule('no-unused-params');
var expected = {value: "* @callback",
- start: 45,
+ start: 45,
end: 45};
- return getFixes({buffer: '<html><head><script>var f = { /**\n *@see\n *\n */\none: function(p, p2, p3) {p(); p2();}};</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var f = { /**\n *@see\n *\n */\none: function(p, p2, p3) {p(); p2();}};</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
contentType: 'text/html'});
});
-
+
/**
* @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=488790
*/
it("Test no-unused-params-update-doc-1", function(callback){
var rule = createTestRule('no-unused-params');
var expected = [{value: '',
- start: 18,
+ start: 18,
end: 72},
{value:'',
start: 94,
@@ -3579,11 +3579,11 @@ define([
callback: callback,
fixid: "no-unused-params"});
});
-
+
it("Test no-unused-params-update-doc-2", function(callback){
var rule = createTestRule('no-unused-params');
var expected = [{value: '',
- start: 12,
+ start: 12,
end: 66},
{value:'',
start: 132,
@@ -3594,11 +3594,11 @@ define([
callback: callback,
fixid: "no-unused-params"});
});
-
+
it("Test no-unused-params-update-doc-3", function(callback){
var rule = createTestRule('no-unused-params');
var expected = [{value: '',
- start: 57,
+ start: 57,
end: 100},
{value:'',
start: 123,
@@ -3609,7 +3609,7 @@ define([
callback: callback,
fixid: "no-unused-params"});
});
-
+
/**
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=490109
*/
@@ -3631,7 +3631,7 @@ define([
callback: callback
});
});
-
+
it("Test no-unused-params-fix-all-2", function(callback){
var rule = createTestRule('no-unused-params');
var expected = [{
@@ -3650,7 +3650,7 @@ define([
callback: callback
});
});
-
+
it("Test no-unused-params-fix-all-3", function(callback){
var rule = createTestRule('no-unused-params');
var expected = [{
@@ -3669,7 +3669,7 @@ define([
callback: callback
});
});
-
+
it("Test no-unused-params-fix-all-4", function(callback){
var rule = createTestRule('no-unused-params');
var expected = [{
@@ -3685,7 +3685,7 @@ define([
fixid: "no-unused-params"
});
});
-
+
it("Test no-unused-params-fix-all-5", function(callback){
var rule = createTestRule('no-unused-params');
var expected = [{
@@ -3705,7 +3705,7 @@ define([
fixid: "no-unused-params"
});
});
-
+
it("Test no-unused-params-fix-all-6", function(callback){
var rule = createTestRule('no-unused-params');
var expected = [{
@@ -3756,9 +3756,9 @@ define([
it("Test eqeqeq-1",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = {value: "===",
- start: 5,
+ start: 5,
end: 7};
- return getFixes({buffer: 'if(1 == 3) {}',
+ return getFixes({buffer: 'if(1 == 3) {}',
rule: rule,
expected: expected,
callback: callback});
@@ -3766,9 +3766,9 @@ define([
it("Test eqeqeq-2",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = {value: "===",
- start: 12,
+ start: 12,
end: 14};
- return getFixes({buffer: 'if(typeof f == "undefined") {}',
+ return getFixes({buffer: 'if(typeof f == "undefined") {}',
rule: rule,
expected: expected,
callback: callback});
@@ -3776,9 +3776,9 @@ define([
it("Test eqeqeq-3",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = {value: "!==",
- start: 5,
+ start: 5,
end: 7};
- return getFixes({buffer: 'if(1 != 3) {}',
+ return getFixes({buffer: 'if(1 != 3) {}',
rule: rule,
expected: expected,
callback: callback});
@@ -3786,9 +3786,9 @@ define([
it("Test eqeqeq-4",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = {value: "!==",
- start: 12,
+ start: 12,
end: 14};
- return getFixes({buffer: 'if(typeof f != "undefined") {}',
+ return getFixes({buffer: 'if(typeof f != "undefined") {}',
rule: rule,
expected: expected,
callback: callback});
@@ -3796,9 +3796,9 @@ define([
it("Test eqeqeq-html-1",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = {value: "===",
- start: 25,
+ start: 25,
end: 27};
- return getFixes({buffer: '<html><head><script>if(1 == 3) {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>if(1 == 3) {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3807,9 +3807,9 @@ define([
it("Test eqeqeq-html-2",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = {value: "===",
- start: 32,
+ start: 32,
end: 34};
- return getFixes({buffer: '<html><head><script>if(typeof f == "undefined") {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>if(typeof f == "undefined") {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3818,9 +3818,9 @@ define([
it("Test eqeqeq-html-3",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = {value: "!==",
- start: 25,
+ start: 25,
end: 27};
- return getFixes({buffer: '<html><head><script>if(1 != 3) {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>if(1 != 3) {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3829,9 +3829,9 @@ define([
it("Test eqeqeq-html-4",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = {value: "!==",
- start: 32,
+ start: 32,
end: 34};
- return getFixes({buffer: '<html><head><script>if(typeof f != "undefined") {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>if(typeof f != "undefined") {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3840,9 +3840,9 @@ define([
it("Test eqeqeq-html-5",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = {value: "!==",
- start: 49,
+ start: 49,
end: 51};
- return getFixes({buffer: '<html><head><script></script><script>if(typeof f != "undefined") {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script></script><script>if(typeof f != "undefined") {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3851,13 +3851,13 @@ define([
it("Test eqeqeq fix all 1",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = [{value: "===",
- start: 5,
+ start: 5,
end: 7},
{value: "===",
start: 20,
end: 22}
];
- return getFixes({buffer: 'if(1 == 3) {} if (1 == 4) {}',
+ return getFixes({buffer: 'if(1 == 3) {} if (1 == 4) {}',
rule: rule,
expected: expected,
callback: callback});
@@ -3865,13 +3865,13 @@ define([
it("Test eqeqeq fix all 2",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = [{value: "!==",
- start: 5,
+ start: 5,
end: 7},
{value: "!==",
start: 20,
end: 22}
];
- return getFixes({buffer: 'if(1 != 3) {} if (1 != 4) {}',
+ return getFixes({buffer: 'if(1 != 3) {} if (1 != 4) {}',
rule: rule,
expected: expected,
callback: callback});
@@ -3879,13 +3879,13 @@ define([
it("Test eqeqeq fix all 3",function(callback) {
var rule = createTestRule('eqeqeq');
var expected = [{value: "===",
- start: 5,
+ start: 5,
end: 7},
{value: "!==",
start: 20,
end: 22}
];
- return getFixes({buffer: 'if(1 == 3) {} if (1 != 4) {}',
+ return getFixes({buffer: 'if(1 == 3) {} if (1 != 4) {}',
rule: rule,
expected: expected,
callback: callback});
@@ -3896,9 +3896,9 @@ define([
it("Test no-unreachable-1",function(callback) {
var rule = createTestRule('no-unreachable');
var expected = {value: "",
- start: 30,
+ start: 30,
end: 36};
- return getFixes({buffer: 'function foo(){var f;return 1;f = 9;}',
+ return getFixes({buffer: 'function foo(){var f;return 1;f = 9;}',
rule: rule,
expected: expected,
callback: callback});
@@ -3906,9 +3906,9 @@ define([
it("Test no-unreachable-2",function(callback) {
var rule = createTestRule('no-unreachable');
var expected = {value: "",
- start: 32,
+ start: 32,
end: 39};
- return getFixes({buffer: 'switch(num) { case 1: {throw e; f = 10;}}',
+ return getFixes({buffer: 'switch(num) { case 1: {throw e; f = 10;}}',
rule: rule,
expected: expected,
callback: callback});
@@ -3916,9 +3916,9 @@ define([
it("Test no-unreachable-html-1",function(callback) {
var rule = createTestRule('no-unreachable');
var expected = {value: "",
- start: 43,
+ start: 43,
end: 51};
- return getFixes({buffer: '<html><head><script>function f(p) {return; foo = 9;}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>function f(p) {return; foo = 9;}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3927,9 +3927,9 @@ define([
it("Test no-unreachable-html-2",function(callback) {
var rule = createTestRule('no-unreachable');
var expected = {value: "",
- start: 52,
+ start: 52,
end: 59};
- return getFixes({buffer: '<html><head><script>switch(num) { case 1: {throw e; f = 10;}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>switch(num) { case 1: {throw e; f = 10;}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -3941,9 +3941,9 @@ define([
it("Test no-sparse-arrays-1",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 8,
+ start: 8,
end: 16};
- return getFixes({buffer: 'var a = [1, , 2]',
+ return getFixes({buffer: 'var a = [1, , 2]',
rule: rule,
expected: expected,
callback: callback});
@@ -3951,9 +3951,9 @@ define([
it("Test no-sparse-arrays-2",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 8,
+ start: 8,
end: 20};
- return getFixes({buffer: 'var a = [1, , 2, , ]',
+ return getFixes({buffer: 'var a = [1, , 2, , ]',
rule: rule,
expected: expected,
callback: callback});
@@ -3961,9 +3961,9 @@ define([
it("Test no-sparse-arrays-3",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 8,
+ start: 8,
end: 24};
- return getFixes({buffer: 'var a = [, , 1, , 2, , ]',
+ return getFixes({buffer: 'var a = [, , 1, , 2, , ]',
rule: rule,
expected: expected,
callback: callback});
@@ -3971,9 +3971,9 @@ define([
it("Test no-sparse-arrays-4",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 8,
+ start: 8,
end: 27};
- return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, ]',
+ return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, ]',
rule: rule,
expected: expected,
callback: callback});
@@ -3981,9 +3981,9 @@ define([
it("Test no-sparse-arrays-5",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2, 3]",
- start: 8,
+ start: 8,
end: 28};
- return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, 3]',
+ return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, 3]',
rule: rule,
expected: expected,
callback: callback});
@@ -3991,9 +3991,9 @@ define([
it("Test no-sparse-arrays-6",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2, 3]",
- start: 8,
+ start: 8,
end: 41};
- return getFixes({buffer: 'var a = [, ,,,, \n1, \n, , ,, ,\n,, 2, \n, 3]',
+ return getFixes({buffer: 'var a = [, ,,,, \n1, \n, , ,, ,\n,, 2, \n, 3]',
rule: rule,
expected: expected,
callback: callback});
@@ -4001,9 +4001,9 @@ define([
it("Test no-sparse-arrays-7",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 8,
+ start: 8,
end: 20};
- return getFixes({buffer: 'var a = [1, , 2, , ];',
+ return getFixes({buffer: 'var a = [1, , 2, , ];',
rule: rule,
expected: expected,
callback: callback});
@@ -4011,9 +4011,9 @@ define([
it("Test no-sparse-arrays-8",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 8,
+ start: 8,
end: 27};
- return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, ];',
+ return getFixes({buffer: 'var a = [, , \n1, \n, 2, \n, ];',
rule: rule,
expected: expected,
callback: callback});
@@ -4024,9 +4024,9 @@ define([
it("Test no-sparse-arrays-no-spacing-1",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 8,
+ start: 8,
end: 22};
- return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,]',
+ return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,]',
rule: rule,
expected: expected,
callback: callback});
@@ -4037,9 +4037,9 @@ define([
it("Test no-sparse-arrays-no-spacing-2",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 0,
+ start: 0,
end: 14};
- return getFixes({buffer: '[,,\n1,\n,2,\n,,]',
+ return getFixes({buffer: '[,,\n1,\n,2,\n,,]',
rule: rule,
expected: expected,
callback: callback,
@@ -4051,9 +4051,9 @@ define([
it("Test no-sparse-arrays-no-spacing-3",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 8,
+ start: 8,
end: 22};
- return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,];',
+ return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,];',
rule: rule,
expected: expected,
callback: callback});
@@ -4064,9 +4064,9 @@ define([
it("Test no-sparse-arrays-no-spacing-4",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 8,
+ start: 8,
end: 22};
- return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,]\nvar foo = "bar";',
+ return getFixes({buffer: 'var a = [,,\n1,\n,2,\n,,]\nvar foo = "bar";',
rule: rule,
expected: expected,
callback: callback});
@@ -4074,9 +4074,9 @@ define([
it("Test no-sparse-arrays-html-1",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 28,
+ start: 28,
end: 36};
- return getFixes({buffer: '<html><head><script>var a = [1, , 2]</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = [1, , 2]</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4085,9 +4085,9 @@ define([
it("Test no-sparse-arrays-html-2",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 28,
+ start: 28,
end: 40};
- return getFixes({buffer: '<html><head><script>var a = [1, , 2, , ]</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = [1, , 2, , ]</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4096,9 +4096,9 @@ define([
it("Test no-sparse-arrays-html-3",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 28,
+ start: 28,
end: 44};
- return getFixes({buffer: '<html><head><script>var a = [, , 1, , 2, , ]</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = [, , 1, , 2, , ]</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4107,9 +4107,9 @@ define([
it("Test no-sparse-arrays-html-4",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 28,
+ start: 28,
end: 46};
- return getFixes({buffer: '<html><head><script>var a = [, , 1, \n, 2, \n, ]</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = [, , 1, \n, 2, \n, ]</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4118,9 +4118,9 @@ define([
it("Test no-sparse-arrays-html-5",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2, 3]",
- start: 28,
+ start: 28,
end: 48};
- return getFixes({buffer: '<html><head><script>var a = [, , \n1, \n, 2, \n, 3]</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = [, , \n1, \n, 2, \n, 3]</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4129,9 +4129,9 @@ define([
it("Test no-sparse-arrays-html-6",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2, 3]",
- start: 28,
+ start: 28,
end: 61};
- return getFixes({buffer: '<html><head><script>var a = [, ,,,, \n1, \n, , ,, ,\n,, 2, \n, 3]</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = [, ,,,, \n1, \n, , ,, ,\n,, 2, \n, 3]</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4140,9 +4140,9 @@ define([
it("Test no-sparse-arrays-html-7",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 28,
+ start: 28,
end: 40};
- return getFixes({buffer: '<html><head><script>var a = [1, , 2, , ];</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = [1, , 2, , ];</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4151,35 +4151,35 @@ define([
it("Test no-sparse-arrays-html-8",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "[1, 2]",
- start: 28,
+ start: 28,
end: 47};
- return getFixes({buffer: '<html><head><script>var a = [, , \n1, \n, 2, \n, ];</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = [, , \n1, \n, 2, \n, ];</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
contentType: 'text/html'});
});
-
+
/**
* @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=489146
*/
it("Test no-sparse-arrays-empty-array-1",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "",
- start: 9,
+ start: 9,
end: 24};
- return getFixes({buffer: 'var a = [, , \n, \n, , \n, ];',
+ return getFixes({buffer: 'var a = [, , \n, \n, , \n, ];',
rule: rule,
expected: expected,
callback: callback});
});
-
+
it("Test no-sparse-arrays-empty-array-2",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "",
- start: 9,
+ start: 9,
end: 13};
- return getFixes({buffer: 'var a = [, , ]',
+ return getFixes({buffer: 'var a = [, , ]',
rule: rule,
expected: expected,
callback: callback});
@@ -4187,9 +4187,9 @@ define([
it("Test no-sparse-arrays-empty-array-3",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "",
- start: 10,
+ start: 10,
end: 22};
- return getFixes({buffer: 'var a = \n[, , , , , , ]',
+ return getFixes({buffer: 'var a = \n[, , , , , , ]',
rule: rule,
expected: expected,
callback: callback});
@@ -4197,9 +4197,9 @@ define([
it("Test no-sparse-arrays-empty-array-4",function(callback) {
var rule = createTestRule('no-sparse-arrays');
var expected = {value: "",
- start: 9,
+ start: 9,
end: 24};
- return getFixes({buffer: 'var a = [, , \n, \n, , \n, ]\n;',
+ return getFixes({buffer: 'var a = [, , \n, \n, , \n, ]\n;',
rule: rule,
expected: expected,
callback: callback});
@@ -4210,9 +4210,9 @@ define([
it("Test semi-1",function(callback) {
var rule = createTestRule('semi');
var expected = {value: ";",
- start: 14,
+ start: 14,
end: 14};
- return getFixes({buffer: 'var a = [1, 2]',
+ return getFixes({buffer: 'var a = [1, 2]',
rule: rule,
expected: expected,
callback: callback});
@@ -4220,9 +4220,9 @@ define([
it("Test semi-2",function(callback) {
var rule = createTestRule('semi');
var expected = {value: ";",
- start: 5,
+ start: 5,
end: 5};
- return getFixes({buffer: 'foo()',
+ return getFixes({buffer: 'foo()',
rule: rule,
expected: expected,
callback: callback});
@@ -4230,9 +4230,9 @@ define([
it("Test semi-3",function(callback) {
var rule = createTestRule('semi');
var expected = {value: ";",
- start: 10,
+ start: 10,
end: 10};
- return getFixes({buffer: 'var a = {}',
+ return getFixes({buffer: 'var a = {}',
rule: rule,
expected: expected,
callback: callback});
@@ -4240,9 +4240,9 @@ define([
it("Test semi-html-1",function(callback) {
var rule = createTestRule('semi');
var expected = {value: ";",
- start: 34,
+ start: 34,
end: 34};
- return getFixes({buffer: '<html><head><script>var a = [1, 2]</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = [1, 2]</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4251,9 +4251,9 @@ define([
it("Test semi-html-2",function(callback) {
var rule = createTestRule('semi');
var expected = {value: ";",
- start: 25,
+ start: 25,
end: 25};
- return getFixes({buffer: '<html><head><script>foo()</script></head></html>',
+ return getFixes({buffer: '<html><head><script>foo()</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4262,9 +4262,9 @@ define([
it("Test semi-html-3",function(callback) {
var rule = createTestRule('semi');
var expected = {value: ";",
- start: 30,
+ start: 30,
end: 30};
- return getFixes({buffer: '<html><head><script>var a = {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4274,13 +4274,13 @@ define([
var rule = createTestRule('semi');
var expected = [
{value: ";",
- start: 14,
+ start: 14,
end: 14},
{value: ";",
- start: 29,
+ start: 29,
end: 29}
];
- return getFixes({buffer: 'var a = [1, 2]\nvar b = [1, 2]',
+ return getFixes({buffer: 'var a = [1, 2]\nvar b = [1, 2]',
rule: rule,
expected: expected,
callback: callback});
@@ -4289,13 +4289,13 @@ define([
var rule = createTestRule('semi');
var expected = [
{value: ";",
- start: 5,
+ start: 5,
end: 5},
{value: ";",
- start: 11,
+ start: 11,
end: 11}
];
- return getFixes({buffer: 'foo()\nfoo()',
+ return getFixes({buffer: 'foo()\nfoo()',
rule: rule,
expected: expected,
callback: callback});
@@ -4304,13 +4304,13 @@ define([
var rule = createTestRule('semi');
var expected = [
{value: ";",
- start: 10,
+ start: 10,
end: 10},
{value: ";",
- start: 21,
+ start: 21,
end: 21}
];
- return getFixes({buffer: 'var a = {}\nvar a = {}',
+ return getFixes({buffer: 'var a = {}\nvar a = {}',
rule: rule,
expected: expected,
callback: callback});
@@ -4319,16 +4319,16 @@ define([
var rule = createTestRule('semi');
var expected = [
{value: ";",
- start: 14,
+ start: 14,
end: 14},
{value: ";",
- start: 20,
+ start: 20,
end: 20},
{value: ";",
- start: 31,
+ start: 31,
end: 31}
];
- return getFixes({buffer: 'var a = [1, 2]\nfoo()\nvar a = {}',
+ return getFixes({buffer: 'var a = [1, 2]\nfoo()\nvar a = {}',
rule: rule,
expected: expected,
callback: callback});
@@ -4339,9 +4339,9 @@ define([
it("Test no-unused-vars-unused-1",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 0,
+ start: 0,
end: 6};
- return getFixes({buffer: 'var a;',
+ return getFixes({buffer: 'var a;',
rule: rule,
expected: expected,
callback: callback,
@@ -4350,9 +4350,9 @@ define([
it("Test no-unused-vars-unused-2",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 10,
+ start: 10,
end: 13};
- return getFixes({buffer: 'var a = 10, b;',
+ return getFixes({buffer: 'var a = 10, b;',
rule: rule,
expected: expected,
callback: callback,
@@ -4361,9 +4361,9 @@ define([
it("Test no-unused-vars-unused-3",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 10,
+ start: 10,
end: 13};
- return getFixes({buffer: 'var a = 10, b, c = 1;',
+ return getFixes({buffer: 'var a = 10, b, c = 1;',
rule: rule,
expected: expected,
callback: callback,
@@ -4372,9 +4372,9 @@ define([
it("Test no-unused-vars-unused-funcdecl-1",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 0,
+ start: 0,
end: 15};
- return getFixes({buffer: 'function f() {}',
+ return getFixes({buffer: 'function f() {}',
rule: rule,
expected: expected,
callback: callback,
@@ -4383,9 +4383,9 @@ define([
it("Test no-unused-vars-unused-funcdecl-2",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 26,
+ start: 26,
end: 41};
- return getFixes({buffer: 'var a = {one: function() {function f() {}}}',
+ return getFixes({buffer: 'var a = {one: function() {function f() {}}}',
rule: rule,
expected: expected,
callback: callback,
@@ -4394,9 +4394,9 @@ define([
it("Test no-unused-vars-unused-html-1",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 20,
+ start: 20,
end: 26};
- return getFixes({buffer: '<html><head><script>var a;</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a;</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4406,9 +4406,9 @@ define([
it("Test no-unused-vars-unused-html-2",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 30,
+ start: 30,
end: 33};
- return getFixes({buffer: '<html><head><script>var a = 10, b;</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = 10, b;</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4418,9 +4418,9 @@ define([
it("Test no-unused-vars-unused-html-3",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 30,
+ start: 30,
end: 33};
- return getFixes({buffer: '<html><head><script>var a = 10, b, c = 1;</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = 10, b, c = 1;</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4430,9 +4430,9 @@ define([
it("Test no-unused-vars-unused-funcdecl-html-1",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 20,
+ start: 20,
end: 35};
- return getFixes({buffer: '<html><head><script>function f() {}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>function f() {}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4442,9 +4442,9 @@ define([
it("Test no-unused-vars-unused-funcdecl-html-2",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 46,
+ start: 46,
end: 61};
- return getFixes({buffer: '<html><head><script>var a = {one: function() {function f() {}}}</script></head></html>',
+ return getFixes({buffer: '<html><head><script>var a = {one: function() {function f() {}}}</script></head></html>',
rule: rule,
expected: expected,
callback: callback,
@@ -4457,9 +4457,9 @@ define([
it("Test no-unused-vars-unread-1",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 0,
+ start: 0,
end: 10};
- return getFixes({buffer: 'var a = 4;',
+ return getFixes({buffer: 'var a = 4;',
rule: rule,
expected: expected,
callback: callback,
@@ -4468,9 +4468,9 @@ define([
it("Test no-unused-vars-unread-2",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 4,
+ start: 4,
end: 12};
- return getFixes({buffer: 'var a = 10, b;',
+ return getFixes({buffer: 'var a = 10, b;',
rule: rule,
expected: expected,
callback: callback,
@@ -4479,9 +4479,9 @@ define([
it("Test no-unused-vars-unread-3",function(callback) {
var rule = createTestRule('no-unused-vars');
var expected = {value: "",
- start: 5,
+ start: 5,
end: 12};
- return getFixes({buffer: 'var a, b = 4;',
+ return getFixes({buffer: 'var a, b = 4;',
rule: rule,
expected: expected,
callback: callback,
@@ -4493,9 +4493,9 @@ define([
it("Test missing-nls-1", function(callback) {
var rule = createTestRule('missing-nls');
var expected = {value: " //$NON-NLS-1$",
- start: 12,
+ start: 12,
end: 12};
- return getFixes({buffer: 'var a = "a";',
+ return getFixes({buffer: 'var a = "a";',
rule: rule,
expected: expected,
callback: callback,
@@ -4504,9 +4504,9 @@ define([
it("Test missing-nls-2",function(callback) {
var rule = createTestRule('missing-nls');
var expected = {value: " //$NON-NLS-2$",
- start: 39,
+ start: 39,
end: 39};
- return getFixes({buffer: 'var a = "a"; var b = "b"; //$NON-NLS-1$',
+ return getFixes({buffer: 'var a = "a"; var b = "b"; //$NON-NLS-1$',
rule: rule,
expected: expected,
callback: callback,
@@ -4515,9 +4515,9 @@ define([
it("Test missing-nls-3",function(callback) {
var rule = createTestRule('missing-nls');
var expected = {value: " //$NON-NLS-1$",
- start: 39,
+ start: 39,
end: 39};
- return getFixes({buffer: 'var a = "a"; var b = "b"; //$NON-NLS-2$',
+ return getFixes({buffer: 'var a = "a"; var b = "b"; //$NON-NLS-2$',
rule: rule,
expected: expected,
callback: callback,
@@ -4553,9 +4553,9 @@ define([
it("Test unnecessary-nls-1", function(callback) {
var rule = createTestRule('unnecessary-nls');
var expected = {value: "",
- start: 10,
+ start: 10,
end: 24};
- return getFixes({buffer: 'var a = 1; //$NON-NLS-0$',
+ return getFixes({buffer: 'var a = 1; //$NON-NLS-0$',
rule: rule,
expected: expected,
callback: callback,
@@ -4564,9 +4564,9 @@ define([
it("Test unnecessary-nls-2", function(callback) {
var rule = createTestRule('unnecessary-nls');
var expected = {value: "",
- start: 10,
+ start: 10,
end: 24};
- return getFixes({buffer: 'var a = 1; //$NON-NLS-1$',
+ return getFixes({buffer: 'var a = 1; //$NON-NLS-1$',
rule: rule,
expected: expected,
callback: callback,
@@ -4575,9 +4575,9 @@ define([
it("Test unnecessary-nls-3", function(callback) {
var rule = createTestRule('unnecessary-nls');
var expected = {value: "",
- start: 10,
+ start: 10,
end: 24};
- return getFixes({buffer: 'var a = 1; //$NON-NLS-2$',
+ return getFixes({buffer: 'var a = 1; //$NON-NLS-2$',
rule: rule,
expected: expected,
callback: callback,
@@ -4586,9 +4586,9 @@ define([
it("Test unnecessary-nls-4", function(callback) {
var rule = createTestRule('unnecessary-nls');
var expected = {value: "",
- start: 13,
+ start: 13,
end: 24};
- return getFixes({buffer: 'var a = 1; //$NON-NLS-1$ foo',
+ return getFixes({buffer: 'var a = 1; //$NON-NLS-1$ foo',
rule: rule,
expected: expected,
callback: callback,
@@ -4597,9 +4597,9 @@ define([
it("Test unnecessary-nls-5", function(callback) {
var rule = createTestRule('unnecessary-nls');
var expected = {value: "",
- start: 26,
+ start: 26,
end: 40};
- return getFixes({buffer: 'var a = "a"; //$NON-NLS-1$ //$NON-NLS-2$',
+ return getFixes({buffer: 'var a = "a"; //$NON-NLS-1$ //$NON-NLS-2$',
rule: rule,
expected: expected,
callback: callback,
@@ -4608,9 +4608,9 @@ define([
it("Test unnecessary-nls-6", function(callback) {
var rule = createTestRule('unnecessary-nls');
var expected = {value: "",
- start: 12,
+ start: 12,
end: 26};
- return getFixes({buffer: 'var a = "a"; //$NON-NLS-2$ //$NON-NLS-1$',
+ return getFixes({buffer: 'var a = "a"; //$NON-NLS-2$ //$NON-NLS-1$',
rule: rule,
expected: expected,
callback: callback,
@@ -4620,14 +4620,14 @@ define([
var rule = createTestRule('unnecessary-nls');
var expected = [
{value: "",
- start: 10,
+ start: 10,
end: 24},
{value: "",
- start: 35,
+ start: 35,
end: 49},
];
-
- return getFixes({buffer: 'var a = 1; //$NON-NLS-0$\nvar b = 1; //$NON-NLS-0$',
+
+ return getFixes({buffer: 'var a = 1; //$NON-NLS-0$\nvar b = 1; //$NON-NLS-0$',
rule: rule,
expected: expected,
callback: callback,
@@ -4637,11 +4637,11 @@ define([
var rule = createTestRule('unnecessary-nls');
var expected = [
{value: "",
- start: 10,
+ start: 10,
end: 38}
];
-
- return getFixes({buffer: 'var a = 1; //$NON-NLS-0$ //$NON-NLS-1$',
+
+ return getFixes({buffer: 'var a = 1; //$NON-NLS-0$ //$NON-NLS-1$',
rule: rule,
expected: expected,
callback: callback,
@@ -4651,14 +4651,14 @@ define([
var rule = createTestRule('unnecessary-nls');
var expected = [
{value: "",
- start: 12,
+ start: 12,
end: 26},
{value: "",
- start: 40,
+ start: 40,
end: 54},
];
-
- return getFixes({buffer: 'var a = "a"; //$NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-9$',
+
+ return getFixes({buffer: 'var a = "a"; //$NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-9$',
rule: rule,
expected: expected,
callback: callback,
@@ -4668,11 +4668,11 @@ define([
var rule = createTestRule('unnecessary-nls');
var expected = [
{value: "",
- start: 11,
+ start: 11,
end: 40}
];
-
- return getFixes({buffer: 'var v = 10; //$NON-NLS-1$ //$NON-NLS-2$\nvar v2;',
+
+ return getFixes({buffer: 'var v = 10; //$NON-NLS-1$ //$NON-NLS-2$\nvar v2;',
rule: rule,
expected: expected,
callback: callback,
@@ -4682,11 +4682,11 @@ define([
var rule = createTestRule('unnecessary-nls');
var expected = [
{value: "",
- start: 11,
+ start: 11,
end: 40}
];
-
- return getFixes({buffer: 'var v = 10; //$NON-NLS-1$ //$NON-NLS-2$ \nvar v2;',
+
+ return getFixes({buffer: 'var v = 10; //$NON-NLS-1$ //$NON-NLS-2$ \nvar v2;',
rule: rule,
expected: expected,
callback: callback,
@@ -4724,9 +4724,9 @@ define([
it("Test use-isnan-1",function(callback) {
var rule = createTestRule('use-isnan');
var expected = {value: "isNaN(foo)",
- start: 3,
+ start: 3,
end: 14};
- return getFixes({buffer: 'if(foo === NaN){}',
+ return getFixes({buffer: 'if(foo === NaN){}',
rule: rule,
expected: expected,
callback: callback,
@@ -4735,9 +4735,9 @@ define([
it("Test use-isnan-2",function(callback) {
var rule = createTestRule('use-isnan');
var expected = {value: "isNaN(foo)",
- start: 3,
+ start: 3,
end: 14};
- return getFixes({buffer: 'if(NaN === foo){}',
+ return getFixes({buffer: 'if(NaN === foo){}',
rule: rule,
expected: expected,
callback: callback,
@@ -4746,9 +4746,9 @@ define([
it("Test use-isnan-3",function(callback) {
var rule = createTestRule('use-isnan');
var expected = {value: "isNaN(foo+23)",
- start: 3,
+ start: 3,
end: 19};
- return getFixes({buffer: 'if((foo+23) === NaN){}',
+ return getFixes({buffer: 'if((foo+23) === NaN){}',
rule: rule,
expected: expected,
callback: callback,
@@ -4757,9 +4757,9 @@ define([
it("Test use-isnan-4",function(callback) {
var rule = createTestRule('use-isnan');
var expected = {value: "isNaN(foo+23)",
- start: 3,
+ start: 3,
end: 19};
- return getFixes({buffer: 'if(NaN === (foo+23)){}',
+ return getFixes({buffer: 'if(NaN === (foo+23)){}',
rule: rule,
expected: expected,
callback: callback,
@@ -4768,9 +4768,90 @@ define([
it("Test use-isnan-5",function(callback) {
var rule = createTestRule('use-isnan');
var expected = {value: "isNaN(45 === (foo+23))",
- start: 3,
+ start: 3,
+ end: 28};
+ return getFixes({buffer: 'if(NaN === (45 === (foo+23))){}',
+ rule: rule,
+ expected: expected,
+ callback: callback,
+ pid: 'use-isnan'});
+ });
+ it("Test use-isnan multi fix 1", function(done) {
+ var rule = createTestRule("use-isnan");
+ var expected = [
+ {value: "isNaN(foo)", start: 3, end: 14},
+ {value: "isNaN(bar)", start: 21, end: 32}
+ ];
+ return getFixes({
+ buffer: "if(foo === NaN){} if(NaN === bar){}",
+ rule: rule,
+ expected: expected,
+ callback: done
+ });
+ });
+ it("Test use-isnan multi fix 2", function(done) {
+ var rule = createTestRule("use-isnan");
+ var expected = [
+ {value: "isNaN(foo)", start: 3, end: 14},
+ {value: "isNaN(bar)", start: 18, end: 29}
+ ];
+ return getFixes({
+ buffer: "if(foo === NaN || NaN === bar){}",
+ rule: rule,
+ expected: expected,
+ callback: done
+ });
+ });
+ it("Test use-isnan-not-1",function(callback) {
+ var rule = createTestRule('use-isnan');
+ var expected = {value: "!isNaN(foo)",
+ start: 3,
+ end: 14};
+ return getFixes({buffer: 'if(foo !== NaN){}',
+ rule: rule,
+ expected: expected,
+ callback: callback,
+ pid: 'use-isnan'});
+ });
+ it("Test use-isnan-not-2",function(callback) {
+ var rule = createTestRule('use-isnan');
+ var expected = {value: "!isNaN(foo)",
+ start: 3,
+ end: 14};
+ return getFixes({buffer: 'if(NaN !== foo){}',
+ rule: rule,
+ expected: expected,
+ callback: callback,
+ pid: 'use-isnan'});
+ });
+ it("Test use-isnan-not-3",function(callback) {
+ var rule = createTestRule('use-isnan');
+ var expected = {value: "!isNaN(foo+23)",
+ start: 3,
+ end: 19};
+ return getFixes({buffer: 'if((foo+23) !== NaN){}',
+ rule: rule,
+ expected: expected,
+ callback: callback,
+ pid: 'use-isnan'});
+ });
+ it("Test use-isnan-not-4",function(callback) {
+ var rule = createTestRule('use-isnan');
+ var expected = {value: "!isNaN(foo+23)",
+ start: 3,
+ end: 19};
+ return getFixes({buffer: 'if(NaN !== (foo+23)){}',
+ rule: rule,
+ expected: expected,
+ callback: callback,
+ pid: 'use-isnan'});
+ });
+ it("Test use-isnan-not-5",function(callback) {
+ var rule = createTestRule('use-isnan');
+ var expected = {value: "!isNaN(45 === (foo+23))",
+ start: 3,
end: 28};
- return getFixes({buffer: 'if(NaN === (45 === (foo+23))){}',
+ return getFixes({buffer: 'if(NaN !== (45 === (foo+23))){}',
rule: rule,
expected: expected,
callback: callback,
@@ -5074,7 +5155,7 @@ define([
{value: "(", start: 29, end: 29},
{value: ")", start: 34, end: 34}
];
- return getFixes({buffer: 'var i = 0; if (i = 0) {} if (i = 1) {}',
+ return getFixes({buffer: 'var i = 0; if (i = 0) {} if (i = 1) {}',
rule: rule,
expected: expected,
callback: callback});