UNPKG

@phoenix-plugin-registry/com.github.mrmeku.closure-linter

Version:

Lint javascript files according to the Google style guide and automatically fix linting errors.

216 lines (169 loc) 5.83 kB
// 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 There is nothing wrong w/ this javascript. * */ goog.module('goog.super.long.DependencyNameThatForcesMethodDefinitionToSpanMultipleLinesFooBar'); goog.forwardDeclare('goog.super.long.DependencyNameThatForcesMethodDefinitionToSpanMultipleLines'); goog.provide('goog.something'); goog.provide('goog.something.Else'); goog.provide('goog.something.Else.Enum'); /** @suppress {extraProvide} */ goog.provide('goog.something.Extra'); goog.provide('goog.something.SomeTypeDef'); goog.provide('goog.somethingelse.someMethod'); goog.provide('goog.super.long.DependencyNameThatForcesTheLineToBeOverEightyCharacters'); goog.provide('notInClosurizedNamespacesSoNotExtra'); goog.require('dummy.foo'); goog.require('dummy.foo.someSpecificallyRequiredMethod'); goog.require('goog.Class'); /** @suppress {extraRequire} */ goog.require('goog.extra.require'); goog.require('goog.package'); goog.require('goog.package.ClassName'); goog.require('goog.package.OtherClassName'); /** @suppress {extraRequire} Legacy dependency on enum */ goog.require('goog.package.OuterClassName.InnerClassName'); goog.require('goog.super.long.DependencyNameThatForcesMethodDefinitionToSpanMultipleLinesFooBar'); goog.require('goog.super.long.DependencyNameThatForcesTheLineToBeOverEightyCharacters2'); goog.require('goog.super.long.DependencyNameThatForcesTheLineToBeOverEightyCharacters3'); goog.require('notInClosurizedNamespacesSoNotExtra'); dummy.foo.someMethod(); dummy.foo.someSpecificallyRequiredMethod(); // Regression test for bug 3473189. Both of these 'goog.provide' tokens should // be completely ignored by alphabetization checks. if (typeof goog != 'undefined' && typeof goog.provide == 'function') { goog.provide('goog.something.SomethingElse'); } var x = new goog.Class(); goog.package.staticFunction(); var y = goog.Class.Enum.VALUE; // This should not trigger a goog.require. var somethingPrivate = goog.somethingPrivate.PrivateEnum_.VALUE; /** * This method is provided directly, instead of its namespace. */ goog.somethingelse.someMethod = function() {}; /** * Defining a private property on a required namespace should not trigger a * provide of that namespace. Yes, people actually do this. * @private */ goog.Class.privateProperty_ = 1; /** * @typedef {string} */ goog.something.SomeTypeDef; /** * @typedef {string} * @private */ goog.something.SomePrivateTypeDef_; /** * Some variable that is declared but not initialized. * @type {string|undefined} * @private */ goog.something.somePrivateVariable_; /** * Private variable. * @type {number} * @private */ goog.something.private_ = 10; /** * Use private variables defined in this file so they don't cause a warning. */ goog.something.usePrivateVariables = function() { var x = [ goog.something.private_, goog.Class.privateProperty_, x ]; }; /** * A really long class name to provide and usage of a really long class name to * be required. * @constructor */ goog.super.long.DependencyNameThatForcesTheLineToBeOverEightyCharacters = function() { var x = new goog.super.long. // LINE_ENDS_WITH_DOT DependencyNameThatForcesTheLineToBeOverEightyCharacters2(); var x = new goog.super.long .DependencyNameThatForcesTheLineToBeOverEightyCharacters3(); // Use x to avoid a warning. var x = [x]; }; /** * A really long class name to to force a method definition to be greater than * 80 lines. We should be grabbing the whole identifier regardless of how many * lines it is on. */ goog.super.long .DependencyNameThatForcesMethodDefinitionToSpanMultipleLinesFooBar .prototype.someMethod = function() { }; /** * Static function. */ goog.something.staticFunction = function() { // Tests that namespace usages are identified using 'namespace.' not just // 'namespace'. googSomething.property; dummySomething.property; goog.package.ClassName // A comment in between the identifier pieces. .IDENTIFIER_SPLIT_OVER_MULTIPLE_LINES; goog.package.OtherClassName.property = 1; // Test case where inner class needs to be required explicitly. new goog.package.OuterClassName.InnerClassName(); // Don't just use goog.bar for missing namespace, hard coded to never require // goog since it's never provided. control.createConstructorMock( /** @suppress {missingRequire} */ goog.foo.bar, 'Baz'); goog.require('goog.shouldBeIgnored'); }; /** * Constructor for Else. * @constructor */ goog.something.Else = function() { /** @suppress {missingRequire} */ this.control.createConstructorMock(goog.foo.bar, 'Baz'); }; /** * Enum attached to Else. Should not need to be provided explicitly, but * should not generate an extra require warning either. * @enum {number} */ goog.something.Else.Enum = { 'key': 1 }; /** * Sample of a typedef. This should not need a provide as it is an inner * element like an enum. * * @typedef {{val1: string, val2: boolean, val3: number}} */ goog.something.Else.Typedef; /** * Constructor for SomethingElse. * @constructor */ goog.something.SomethingElse = function() {}; /** * @suppress {missingProvide} */ goog.suppress.someMethod = function() {};