@phoenix-plugin-registry/com.github.mrmeku.closure-linter
Version:
Lint javascript files according to the Google style guide and automatically fix linting errors.
293 lines (244 loc) • 6.58 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
* @author robbyw@google.com Robby
*/
goog.provide('w');
goog.provide('Y');
goog.provide('X');
goog.provide('Z');
// Some comment about why this is suppressed top.
/** @suppress {extraRequire} */
goog.require('dummy.NotUsedTop'); // Comment top.
goog.require('dummy.Bb');
/** @suppress {extraRequire} */
// Some comment about why this is suppressed different.
goog.require('dummy.NotUsedDifferentComment');
goog.require('dummy.Cc');
// Some comment about why this is suppressed middle.
/** @suppress {extraRequire} */
goog.require('dummy.NotUsedMiddle'); // Comment middle.
goog.require('dummy.Dd');
goog.require('dummy.aa');
// Some comment about why this is suppressed bottom.
/** @suppress {extraRequire} */
goog.require('dummy.NotUsedBottom'); // Comment bottom.
var x = new dummy.Bb();
dummy.Cc.someMethod();
dummy.aa.someMethod();
/**
* @param {number|null} badTypeWithExtraSpace |null -> ?.
* @returns {number} returns -> return.
*/
x.y = function( badTypeWithExtraSpace) {
}
/** @type {function():null|Array.<string|null>} only 2nd |null -> ? */
x.badType;
/** @type {Array.<number|string|null>|null} only 2nd |null -> ? */
x.wickedType;
/** @type { string | null } 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