@phoenix-plugin-registry/com.github.mrmeku.closure-linter
Version:
Lint javascript files according to the Google style guide and automatically fix linting errors.
311 lines (246 loc) • 6.64 kB
JavaScript
// Copyright 2008 The Closure Linter Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS-IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
/**
* @fileoverview Autofix test script.
*
* @author robbyw@google.com (Robby Walker)
* @author robbyw@google.com (Robby Walker)
* @author robbyw@google.com (Robby Walker)
* @author robbyw@google.com (Robby Walker)
* @author robbyw@google.com (Robby)
* @author robbyw@google.com
* @author robbyw@google.com Robby
*/
goog.provide('X');
goog.provide('Y');
goog.provide('Z');
goog.provide('w');
goog.require('dummy.Bb');
goog.require('dummy.Cc');
// Some comment about why this is suppressed bottom.
/** @suppress {extraRequire} */
goog.require('dummy.NotUsedBottom'); // Comment bottom.
/** @suppress {extraRequire} */
// Some comment about why this is suppressed different.
goog.require('dummy.NotUsedDifferentComment');
// Some comment about why this is suppressed middle.
/** @suppress {extraRequire} */
goog.require('dummy.NotUsedMiddle'); // Comment middle.
// Some comment about why this is suppressed top.
/** @suppress {extraRequire} */
goog.require('dummy.NotUsedTop'); // Comment top.
goog.require('dummy.aa');
var x = new dummy.Bb();
dummy.Cc.someMethod();
dummy.aa.someMethod();
/**
* @param {?number} badTypeWithExtraSpace |null -> ?.
* @return {number} returns -> return.
*/
x.y = function(badTypeWithExtraSpace) {
};
/** @type {function():null|Array.<?string>} only 2nd |null -> ? */
x.badType;
/** @type {?Array.<number|string|null>} only 2nd |null -> ? */
x.wickedType;
/** @type {? string } null -> ? */
x.nullWithSpace;
spaceBeforeSemicolon = 10;
spaceBeforeParen = 10 + (5 * 2);
arrayNoSpace = [10];
arrayExtraSpace[10] = 10;
spaceBeforeClose = ([10]);
spaceAfterStart = ([10]);
extraSpaceAfterPlus = 10 + 20;
extraSpaceBeforeOperator = x++;
extraSpaceBeforeOperator = x--;
extraSpaceBeforeComma = x(y, z);
missingSpaceBeforeOperator = x + y;
missingSpaceAfterOperator = x + y;
missingBothSpaces = x + y;
equalsSpacing = 10;
equalsSpacing = 10;
equalsSpacing = 10;
equalsSpacing = [10];
reallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName = 1000;
'string should be single quotes';
// Regression test for interaction between space fixing and semicolon fixing -
// previously the fix for the missing space caused the function to be seen as
// a non-assigned function and then its semicolon was being stripped.
x = function() {
};
/**
* Missing a newline.
* @constructor
* @extends {a.b.c}
*/
x.y.z = function() {
};
goog.inherits(x.y.z, a.b.c);
/**
* Extra blank line.
* @constructor
* @extends {a.b.c}
*/
x.y.z = function() {
};
goog.inherits(x.y.z, a.b.c);
/**
* Perfect!
* @constructor
* @extends {a.b.c}
*/
x.y.z = function() {
};
goog.inherits(x.y.z, a.b.c);
// Whitespace at end of comment.
var removeWhiteSpaceAtEndOfLine;
/**
* Whitespace at EOL (here and the line of code and the one below it).
* @type {string}
* @param {string} Description with whitespace at EOL.
*/
x = 10;
/**
* @type {number}
*/
foo.bar = 3;
/**
* @enum {boolean}
*/
bar.baz = true;
/**
* @extends {Object}
*/
bar.foo = x;
/**
* @type {function(string, boolean) : void}
*/
baz.bar = goog.nullFunction;
/** @inheritDoc */
baz.baz = function() {
};
TR_Node.splitDomTreeAt(splitNode, clone, /** @type {Node} */ (quoteNode));
x = [1, 2, 3,];
x = {
a: 1,
};
if (x) {
}
for (i = 0; i < 10; i++) {
}
for (i = 0; i < 10; i++) {
}
for (i = 0; i < 10; i++) {
}
for (i = 0; i < 10; i++) {
}
for (i = 0; i < 10; i++) {
}
for (i = 0; i < 10; i++) {
}
for (i = 0; i < 10; i++) {
}
for (i = 0; i < 10; i++) {
}
for (i = 0; i < 10; i++) {
}
var x = 10;
var y = 100;
/**
* This is to test the ability to add or remove a = in type to mark optional
* parameters.
* @param {number=} firstArg Incorrect the name should start with opt_. Don't
* handle the fix (yet).
* @param {function(string=):number=} opt_function This should end with a =.
* @param {function(number)=} opt_otherFunc This should end with a =.
* @param {string=} opt_otherArg Incorrect this should be string=.
* @param {{string, number}=} opt_recordArg Incorrect this should
* be {string, number}=.
*/
function someFunction(firstArg, opt_function, opt_otherFunc, opt_otherArg,
opt_recordArg) {
}
/**
* This is to test the ability to add '...' in type with variable arguments.
* @param {number} firstArg First argument.
* @param {...string} var_args This should start with '...'.
*/
function varArgFunction(firstArg, var_args) {
}
/**
* This is to test the ability to add '...' in type with variable arguments.
* @param {number} firstArg First argument.
* @param {...{a, b}} var_args This should start with '...'.
*/
function varArgRecordTypeFunction(firstArg, var_args) {
}
var indent = 'correct';
indent = 'too far';
if (indent) {
indent = 'too short';
}
indent = function() {
return a +
b;
};
/**
* Regression test, must insert whitespace before the 'b' when fixing
* indentation. Its different from below case of bug 3473113 as has spaces
* before parameter which was not working in part of the bug fix.
*/
indentWrongSpaces = function(
b) {
};
/**
* Regression test, must insert whitespace before the 'b' when fixing
* indentation.
* @bug 3473113
*/
indent = function(
b) {
};
/**
* This is to test the ability to remove multiple extra lines before a top-level
* block.
*/
function someFunction() {}
/**
* This is to test the ability to add multiple extra lines before a top-level
* block.
*/
function someFunction() {}
// This is a comment.
/**
* This is to test that blank lines removed before a top level block skips any
* comments above the block.
*/
function someFunction() {}
// This is a comment.
/**
* This is to test that blank lines added before a top level block skips any
* comments above the block.
*/
function someFunction() {}
/**
* Parameters don't have proper spaces.
* @param {number} a
* @param {number} b
* @param {number} d
* @param {number} e
* @param {number} f
*/
function someFunction(a, b, d, e, f) {
}
// File does not end with newline