CircuitVerse/CircuitVerse

View on GitHub
simulator/src/testbench.js

Summary

Maintainability
F
6 days
Test Coverage

File testbench.js has 631 lines of code (exceeds 250 allowed). Consider refactoring.
Open

/**
 * This file contains all functions related the the testbench
 * Contains the the testbench engine and UI modules
 */

Severity: Major
Found in simulator/src/testbench.js - About 1 day to fix

    Function openCreator has a Cognitive Complexity of 16 (exceeds 5 allowed). Consider refactoring.
    Open

    function openCreator(type, dataString) {
        const popupHeight = 800;
        const popupWidth = 1200;
        const popupTop = (window.height - popupHeight) / 2;
        const popupLeft = (window.width - popupWidth) / 2;
    Severity: Minor
    Found in simulator/src/testbench.js - About 2 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function validate has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
    Open

    function validate(data, scope) {
        let invalids = [];
    
        // Check for duplicate identifiers
        if (!checkDistinctIdentifiersData(data)) {
    Severity: Minor
    Found in simulator/src/testbench.js - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    'validate' was used before it was defined.
    Open

        const isValid = validate(data, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

            $('.tb-dialog-button#edit-test-btn').on('click', buttonListenerFunctions.editTestButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'validate' was used before it was defined.
    Open

            const isValid = validate(globalScope.testbenchData.testData, globalScope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'validate' was used before it was defined.
    Open

            const isValid = validate(globalScope.testbenchData.testData, globalScope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'runAll' was used before it was defined.
    Open

            const results = runAll(globalScope.testbenchData.testData, globalScope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'bindIO' was used before it was defined.
    Open

        const { inputs, outputs, reset } = bindIO(data, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'validate' was used before it was defined.
    Open

            const isValid = validate(globalScope.testbenchData.testData, globalScope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'setupTestbenchUI' was used before it was defined.
    Open

                setupTestbenchUI();
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'getOutputValues' was used before it was defined.
    Open

        const result = getOutputValues(data, outputs);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'triggerReset' was used before it was defined.
    Open

        triggerReset(reset, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'setInputValues' was used before it was defined.
    Open

                setInputValues(inputs, group, case_i, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'setUICurrentCase' was used before it was defined.
    Open

        setUICurrentCase(testbenchData);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'updateTestbenchUI' was used before it was defined.
    Open

            updateTestbenchUI();
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'tickClock' was used before it was defined.
    Open

                if (data.type === 'seq') tickClock(scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'tickClock' was used before it was defined.
    Open

            tickClock(scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'validateInputs' was used before it was defined.
    Open

        const inputsValid = validateInputs(data, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

            $('.tb-case-button#next-case-btn').on('click', buttonListenerFunctions.nextCaseButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

            $('.tb-dialog-button#validate-btn').on('click', buttonListenerFunctions.validateButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'setUIResult' was used before it was defined.
    Open

            setUIResult(globalScope.testbenchData, result);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'checkDistinctIdentifiersScope' was used before it was defined.
    Open

        if (!checkDistinctIdentifiersScope(scope)) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'setUITableHeaders' was used before it was defined.
    Open

            setUITableHeaders(testbenchData);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'setupTestbenchUI' was used before it was defined.
    Open

        setupTestbenchUI();
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'openCreator' was used before it was defined.
    Open

            openCreator('edit', editDataString);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'setUICurrentCase' was used before it was defined.
    Open

            setUICurrentCase(globalScope.testbenchData);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'bindIO' was used before it was defined.
    Open

        const { inputs, outputs } = bindIO(data, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'setInputValues' was used before it was defined.
    Open

            setInputValues(inputs, group, case_i, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'checkDistinctIdentifiersData' was used before it was defined.
    Open

        if (!checkDistinctIdentifiersData(data)) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

            $('.tb-dialog-button#remove-test-btn').on('click', buttonListenerFunctions.removeTestButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'validate' was used before it was defined.
    Open

            const isValid = validate(globalScope.testbenchData.testData, globalScope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'openCreator' was used before it was defined.
    Open

            $('#runall-detailed-link').on('click', () => { openCreator('result', resultString); });
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'runSingleTest' was used before it was defined.
    Open

            const result = runSingleTest(globalScope.testbenchData, globalScope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'getOutputValues' was used before it was defined.
    Open

        const result = getOutputValues(data, outputs);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'validateOutputs' was used before it was defined.
    Open

        const outputsValid = validateOutputs(data, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

            $('.tb-case-button#prev-group-btn').on('click', buttonListenerFunctions.previousGroupButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'runSingleCombinational' was used before it was defined.
    Open

            result = runSingleCombinational(testbenchData, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'runSingleSequential' was used before it was defined.
    Open

            result = runSingleSequential(testbenchData, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'triggerReset' was used before it was defined.
    Open

            if (data.type === 'seq') triggerReset(reset);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'validationAutoFix' was used before it was defined.
    Open

                        const fixes = validationAutoFix(validationErrors);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

        $('.tb-dialog-button#attach-test-btn').on('click', buttonListenerFunctions.attachTestButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

            $('.tb-case-button#prev-case-btn').on('click', buttonListenerFunctions.previousCaseButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'validate' was used before it was defined.
    Open

            const isValid = validate(globalScope.testbenchData.testData, globalScope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

            $('.tb-case-button#next-group-btn').on('click', buttonListenerFunctions.nextGroupButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

            $('.tb-dialog-button#runall-btn').on('click', buttonListenerFunctions.runAllButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'openCreator' was used before it was defined.
    Open

            openCreator('create');
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'openCreator' was used before it was defined.
    Open

            openCreator('create');
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'getOutputValues' was used before it was defined.
    Open

                const caseResult = getOutputValues(data, outputs);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'bindIO' was used before it was defined.
    Open

        const { inputs, outputs, reset } = bindIO(data, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'showValidationUI' was used before it was defined.
    Open

            showValidationUI(isValid);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'buttonListenerFunctions' was used before it was defined.
    Open

            $('.tb-dialog-button#change-test-btn').on('click', buttonListenerFunctions.changeTestButton);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'setInputValues' was used before it was defined.
    Open

        setInputValues(inputs, group, caseIndex, scope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    'validate' was used before it was defined.
    Open

            const isValid = validate(globalScope.testbenchData.testData, globalScope);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Early Use (no-use-before-define)

    In JavaScript, prior to ES6, variable and function declarations are hoisted to the top of a scope, so it's possible to use identifiers before their formal declarations in code. This can be confusing and some believe it is best to always declare variables and functions before using them.

    In ES6, block-level bindings (let and const) introduce a "temporal dead zone" where a ReferenceError will be thrown with any attempt to access the variable before its declaration.

    Rule Details

    This rule will warn when it encounters a reference to an identifier that has not yet been declared.

    Examples of incorrect code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    alert(a);
    var a = 10;
    
    f();
    function f() {}
    
    function g() {
        return b;
    }
    var b = 1;
    
    {
        alert(c);
        let c = 1;
    }

    Examples of correct code for this rule:

    /*eslint no-use-before-define: "error"*/
    /*eslint-env es6*/
    
    var a;
    a = 10;
    alert(a);
    
    function f() {}
    f(1);
    
    var b = 1;
    function g() {
        return b;
    }
    
    {
        let c;
        c++;
    }

    Options

    {
        "no-use-before-define": ["error", { "functions": true, "classes": true }]
    }
    • functions (boolean) - The flag which shows whether or not this rule checks function declarations. If this is true, this rule warns every reference to a function before the function declaration. Otherwise, ignores those references. Function declarations are hoisted, so it's safe. Default is true.
    • classes (boolean) - The flag which shows whether or not this rule checks class declarations of upper scopes. If this is true, this rule warns every reference to a class before the class declaration. Otherwise, ignores those references if the declaration is in upper function scopes. Class declarations are not hoisted, so it might be danger. Default is true.
    • variables (boolean) - This flag determines whether or not the rule checks variable declarations in upper scopes. If this is true, the rule warns every reference to a variable before the variable declaration. Otherwise, the rule ignores a reference if the declaration is in an upper scope, while still reporting the reference if it's in the same scope as the declaration. Default is true.

    This rule accepts "nofunc" string as an option. "nofunc" is the same as { "functions": false, "classes": true, "variables": true }.

    functions

    Examples of correct code for the { "functions": false } option:

    /*eslint no-use-before-define: ["error", { "functions": false }]*/
    
    f();
    function f() {}

    This option allows references to function declarations. For function expressions and arrow functions, please see the variables option.

    classes

    Examples of incorrect code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    new A();
    class A {
    }

    Examples of correct code for the { "classes": false } option:

    /*eslint no-use-before-define: ["error", { "classes": false }]*/
    /*eslint-env es6*/
    
    function foo() {
        return new A();
    }
    
    class A {
    }

    variables

    Examples of incorrect code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    console.log(foo);
    var foo = 1;
    
    f();
    const f = () => {};
    
    g();
    const g = function() {};

    Examples of correct code for the { "variables": false } option:

    /*eslint no-use-before-define: ["error", { "variables": false }]*/
    
    function baz() {
        console.log(foo);
    }
    var foo = 1;
    
    const a = () => f();
    function b() { return f(); }
    const c = function() { return f(); }
    const f = () => {};
    
    const e = function() { return g(); }
    const g = function() {}

    Source: http://eslint.org/docs/rules/

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

        const outputIdentifiersScope = scope.Output.map((output) => output.label);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Identifier 'case_i' is not in camel case.
    Open

            for (let case_i = 0; case_i < group.n; case_i++) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require CamelCase (camelcase)

    When it comes to naming variables, style guides generally fall into one of two camps: camelcase (variableName) and underscores (variable_name). This rule focuses on using the camelcase approach. If your style guide calls for camelCasing your variable names, then this rule is for you!

    Rule Details

    This rule looks for any underscores (_) located within the source code. It ignores leading and trailing underscores and only checks those in the middle of a variable name. If ESLint decides that the variable is a constant (all uppercase), then no warning will be thrown. Otherwise, a warning will be thrown. This rule only flags definitions and assignments but not function calls. In case of ES6 import statements, this rule only targets the name of the variable that will be imported into the local module scope.

    Options

    This rule has an object option:

    • "properties": "always" (default) enforces camelcase style for property names
    • "properties": "never" does not check property names
    • "ignoreDestructuring": false (default) enforces camelcase style for destructured identifiers
    • "ignoreDestructuring": true does not check destructured identifiers (but still checks any use of those identifiers later in the code)
    • "ignoreImports": false (default) enforces camelcase style for ES2015 imports
    • "ignoreImports": true does not check ES2015 imports (but still checks any use of the imports later in the code except function arguments)
    • "ignoreGlobals": false (default) enforces camelcase style for global variables
    • "ignoreGlobals": true does not enforce camelcase style for global variables
    • allow (string[]) list of properties to accept. Accept regex.

    properties: "always"

    Examples of incorrect code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased } from "external-module"
    
    var my_favorite_color = "#112C85";
    
    function do_something() {
        // ...
    }
    
    obj.do_something = function() {
        // ...
    };
    
    function foo({ no_camelcased }) {
        // ...
    };
    
    function foo({ isCamelcased: no_camelcased }) {
        // ...
    }
    
    function foo({ no_camelcased = 'default value' }) {
        // ...
    };
    
    var obj = {
        my_pref: 1
    };
    
    var { category_id = 1 } = query;
    
    var { foo: no_camelcased } = bar;
    
    var { foo: bar_baz = 1 } = quz;

    Examples of correct code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased as camelCased } from "external-module";
    
    var myFavoriteColor   = "#112C85";
    var _myFavoriteColor  = "#112C85";
    var myFavoriteColor_  = "#112C85";
    var MY_FAVORITE_COLOR = "#112C85";
    var foo = bar.baz_boom;
    var foo = { qux: bar.baz_boom };
    
    obj.do_something();
    do_something();
    new do_something();
    
    var { category_id: category } = query;
    
    function foo({ isCamelCased }) {
        // ...
    };
    
    function foo({ isCamelCased: isAlsoCamelCased }) {
        // ...
    }
    
    function foo({ isCamelCased = 'default value' }) {
        // ...
    };
    
    var { categoryId = 1 } = query;
    
    var { foo: isCamelCased } = bar;
    
    var { foo: isCamelCased = 1 } = quz;

    properties: "never"

    Examples of correct code for this rule with the { "properties": "never" } option:

    /*eslint camelcase: ["error", {properties: "never"}]*/
    
    var obj = {
        my_pref: 1
    };

    ignoreDestructuring: false

    Examples of incorrect code for this rule with the default { "ignoreDestructuring": false } option:

    /*eslint camelcase: "error"*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;
    
    var { category_id: category_alias } = query;
    
    var { category_id: categoryId, ...other_props } = query;

    ignoreDestructuring: true

    Examples of incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id: category_alias } = query;
    
    var { category_id, ...other_props } = query;

    Examples of correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;

    Please note that this option applies only to identifiers inside destructuring patterns. It doesn't additionally allow any particular use of the created variables later in the code apart from the use that is already allowed by default or by other options.

    Examples of additional incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property } = obj; // allowed by {ignoreDestructuring: true}
    var foo = some_property + 1; // error, ignoreDestructuring does not apply to this statement

    A common use case for this option is to avoid useless renaming when the identifier is not intended to be used later in the code.

    Examples of additional correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property, ...rest } = obj;
    // do something with 'rest', nothing with 'some_property'

    Another common use case for this option is in combination with { "properties": "never" }, when the identifier is intended to be used only as a property shorthand.

    Examples of additional correct code for this rule with the { "properties": "never", "ignoreDestructuring": true } options:

    /*eslint camelcase: ["error", {"properties": "never", ignoreDestructuring: true}]*/
    
    var { some_property } = obj;
    doSomething({ some_property });

    ignoreImports: false

    Examples of incorrect code for this rule with the default { "ignoreImports": false } option:

    /*eslint camelcase: "error"*/
    
    import { snake_cased } from 'mod';

    ignoreImports: true

    Examples of incorrect code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import default_import from 'mod';
    
    import * as namespaced_import from 'mod';

    Examples of correct code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import { snake_cased } from 'mod';

    ignoreGlobals: false

    Examples of incorrect code for this rule with the default { "ignoreGlobals": false } option:

    /*eslint camelcase: ["error", {ignoreGlobals: false}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    ignoreGlobals: true

    Examples of correct code for this rule with the { "ignoreGlobals": true } option:

    /*eslint camelcase: ["error", {ignoreGlobals: true}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    allow

    Examples of correct code for this rule with the allow option:

    /*eslint camelcase: ["error", {allow: ["UNSAFE_componentWillMount"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    /*eslint camelcase: ["error", {allow: ["^UNSAFE_"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    
    function UNSAFE_componentWillMount() {
        // ...
    }

    When Not To Use It

    If you have established coding standards using a different naming convention (separating words with underscores), turn this rule off. Source: http://eslint.org/docs/rules/

    Identifier 'case_i' is not in camel case.
    Open

        for (let case_i = 0; case_i <= caseIndex; case_i++) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require CamelCase (camelcase)

    When it comes to naming variables, style guides generally fall into one of two camps: camelcase (variableName) and underscores (variable_name). This rule focuses on using the camelcase approach. If your style guide calls for camelCasing your variable names, then this rule is for you!

    Rule Details

    This rule looks for any underscores (_) located within the source code. It ignores leading and trailing underscores and only checks those in the middle of a variable name. If ESLint decides that the variable is a constant (all uppercase), then no warning will be thrown. Otherwise, a warning will be thrown. This rule only flags definitions and assignments but not function calls. In case of ES6 import statements, this rule only targets the name of the variable that will be imported into the local module scope.

    Options

    This rule has an object option:

    • "properties": "always" (default) enforces camelcase style for property names
    • "properties": "never" does not check property names
    • "ignoreDestructuring": false (default) enforces camelcase style for destructured identifiers
    • "ignoreDestructuring": true does not check destructured identifiers (but still checks any use of those identifiers later in the code)
    • "ignoreImports": false (default) enforces camelcase style for ES2015 imports
    • "ignoreImports": true does not check ES2015 imports (but still checks any use of the imports later in the code except function arguments)
    • "ignoreGlobals": false (default) enforces camelcase style for global variables
    • "ignoreGlobals": true does not enforce camelcase style for global variables
    • allow (string[]) list of properties to accept. Accept regex.

    properties: "always"

    Examples of incorrect code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased } from "external-module"
    
    var my_favorite_color = "#112C85";
    
    function do_something() {
        // ...
    }
    
    obj.do_something = function() {
        // ...
    };
    
    function foo({ no_camelcased }) {
        // ...
    };
    
    function foo({ isCamelcased: no_camelcased }) {
        // ...
    }
    
    function foo({ no_camelcased = 'default value' }) {
        // ...
    };
    
    var obj = {
        my_pref: 1
    };
    
    var { category_id = 1 } = query;
    
    var { foo: no_camelcased } = bar;
    
    var { foo: bar_baz = 1 } = quz;

    Examples of correct code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased as camelCased } from "external-module";
    
    var myFavoriteColor   = "#112C85";
    var _myFavoriteColor  = "#112C85";
    var myFavoriteColor_  = "#112C85";
    var MY_FAVORITE_COLOR = "#112C85";
    var foo = bar.baz_boom;
    var foo = { qux: bar.baz_boom };
    
    obj.do_something();
    do_something();
    new do_something();
    
    var { category_id: category } = query;
    
    function foo({ isCamelCased }) {
        // ...
    };
    
    function foo({ isCamelCased: isAlsoCamelCased }) {
        // ...
    }
    
    function foo({ isCamelCased = 'default value' }) {
        // ...
    };
    
    var { categoryId = 1 } = query;
    
    var { foo: isCamelCased } = bar;
    
    var { foo: isCamelCased = 1 } = quz;

    properties: "never"

    Examples of correct code for this rule with the { "properties": "never" } option:

    /*eslint camelcase: ["error", {properties: "never"}]*/
    
    var obj = {
        my_pref: 1
    };

    ignoreDestructuring: false

    Examples of incorrect code for this rule with the default { "ignoreDestructuring": false } option:

    /*eslint camelcase: "error"*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;
    
    var { category_id: category_alias } = query;
    
    var { category_id: categoryId, ...other_props } = query;

    ignoreDestructuring: true

    Examples of incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id: category_alias } = query;
    
    var { category_id, ...other_props } = query;

    Examples of correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;

    Please note that this option applies only to identifiers inside destructuring patterns. It doesn't additionally allow any particular use of the created variables later in the code apart from the use that is already allowed by default or by other options.

    Examples of additional incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property } = obj; // allowed by {ignoreDestructuring: true}
    var foo = some_property + 1; // error, ignoreDestructuring does not apply to this statement

    A common use case for this option is to avoid useless renaming when the identifier is not intended to be used later in the code.

    Examples of additional correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property, ...rest } = obj;
    // do something with 'rest', nothing with 'some_property'

    Another common use case for this option is in combination with { "properties": "never" }, when the identifier is intended to be used only as a property shorthand.

    Examples of additional correct code for this rule with the { "properties": "never", "ignoreDestructuring": true } options:

    /*eslint camelcase: ["error", {"properties": "never", ignoreDestructuring: true}]*/
    
    var { some_property } = obj;
    doSomething({ some_property });

    ignoreImports: false

    Examples of incorrect code for this rule with the default { "ignoreImports": false } option:

    /*eslint camelcase: "error"*/
    
    import { snake_cased } from 'mod';

    ignoreImports: true

    Examples of incorrect code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import default_import from 'mod';
    
    import * as namespaced_import from 'mod';

    Examples of correct code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import { snake_cased } from 'mod';

    ignoreGlobals: false

    Examples of incorrect code for this rule with the default { "ignoreGlobals": false } option:

    /*eslint camelcase: ["error", {ignoreGlobals: false}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    ignoreGlobals: true

    Examples of correct code for this rule with the { "ignoreGlobals": true } option:

    /*eslint camelcase: ["error", {ignoreGlobals: true}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    allow

    Examples of correct code for this rule with the allow option:

    /*eslint camelcase: ["error", {allow: ["UNSAFE_componentWillMount"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    /*eslint camelcase: ["error", {allow: ["^UNSAFE_"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    
    function UNSAFE_componentWillMount() {
        // ...
    }

    When Not To Use It

    If you have established coding standards using a different naming convention (separating words with underscores), turn this rule off. Source: http://eslint.org/docs/rules/

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

        identifiersScope = identifiersScope.filter((identifer) => identifer != '');
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected use of 'confirm'.
    Open

            if (confirm('Are you sure you want to remove the test from the circuit?')) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow specific global variables (no-restricted-globals)

    Disallowing usage of specific global variables can be useful if you want to allow a set of global variables by enabling an environment, but still want to disallow some of those.

    For instance, early Internet Explorer versions exposed the current DOM event as a global variable event, but using this variable has been considered as a bad practice for a long time. Restricting this will make sure this variable isn't used in browser code.

    Rule Details

    This rule allows you to specify global variable names that you don't want to use in your application.

    Options

    This rule takes a list of strings, where each string is a global to be restricted:

    {
        "rules": {
            "no-restricted-globals": ["error", "event", "fdescribe"]
        }
    }

    Alternatively, the rule also accepts objects, where the global name and an optional custom message are specified:

    {
        "rules": {
            "no-restricted-globals": [
                "error",
                {
                    "name": "event",
                    "message": "Use local parameter instead."
                },
                {
                    "name": "fdescribe",
                    "message": "Do not commit fdescribe. Use describe instead."
                }
            ]
        }
    }

    Examples of incorrect code for sample "event", "fdescribe" global variable names:

    /*global event, fdescribe*/
    /*eslint no-restricted-globals: ["error", "event", "fdescribe"]*/
    
    function onClick() {
        console.log(event);
    }
    
    fdescribe("foo", function() {
    });

    Examples of correct code for a sample "event" global variable name:

    /*global event*/
    /*eslint no-restricted-globals: ["error", "event"]*/
    
    import event from "event-module";
    /*global event*/
    /*eslint no-restricted-globals: ["error", "event"]*/
    
    var event = 1;

    Examples of incorrect code for a sample "event" global variable name, along with a custom error message:

    /*global event*/
    /* eslint no-restricted-globals: ["error", { name: "event", message: "Use local parameter instead." }] */
    
    function onClick() {
        console.log(event);    // Unexpected global variable 'event'. Use local parameter instead.
    }

    Related Rules

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

            inputs[dataInput.label] = scope.Input.find((simulatorInput) => simulatorInput.label === dataInput.label);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

            outputs[dataOutput.label] = scope.Output.find((simulatorOutput) => simulatorOutput.label === dataOutput.label);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected use of '>>>'.
    Open

        const bin = (dec >>> 0).toString(2);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    disallow bitwise operators (no-bitwise)

    The use of bitwise operators in JavaScript is very rare and often & or | is simply a mistyped && or ||, which will lead to unexpected behavior.

    var x = y | z;

    Rule Details

    This rule disallows bitwise operators.

    Examples of incorrect code for this rule:

    /*eslint no-bitwise: "error"*/
    
    var x = y | z;
    
    var x = y & z;
    
    var x = y ^ z;
    
    var x = ~ z;
    
    var x = y << z;
    
    var x = y >> z;
    
    var x = y >>> z;
    
    x |= y;
    
    x &= y;
    
    x ^= y;
    
    x <<= y;
    
    x >>= y;
    
    x >>>= y;

    Examples of correct code for this rule:

    /*eslint no-bitwise: "error"*/
    
    var x = y || z;
    
    var x = y && z;
    
    var x = y > z;
    
    var x = y < z;
    
    x += y;

    Options

    This rule has an object option:

    • "allow": Allows a list of bitwise operators to be used as exceptions.
    • "int32Hint": Allows the use of bitwise OR in |0 pattern for type casting.

    allow

    Examples of correct code for this rule with the { "allow": ["~"] } option:

    /*eslint no-bitwise: ["error", { "allow": ["~"] }] */
    
    ~[1,2,3].indexOf(1) === -1;

    int32Hint

    Examples of correct code for this rule with the { "int32Hint": true } option:

    /*eslint no-bitwise: ["error", { "int32Hint": true }] */
    
    var b = a|0;

    Source: http://eslint.org/docs/rules/

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

            group.outputs.forEach((output) => output.results = []);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Identifier 'case_i' is not in camel case.
    Open

        for (let case_i = 0; case_i <= caseIndex; case_i++) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require CamelCase (camelcase)

    When it comes to naming variables, style guides generally fall into one of two camps: camelcase (variableName) and underscores (variable_name). This rule focuses on using the camelcase approach. If your style guide calls for camelCasing your variable names, then this rule is for you!

    Rule Details

    This rule looks for any underscores (_) located within the source code. It ignores leading and trailing underscores and only checks those in the middle of a variable name. If ESLint decides that the variable is a constant (all uppercase), then no warning will be thrown. Otherwise, a warning will be thrown. This rule only flags definitions and assignments but not function calls. In case of ES6 import statements, this rule only targets the name of the variable that will be imported into the local module scope.

    Options

    This rule has an object option:

    • "properties": "always" (default) enforces camelcase style for property names
    • "properties": "never" does not check property names
    • "ignoreDestructuring": false (default) enforces camelcase style for destructured identifiers
    • "ignoreDestructuring": true does not check destructured identifiers (but still checks any use of those identifiers later in the code)
    • "ignoreImports": false (default) enforces camelcase style for ES2015 imports
    • "ignoreImports": true does not check ES2015 imports (but still checks any use of the imports later in the code except function arguments)
    • "ignoreGlobals": false (default) enforces camelcase style for global variables
    • "ignoreGlobals": true does not enforce camelcase style for global variables
    • allow (string[]) list of properties to accept. Accept regex.

    properties: "always"

    Examples of incorrect code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased } from "external-module"
    
    var my_favorite_color = "#112C85";
    
    function do_something() {
        // ...
    }
    
    obj.do_something = function() {
        // ...
    };
    
    function foo({ no_camelcased }) {
        // ...
    };
    
    function foo({ isCamelcased: no_camelcased }) {
        // ...
    }
    
    function foo({ no_camelcased = 'default value' }) {
        // ...
    };
    
    var obj = {
        my_pref: 1
    };
    
    var { category_id = 1 } = query;
    
    var { foo: no_camelcased } = bar;
    
    var { foo: bar_baz = 1 } = quz;

    Examples of correct code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased as camelCased } from "external-module";
    
    var myFavoriteColor   = "#112C85";
    var _myFavoriteColor  = "#112C85";
    var myFavoriteColor_  = "#112C85";
    var MY_FAVORITE_COLOR = "#112C85";
    var foo = bar.baz_boom;
    var foo = { qux: bar.baz_boom };
    
    obj.do_something();
    do_something();
    new do_something();
    
    var { category_id: category } = query;
    
    function foo({ isCamelCased }) {
        // ...
    };
    
    function foo({ isCamelCased: isAlsoCamelCased }) {
        // ...
    }
    
    function foo({ isCamelCased = 'default value' }) {
        // ...
    };
    
    var { categoryId = 1 } = query;
    
    var { foo: isCamelCased } = bar;
    
    var { foo: isCamelCased = 1 } = quz;

    properties: "never"

    Examples of correct code for this rule with the { "properties": "never" } option:

    /*eslint camelcase: ["error", {properties: "never"}]*/
    
    var obj = {
        my_pref: 1
    };

    ignoreDestructuring: false

    Examples of incorrect code for this rule with the default { "ignoreDestructuring": false } option:

    /*eslint camelcase: "error"*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;
    
    var { category_id: category_alias } = query;
    
    var { category_id: categoryId, ...other_props } = query;

    ignoreDestructuring: true

    Examples of incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id: category_alias } = query;
    
    var { category_id, ...other_props } = query;

    Examples of correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;

    Please note that this option applies only to identifiers inside destructuring patterns. It doesn't additionally allow any particular use of the created variables later in the code apart from the use that is already allowed by default or by other options.

    Examples of additional incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property } = obj; // allowed by {ignoreDestructuring: true}
    var foo = some_property + 1; // error, ignoreDestructuring does not apply to this statement

    A common use case for this option is to avoid useless renaming when the identifier is not intended to be used later in the code.

    Examples of additional correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property, ...rest } = obj;
    // do something with 'rest', nothing with 'some_property'

    Another common use case for this option is in combination with { "properties": "never" }, when the identifier is intended to be used only as a property shorthand.

    Examples of additional correct code for this rule with the { "properties": "never", "ignoreDestructuring": true } options:

    /*eslint camelcase: ["error", {"properties": "never", ignoreDestructuring: true}]*/
    
    var { some_property } = obj;
    doSomething({ some_property });

    ignoreImports: false

    Examples of incorrect code for this rule with the default { "ignoreImports": false } option:

    /*eslint camelcase: "error"*/
    
    import { snake_cased } from 'mod';

    ignoreImports: true

    Examples of incorrect code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import default_import from 'mod';
    
    import * as namespaced_import from 'mod';

    Examples of correct code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import { snake_cased } from 'mod';

    ignoreGlobals: false

    Examples of incorrect code for this rule with the default { "ignoreGlobals": false } option:

    /*eslint camelcase: ["error", {ignoreGlobals: false}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    ignoreGlobals: true

    Examples of correct code for this rule with the { "ignoreGlobals": true } option:

    /*eslint camelcase: ["error", {ignoreGlobals: true}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    allow

    Examples of correct code for this rule with the allow option:

    /*eslint camelcase: ["error", {allow: ["UNSAFE_componentWillMount"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    /*eslint camelcase: ["error", {allow: ["^UNSAFE_"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    
    function UNSAFE_componentWillMount() {
        // ...
    }

    When Not To Use It

    If you have established coding standards using a different naming convention (separating words with underscores), turn this rule off. Source: http://eslint.org/docs/rules/

    Identifier 'case_i' is not in camel case.
    Open

            for (let case_i = 0; case_i < group.n; case_i++) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require CamelCase (camelcase)

    When it comes to naming variables, style guides generally fall into one of two camps: camelcase (variableName) and underscores (variable_name). This rule focuses on using the camelcase approach. If your style guide calls for camelCasing your variable names, then this rule is for you!

    Rule Details

    This rule looks for any underscores (_) located within the source code. It ignores leading and trailing underscores and only checks those in the middle of a variable name. If ESLint decides that the variable is a constant (all uppercase), then no warning will be thrown. Otherwise, a warning will be thrown. This rule only flags definitions and assignments but not function calls. In case of ES6 import statements, this rule only targets the name of the variable that will be imported into the local module scope.

    Options

    This rule has an object option:

    • "properties": "always" (default) enforces camelcase style for property names
    • "properties": "never" does not check property names
    • "ignoreDestructuring": false (default) enforces camelcase style for destructured identifiers
    • "ignoreDestructuring": true does not check destructured identifiers (but still checks any use of those identifiers later in the code)
    • "ignoreImports": false (default) enforces camelcase style for ES2015 imports
    • "ignoreImports": true does not check ES2015 imports (but still checks any use of the imports later in the code except function arguments)
    • "ignoreGlobals": false (default) enforces camelcase style for global variables
    • "ignoreGlobals": true does not enforce camelcase style for global variables
    • allow (string[]) list of properties to accept. Accept regex.

    properties: "always"

    Examples of incorrect code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased } from "external-module"
    
    var my_favorite_color = "#112C85";
    
    function do_something() {
        // ...
    }
    
    obj.do_something = function() {
        // ...
    };
    
    function foo({ no_camelcased }) {
        // ...
    };
    
    function foo({ isCamelcased: no_camelcased }) {
        // ...
    }
    
    function foo({ no_camelcased = 'default value' }) {
        // ...
    };
    
    var obj = {
        my_pref: 1
    };
    
    var { category_id = 1 } = query;
    
    var { foo: no_camelcased } = bar;
    
    var { foo: bar_baz = 1 } = quz;

    Examples of correct code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased as camelCased } from "external-module";
    
    var myFavoriteColor   = "#112C85";
    var _myFavoriteColor  = "#112C85";
    var myFavoriteColor_  = "#112C85";
    var MY_FAVORITE_COLOR = "#112C85";
    var foo = bar.baz_boom;
    var foo = { qux: bar.baz_boom };
    
    obj.do_something();
    do_something();
    new do_something();
    
    var { category_id: category } = query;
    
    function foo({ isCamelCased }) {
        // ...
    };
    
    function foo({ isCamelCased: isAlsoCamelCased }) {
        // ...
    }
    
    function foo({ isCamelCased = 'default value' }) {
        // ...
    };
    
    var { categoryId = 1 } = query;
    
    var { foo: isCamelCased } = bar;
    
    var { foo: isCamelCased = 1 } = quz;

    properties: "never"

    Examples of correct code for this rule with the { "properties": "never" } option:

    /*eslint camelcase: ["error", {properties: "never"}]*/
    
    var obj = {
        my_pref: 1
    };

    ignoreDestructuring: false

    Examples of incorrect code for this rule with the default { "ignoreDestructuring": false } option:

    /*eslint camelcase: "error"*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;
    
    var { category_id: category_alias } = query;
    
    var { category_id: categoryId, ...other_props } = query;

    ignoreDestructuring: true

    Examples of incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id: category_alias } = query;
    
    var { category_id, ...other_props } = query;

    Examples of correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;

    Please note that this option applies only to identifiers inside destructuring patterns. It doesn't additionally allow any particular use of the created variables later in the code apart from the use that is already allowed by default or by other options.

    Examples of additional incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property } = obj; // allowed by {ignoreDestructuring: true}
    var foo = some_property + 1; // error, ignoreDestructuring does not apply to this statement

    A common use case for this option is to avoid useless renaming when the identifier is not intended to be used later in the code.

    Examples of additional correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property, ...rest } = obj;
    // do something with 'rest', nothing with 'some_property'

    Another common use case for this option is in combination with { "properties": "never" }, when the identifier is intended to be used only as a property shorthand.

    Examples of additional correct code for this rule with the { "properties": "never", "ignoreDestructuring": true } options:

    /*eslint camelcase: ["error", {"properties": "never", ignoreDestructuring: true}]*/
    
    var { some_property } = obj;
    doSomething({ some_property });

    ignoreImports: false

    Examples of incorrect code for this rule with the default { "ignoreImports": false } option:

    /*eslint camelcase: "error"*/
    
    import { snake_cased } from 'mod';

    ignoreImports: true

    Examples of incorrect code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import default_import from 'mod';
    
    import * as namespaced_import from 'mod';

    Examples of correct code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import { snake_cased } from 'mod';

    ignoreGlobals: false

    Examples of incorrect code for this rule with the default { "ignoreGlobals": false } option:

    /*eslint camelcase: ["error", {ignoreGlobals: false}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    ignoreGlobals: true

    Examples of correct code for this rule with the { "ignoreGlobals": true } option:

    /*eslint camelcase: ["error", {ignoreGlobals: true}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    allow

    Examples of correct code for this rule with the allow option:

    /*eslint camelcase: ["error", {allow: ["UNSAFE_componentWillMount"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    /*eslint camelcase: ["error", {allow: ["^UNSAFE_"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    
    function UNSAFE_componentWillMount() {
        // ...
    }

    When Not To Use It

    If you have established coding standards using a different naming convention (separating words with underscores), turn this rule off. Source: http://eslint.org/docs/rules/

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

        const inputIdentifiersScope = scope.Input.map((input) => input.label);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

            const matchInput = scope.Input.find((simulatorInput) => simulatorInput.label === dataInput.label);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

            const resetPresent = scope.Input.some((simulatorReset) => (
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Identifier 'case_i' is not in camel case.
    Open

            for (let case_i = 0; case_i < group.n; case_i++) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require CamelCase (camelcase)

    When it comes to naming variables, style guides generally fall into one of two camps: camelcase (variableName) and underscores (variable_name). This rule focuses on using the camelcase approach. If your style guide calls for camelCasing your variable names, then this rule is for you!

    Rule Details

    This rule looks for any underscores (_) located within the source code. It ignores leading and trailing underscores and only checks those in the middle of a variable name. If ESLint decides that the variable is a constant (all uppercase), then no warning will be thrown. Otherwise, a warning will be thrown. This rule only flags definitions and assignments but not function calls. In case of ES6 import statements, this rule only targets the name of the variable that will be imported into the local module scope.

    Options

    This rule has an object option:

    • "properties": "always" (default) enforces camelcase style for property names
    • "properties": "never" does not check property names
    • "ignoreDestructuring": false (default) enforces camelcase style for destructured identifiers
    • "ignoreDestructuring": true does not check destructured identifiers (but still checks any use of those identifiers later in the code)
    • "ignoreImports": false (default) enforces camelcase style for ES2015 imports
    • "ignoreImports": true does not check ES2015 imports (but still checks any use of the imports later in the code except function arguments)
    • "ignoreGlobals": false (default) enforces camelcase style for global variables
    • "ignoreGlobals": true does not enforce camelcase style for global variables
    • allow (string[]) list of properties to accept. Accept regex.

    properties: "always"

    Examples of incorrect code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased } from "external-module"
    
    var my_favorite_color = "#112C85";
    
    function do_something() {
        // ...
    }
    
    obj.do_something = function() {
        // ...
    };
    
    function foo({ no_camelcased }) {
        // ...
    };
    
    function foo({ isCamelcased: no_camelcased }) {
        // ...
    }
    
    function foo({ no_camelcased = 'default value' }) {
        // ...
    };
    
    var obj = {
        my_pref: 1
    };
    
    var { category_id = 1 } = query;
    
    var { foo: no_camelcased } = bar;
    
    var { foo: bar_baz = 1 } = quz;

    Examples of correct code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased as camelCased } from "external-module";
    
    var myFavoriteColor   = "#112C85";
    var _myFavoriteColor  = "#112C85";
    var myFavoriteColor_  = "#112C85";
    var MY_FAVORITE_COLOR = "#112C85";
    var foo = bar.baz_boom;
    var foo = { qux: bar.baz_boom };
    
    obj.do_something();
    do_something();
    new do_something();
    
    var { category_id: category } = query;
    
    function foo({ isCamelCased }) {
        // ...
    };
    
    function foo({ isCamelCased: isAlsoCamelCased }) {
        // ...
    }
    
    function foo({ isCamelCased = 'default value' }) {
        // ...
    };
    
    var { categoryId = 1 } = query;
    
    var { foo: isCamelCased } = bar;
    
    var { foo: isCamelCased = 1 } = quz;

    properties: "never"

    Examples of correct code for this rule with the { "properties": "never" } option:

    /*eslint camelcase: ["error", {properties: "never"}]*/
    
    var obj = {
        my_pref: 1
    };

    ignoreDestructuring: false

    Examples of incorrect code for this rule with the default { "ignoreDestructuring": false } option:

    /*eslint camelcase: "error"*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;
    
    var { category_id: category_alias } = query;
    
    var { category_id: categoryId, ...other_props } = query;

    ignoreDestructuring: true

    Examples of incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id: category_alias } = query;
    
    var { category_id, ...other_props } = query;

    Examples of correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;

    Please note that this option applies only to identifiers inside destructuring patterns. It doesn't additionally allow any particular use of the created variables later in the code apart from the use that is already allowed by default or by other options.

    Examples of additional incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property } = obj; // allowed by {ignoreDestructuring: true}
    var foo = some_property + 1; // error, ignoreDestructuring does not apply to this statement

    A common use case for this option is to avoid useless renaming when the identifier is not intended to be used later in the code.

    Examples of additional correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property, ...rest } = obj;
    // do something with 'rest', nothing with 'some_property'

    Another common use case for this option is in combination with { "properties": "never" }, when the identifier is intended to be used only as a property shorthand.

    Examples of additional correct code for this rule with the { "properties": "never", "ignoreDestructuring": true } options:

    /*eslint camelcase: ["error", {"properties": "never", ignoreDestructuring: true}]*/
    
    var { some_property } = obj;
    doSomething({ some_property });

    ignoreImports: false

    Examples of incorrect code for this rule with the default { "ignoreImports": false } option:

    /*eslint camelcase: "error"*/
    
    import { snake_cased } from 'mod';

    ignoreImports: true

    Examples of incorrect code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import default_import from 'mod';
    
    import * as namespaced_import from 'mod';

    Examples of correct code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import { snake_cased } from 'mod';

    ignoreGlobals: false

    Examples of incorrect code for this rule with the default { "ignoreGlobals": false } option:

    /*eslint camelcase: ["error", {ignoreGlobals: false}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    ignoreGlobals: true

    Examples of correct code for this rule with the { "ignoreGlobals": true } option:

    /*eslint camelcase: ["error", {ignoreGlobals: true}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    allow

    Examples of correct code for this rule with the allow option:

    /*eslint camelcase: ["error", {allow: ["UNSAFE_componentWillMount"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    /*eslint camelcase: ["error", {allow: ["^UNSAFE_"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    
    function UNSAFE_componentWillMount() {
        // ...
    }

    When Not To Use It

    If you have established coding standards using a different naming convention (separating words with underscores), turn this rule off. Source: http://eslint.org/docs/rules/

    Identifier 'case_i' is not in camel case.
    Open

        for (let case_i = 0; case_i <= caseIndex; case_i++) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require CamelCase (camelcase)

    When it comes to naming variables, style guides generally fall into one of two camps: camelcase (variableName) and underscores (variable_name). This rule focuses on using the camelcase approach. If your style guide calls for camelCasing your variable names, then this rule is for you!

    Rule Details

    This rule looks for any underscores (_) located within the source code. It ignores leading and trailing underscores and only checks those in the middle of a variable name. If ESLint decides that the variable is a constant (all uppercase), then no warning will be thrown. Otherwise, a warning will be thrown. This rule only flags definitions and assignments but not function calls. In case of ES6 import statements, this rule only targets the name of the variable that will be imported into the local module scope.

    Options

    This rule has an object option:

    • "properties": "always" (default) enforces camelcase style for property names
    • "properties": "never" does not check property names
    • "ignoreDestructuring": false (default) enforces camelcase style for destructured identifiers
    • "ignoreDestructuring": true does not check destructured identifiers (but still checks any use of those identifiers later in the code)
    • "ignoreImports": false (default) enforces camelcase style for ES2015 imports
    • "ignoreImports": true does not check ES2015 imports (but still checks any use of the imports later in the code except function arguments)
    • "ignoreGlobals": false (default) enforces camelcase style for global variables
    • "ignoreGlobals": true does not enforce camelcase style for global variables
    • allow (string[]) list of properties to accept. Accept regex.

    properties: "always"

    Examples of incorrect code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased } from "external-module"
    
    var my_favorite_color = "#112C85";
    
    function do_something() {
        // ...
    }
    
    obj.do_something = function() {
        // ...
    };
    
    function foo({ no_camelcased }) {
        // ...
    };
    
    function foo({ isCamelcased: no_camelcased }) {
        // ...
    }
    
    function foo({ no_camelcased = 'default value' }) {
        // ...
    };
    
    var obj = {
        my_pref: 1
    };
    
    var { category_id = 1 } = query;
    
    var { foo: no_camelcased } = bar;
    
    var { foo: bar_baz = 1 } = quz;

    Examples of correct code for this rule with the default { "properties": "always" } option:

    /*eslint camelcase: "error"*/
    
    import { no_camelcased as camelCased } from "external-module";
    
    var myFavoriteColor   = "#112C85";
    var _myFavoriteColor  = "#112C85";
    var myFavoriteColor_  = "#112C85";
    var MY_FAVORITE_COLOR = "#112C85";
    var foo = bar.baz_boom;
    var foo = { qux: bar.baz_boom };
    
    obj.do_something();
    do_something();
    new do_something();
    
    var { category_id: category } = query;
    
    function foo({ isCamelCased }) {
        // ...
    };
    
    function foo({ isCamelCased: isAlsoCamelCased }) {
        // ...
    }
    
    function foo({ isCamelCased = 'default value' }) {
        // ...
    };
    
    var { categoryId = 1 } = query;
    
    var { foo: isCamelCased } = bar;
    
    var { foo: isCamelCased = 1 } = quz;

    properties: "never"

    Examples of correct code for this rule with the { "properties": "never" } option:

    /*eslint camelcase: ["error", {properties: "never"}]*/
    
    var obj = {
        my_pref: 1
    };

    ignoreDestructuring: false

    Examples of incorrect code for this rule with the default { "ignoreDestructuring": false } option:

    /*eslint camelcase: "error"*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;
    
    var { category_id: category_alias } = query;
    
    var { category_id: categoryId, ...other_props } = query;

    ignoreDestructuring: true

    Examples of incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id: category_alias } = query;
    
    var { category_id, ...other_props } = query;

    Examples of correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { category_id } = query;
    
    var { category_id = 1 } = query;
    
    var { category_id: category_id } = query;

    Please note that this option applies only to identifiers inside destructuring patterns. It doesn't additionally allow any particular use of the created variables later in the code apart from the use that is already allowed by default or by other options.

    Examples of additional incorrect code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property } = obj; // allowed by {ignoreDestructuring: true}
    var foo = some_property + 1; // error, ignoreDestructuring does not apply to this statement

    A common use case for this option is to avoid useless renaming when the identifier is not intended to be used later in the code.

    Examples of additional correct code for this rule with the { "ignoreDestructuring": true } option:

    /*eslint camelcase: ["error", {ignoreDestructuring: true}]*/
    
    var { some_property, ...rest } = obj;
    // do something with 'rest', nothing with 'some_property'

    Another common use case for this option is in combination with { "properties": "never" }, when the identifier is intended to be used only as a property shorthand.

    Examples of additional correct code for this rule with the { "properties": "never", "ignoreDestructuring": true } options:

    /*eslint camelcase: ["error", {"properties": "never", ignoreDestructuring: true}]*/
    
    var { some_property } = obj;
    doSomething({ some_property });

    ignoreImports: false

    Examples of incorrect code for this rule with the default { "ignoreImports": false } option:

    /*eslint camelcase: "error"*/
    
    import { snake_cased } from 'mod';

    ignoreImports: true

    Examples of incorrect code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import default_import from 'mod';
    
    import * as namespaced_import from 'mod';

    Examples of correct code for this rule with the { "ignoreImports": true } option:

    /*eslint camelcase: ["error", {ignoreImports: true}]*/
    
    import { snake_cased } from 'mod';

    ignoreGlobals: false

    Examples of incorrect code for this rule with the default { "ignoreGlobals": false } option:

    /*eslint camelcase: ["error", {ignoreGlobals: false}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    ignoreGlobals: true

    Examples of correct code for this rule with the { "ignoreGlobals": true } option:

    /*eslint camelcase: ["error", {ignoreGlobals: true}]*/
    /* global no_camelcased */
    
    const foo = no_camelcased;

    allow

    Examples of correct code for this rule with the allow option:

    /*eslint camelcase: ["error", {allow: ["UNSAFE_componentWillMount"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    /*eslint camelcase: ["error", {allow: ["^UNSAFE_"]}]*/
    
    function UNSAFE_componentWillMount() {
        // ...
    }
    
    function UNSAFE_componentWillMount() {
        // ...
    }

    When Not To Use It

    If you have established coding standards using a different naming convention (separating words with underscores), turn this rule off. Source: http://eslint.org/docs/rules/

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

            reset = scope.Input.find((simulatorOutput) => simulatorOutput.label === 'RST');
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

            const expectedValue = data.groups[groupIndex].outputs.find((dataOutput) => dataOutput.label === output).values[caseIndex];
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

        const bitwidthErrors = validationErrors.invalids.filter((vError) => vError.type === VALIDATION_ERRORS.WRONGBITWIDTH);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

                    const output = group.outputs.find((dataOutput) => dataOutput.label === outName);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

        const inputIdentifiersData = data.groups[0].inputs.map((input) => input.label);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

        const outputIdentifiersData = data.groups[0].outputs.map((output) => output.label);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected parentheses around single function argument having a body with no curly braces.
    Open

            const matchOutput = scope.Output.find((simulatorOutput) => simulatorOutput.label === dataOutput.label);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require parens in arrow function arguments (arrow-parens)

    Arrow functions can omit parentheses when they have exactly one parameter. In all other cases the parameter(s) must be wrapped in parentheses. This rule enforces the consistent use of parentheses in arrow functions.

    Rule Details

    This rule enforces parentheses around arrow function parameters regardless of arity. For example:

    /*eslint-env es6*/
    
    // Bad
    a => {}
    
    // Good
    (a) => {}

    Following this style will help you find arrow functions (=>) which may be mistakenly included in a condition when a comparison such as >= was the intent.

    /*eslint-env es6*/
    
    // Bad
    if (a => 2) {
    }
    
    // Good
    if (a >= 2) {
    }

    The rule can also be configured to discourage the use of parens when they are not required:

    /*eslint-env es6*/
    
    // Bad
    (a) => {}
    
    // Good
    a => {}

    Options

    This rule has a string option and an object one.

    String options are:

    • "always" (default) requires parens around arguments in all cases.
    • "as-needed" enforces no braces where they can be omitted.

    Object properties for variants of the "as-needed" option:

    • "requireForBlockBody": true modifies the as-needed rule in order to require parens if the function body is in an instructions block (surrounded by braces).

    always

    Examples of incorrect code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => a);
    a(foo => { if (true) {} });

    Examples of correct code for this rule with the default "always" option:

    /*eslint arrow-parens: ["error", "always"]*/
    /*eslint-env es6*/
    
    () => {};
    (a) => {};
    (a) => a;
    (a) => {'\n'}
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });

    If Statements

    One of the benefits of this option is that it prevents the incorrect use of arrow functions in conditionals:

    /*eslint-env es6*/
    
    var a = 1;
    var b = 2;
    // ...
    if (a => b) {
     console.log('bigger');
    } else {
     console.log('smaller');
    }
    // outputs 'bigger', not smaller as expected

    The contents of the if statement is an arrow function, not a comparison.

    If the arrow function is intentional, it should be wrapped in parens to remove ambiguity.

    /*eslint-env es6*/
    
    var a = 1;
    var b = 0;
    // ...
    if ((a) => b) {
     console.log('truthy value returned');
    } else {
     console.log('falsey value returned');
    }
    // outputs 'truthy value returned'

    The following is another example of this behavior:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = a => b ? c: d;
    // f = ?

    f is an arrow function which takes a as an argument and returns the result of b ? c: d.

    This should be rewritten like so:

    /*eslint-env es6*/
    
    var a = 1, b = 2, c = 3, d = 4;
    var f = (a) => b ? c: d;

    as-needed

    Examples of incorrect code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => a;
    (a) => {'\n'};
    a.then((foo) => {});
    a.then((foo) => a);
    a((foo) => { if (true) {} });
    const f = /** @type {number} */(a) => a + a;
    const g = /* comment */ (a) => a + a;
    const h = (a) /* comment */ => a + a;

    Examples of correct code for this rule with the "as-needed" option:

    /*eslint arrow-parens: ["error", "as-needed"]*/
    /*eslint-env es6*/
    
    () => {};
    a => {};
    a => a;
    a => {'\n'};
    a.then(foo => {});
    a.then(foo => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;
    const f = (/** @type {number} */a) => a + a;
    const g = (/* comment */ a) => a + a;
    const h = (a /* comment */) => a + a;

    requireForBlockBody

    Examples of incorrect code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => a;
    a => {};
    a => {'\n'};
    a.map((x) => x * x);
    a.map(x => {
      return x * x;
    });
    a.then(foo => {});

    Examples of correct code for the { "requireForBlockBody": true } option:

    /*eslint arrow-parens: [2, "as-needed", { "requireForBlockBody": true }]*/
    /*eslint-env es6*/
    
    (a) => {};
    (a) => {'\n'};
    a => ({});
    () => {};
    a => a;
    a.then((foo) => {});
    a.then((foo) => { if (true) {} });
    a((foo) => { if (true) {} });
    (a, b, c) => a;
    (a = 10) => a;
    ([a, b]) => a;
    ({a, b}) => a;

    Further Reading

    Unexpected confirm.
    Open

            if (confirm('Are you sure you want to remove the test from the circuit?')) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Use of Alert (no-alert)

    JavaScript's alert, confirm, and prompt functions are widely considered to be obtrusive as UI elements and should be replaced by a more appropriate custom UI implementation. Furthermore, alert is often used while debugging code, which should be removed before deployment to production.

    alert("here!");

    Rule Details

    This rule is aimed at catching debugging code that should be removed and popup UI elements that should be replaced with less obtrusive, custom UIs. As such, it will warn when it encounters alert, prompt, and confirm function calls which are not shadowed.

    Examples of incorrect code for this rule:

    /*eslint no-alert: "error"*/
    
    alert("here!");
    
    confirm("Are you sure?");
    
    prompt("What's your name?", "John Doe");

    Examples of correct code for this rule:

    /*eslint no-alert: "error"*/
    
    customAlert("Something happened!");
    
    customConfirm("Are you sure?");
    
    customPrompt("Who are you?");
    
    function foo() {
        var alert = myCustomLib.customAlert;
        alert();
    }

    Related Rules

    Arrow function should not return assignment.
    Open

            group.outputs.forEach((output) => output.results = []);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Assignment in return Statement (no-return-assign)

    One of the interesting, and sometimes confusing, aspects of JavaScript is that assignment can happen at almost any point. Because of this, an errant equals sign can end up causing assignment when the true intent was to do a comparison. This is especially true when using a return statement. For example:

    function doSomething() {
        return foo = bar + 2;
    }

    It is difficult to tell the intent of the return statement here. It's possible that the function is meant to return the result of bar + 2, but then why is it assigning to foo? It's also possible that the intent was to use a comparison operator such as == and that this code is an error.

    Because of this ambiguity, it's considered a best practice to not use assignment in return statements.

    Rule Details

    This rule aims to eliminate assignments from return statements. As such, it will warn whenever an assignment is found as part of return.

    Options

    The rule takes one option, a string, which must contain one of the following values:

    • except-parens (default): Disallow assignments unless they are enclosed in parentheses.
    • always: Disallow all assignments.

    except-parens

    This is the default option. It disallows assignments unless they are enclosed in parentheses.

    Examples of incorrect code for the default "except-parens" option:

    /*eslint no-return-assign: "error"*/
    
    function doSomething() {
        return foo = bar + 2;
    }
    
    function doSomething() {
        return foo += 2;
    }
    
    const foo = (a, b) => a = b
    
    const bar = (a, b, c) => (a = b, c == b)
    
    function doSomething() {
        return foo = bar && foo > 0;
    }

    Examples of correct code for the default "except-parens" option:

    /*eslint no-return-assign: "error"*/
    
    function doSomething() {
        return foo == bar + 2;
    }
    
    function doSomething() {
        return foo === bar + 2;
    }
    
    function doSomething() {
        return (foo = bar + 2);
    }
    
    const foo = (a, b) => (a = b)
    
    const bar = (a, b, c) => ((a = b), c == b)
    
    function doSomething() {
        return (foo = bar) && foo > 0;
    }

    always

    This option disallows all assignments in return statements. All assignments are treated as problems.

    Examples of incorrect code for the "always" option:

    /*eslint no-return-assign: ["error", "always"]*/
    
    function doSomething() {
        return foo = bar + 2;
    }
    
    function doSomething() {
        return foo += 2;
    }
    
    function doSomething() {
        return (foo = bar + 2);
    }

    Examples of correct code for the "always" option:

    /*eslint no-return-assign: ["error", "always"]*/
    
    function doSomething() {
        return foo == bar + 2;
    }
    
    function doSomething() {
        return foo === bar + 2;
    }

    When Not To Use It

    If you want to allow the use of assignment operators in a return statement, then you can safely disable this rule. Source: http://eslint.org/docs/rules/

    Assignment to property of function parameter 'reset'.
    Open

        reset.state = 1;
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Reassignment of Function Parameters (no-param-reassign)

    Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object. Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.

    This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.

    Rule Details

    This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.

    Examples of incorrect code for this rule:

    /*eslint no-param-reassign: "error"*/
    
    function foo(bar) {
        bar = 13;
    }
    
    function foo(bar) {
        bar++;
    }
    
    function foo(bar) {
        for (bar in baz) {}
    }
    
    function foo(bar) {
        for (bar of baz) {}
    }

    Examples of correct code for this rule:

    /*eslint no-param-reassign: "error"*/
    
    function foo(bar) {
        var baz = bar;
    }

    Options

    This rule takes one option, an object, with a boolean property "props", and arrays "ignorePropertyModificationsFor" and "ignorePropertyModificationsForRegex". "props" is false by default. If "props" is set to true, this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor" or "ignorePropertyModificationsForRegex", which is an empty array by default.

    props

    Examples of correct code for the default { "props": false } option:

    /*eslint no-param-reassign: ["error", { "props": false }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of incorrect code for the { "props": true } option:

    /*eslint no-param-reassign: ["error", { "props": true }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of correct code for the { "props": true } option with "ignorePropertyModificationsFor" set:

    /*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of correct code for the { "props": true } option with "ignorePropertyModificationsForRegex" set:

    /*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/
    
    function foo(barVar) {
        barVar.prop = "value";
    }
    
    function foo(barrito) {
        delete barrito.aaa;
    }
    
    function foo(bar_) {
        bar_.aaa++;
    }
    
    function foo(barBaz) {
        for (barBaz.aaa in baz) {}
    }
    
    function foo(barBaz) {
        for (barBaz.aaa of baz) {}
    }

    When Not To Use It

    If you want to allow assignment to function parameters, then you can safely disable this rule.

    Further Reading

    iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.
    Open

        for (const output of result.keys()) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    disallow specified syntax (no-restricted-syntax)

    JavaScript has a lot of language features, and not everyone likes all of them. As a result, some projects choose to disallow the use of certain language features altogether. For instance, you might decide to disallow the use of try-catch or class, or you might decide to disallow the use of the in operator.

    Rather than creating separate rules for every language feature you want to turn off, this rule allows you to configure the syntax elements you want to restrict use of. These elements are represented by their ESTree node types. For example, a function declaration is represented by FunctionDeclaration and the with statement is represented by WithStatement. You may find the full list of AST node names you can use on GitHub and use AST Explorer with the espree parser to see what type of nodes your code consists of.

    You can also specify [AST selectors](../developer-guide/selectors) to restrict, allowing much more precise control over syntax patterns.

    Rule Details

    This rule disallows specified (that is, user-defined) syntax.

    Options

    This rule takes a list of strings, where each string is an AST selector:

    {
        "rules": {
            "no-restricted-syntax": ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"]
        }
    }

    Alternatively, the rule also accepts objects, where the selector and an optional custom message are specified:

    {
        "rules": {
            "no-restricted-syntax": [
                "error",
                {
                    "selector": "FunctionExpression",
                    "message": "Function expressions are not allowed."
                },
                {
                    "selector": "CallExpression[callee.name='setTimeout'][arguments.length!=2]",
                    "message": "setTimeout must always be invoked with two arguments."
                }
            ]
        }
    }

    If a custom message is specified with the message property, ESLint will use that message when reporting occurrences of the syntax specified in the selector property.

    The string and object formats can be freely mixed in the configuration as needed.

    Examples of incorrect code for this rule with the "FunctionExpression", "WithStatement", BinaryExpression[operator='in'] options:

    /* eslint no-restricted-syntax: ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"] */
    
    with (me) {
        dontMess();
    }
    
    var doSomething = function () {};
    
    foo in bar;

    Examples of correct code for this rule with the "FunctionExpression", "WithStatement", BinaryExpression[operator='in'] options:

    /* eslint no-restricted-syntax: ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"] */
    
    me.dontMess();
    
    function doSomething() {};
    
    foo instanceof bar;

    When Not To Use It

    If you don't want to restrict your code from using any JavaScript features or syntax, you should not use this rule.

    Related Rules

    • [no-alert](no-alert.md)
    • [no-console](no-console.md)
    • [no-debugger](no-debugger.md)
    • [no-restricted-properties](no-restricted-properties.md) Source: http://eslint.org/docs/rules/

    Assignment to property of function parameter 'output'.
    Open

            group.outputs.forEach((output) => output.results = []);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Reassignment of Function Parameters (no-param-reassign)

    Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object. Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.

    This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.

    Rule Details

    This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.

    Examples of incorrect code for this rule:

    /*eslint no-param-reassign: "error"*/
    
    function foo(bar) {
        bar = 13;
    }
    
    function foo(bar) {
        bar++;
    }
    
    function foo(bar) {
        for (bar in baz) {}
    }
    
    function foo(bar) {
        for (bar of baz) {}
    }

    Examples of correct code for this rule:

    /*eslint no-param-reassign: "error"*/
    
    function foo(bar) {
        var baz = bar;
    }

    Options

    This rule takes one option, an object, with a boolean property "props", and arrays "ignorePropertyModificationsFor" and "ignorePropertyModificationsForRegex". "props" is false by default. If "props" is set to true, this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor" or "ignorePropertyModificationsForRegex", which is an empty array by default.

    props

    Examples of correct code for the default { "props": false } option:

    /*eslint no-param-reassign: ["error", { "props": false }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of incorrect code for the { "props": true } option:

    /*eslint no-param-reassign: ["error", { "props": true }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of correct code for the { "props": true } option with "ignorePropertyModificationsFor" set:

    /*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of correct code for the { "props": true } option with "ignorePropertyModificationsForRegex" set:

    /*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/
    
    function foo(barVar) {
        barVar.prop = "value";
    }
    
    function foo(barrito) {
        delete barrito.aaa;
    }
    
    function foo(bar_) {
        bar_.aaa++;
    }
    
    function foo(barBaz) {
        for (barBaz.aaa in baz) {}
    }
    
    function foo(barBaz) {
        for (barBaz.aaa of baz) {}
    }

    When Not To Use It

    If you want to allow assignment to function parameters, then you can safely disable this rule.

    Further Reading

    Expected '!==' and instead saw '!='.
    Open

        if (globalScope.testbenchData != undefined) {
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require === and !== (eqeqeq)

    It is considered good practice to use the type-safe equality operators === and !== instead of their regular counterparts == and !=.

    The reason for this is that == and != do type coercion which follows the rather obscure Abstract Equality Comparison Algorithm. For instance, the following statements are all considered true:

    • [] == false
    • [] == ![]
    • 3 == "03"

    If one of those occurs in an innocent-looking statement such as a == b the actual problem is very difficult to spot.

    Rule Details

    This rule is aimed at eliminating the type-unsafe equality operators.

    Examples of incorrect code for this rule:

    /*eslint eqeqeq: "error"*/
    
    if (x == 42) { }
    
    if ("" == text) { }
    
    if (obj.getStuff() != undefined) { }

    The --fix option on the command line automatically fixes some problems reported by this rule. A problem is only fixed if one of the operands is a typeof expression, or if both operands are literals with the same type.

    Options

    always

    The "always" option (default) enforces the use of === and !== in every situation (except when you opt-in to more specific handling of null [see below]).

    Examples of incorrect code for the "always" option:

    /*eslint eqeqeq: ["error", "always"]*/
    
    a == b
    foo == true
    bananas != 1
    value == undefined
    typeof foo == 'undefined'
    'hello' != 'world'
    0 == 0
    true == true
    foo == null

    Examples of correct code for the "always" option:

    /*eslint eqeqeq: ["error", "always"]*/
    
    a === b
    foo === true
    bananas !== 1
    value === undefined
    typeof foo === 'undefined'
    'hello' !== 'world'
    0 === 0
    true === true
    foo === null

    This rule optionally takes a second argument, which should be an object with the following supported properties:

    • "null": Customize how this rule treats null literals. Possible values:
      • always (default) - Always use === or !==.
      • never - Never use === or !== with null.
      • ignore - Do not apply this rule to null.

    smart

    The "smart" option enforces the use of === and !== except for these cases:

    • Comparing two literal values
    • Evaluating the value of typeof
    • Comparing against null

    Examples of incorrect code for the "smart" option:

    /*eslint eqeqeq: ["error", "smart"]*/
    
    // comparing two variables requires ===
    a == b
    
    // only one side is a literal
    foo == true
    bananas != 1
    
    // comparing to undefined requires ===
    value == undefined

    Examples of correct code for the "smart" option:

    /*eslint eqeqeq: ["error", "smart"]*/
    
    typeof foo == 'undefined'
    'hello' != 'world'
    0 == 0
    true == true
    foo == null

    allow-null

    Deprecated: Instead of using this option use "always" and pass a "null" option property with value "ignore". This will tell ESLint to always enforce strict equality except when comparing with the null literal.

    ["error", "always", {"null": "ignore"}]

    When Not To Use It

    If you don't want to enforce a style for using equality operators, then it's safe to disable this rule. Source: http://eslint.org/docs/rules/

    Assignment to property of function parameter 'inputs'.
    Open

            inputs[input.label].state = parseInt(input.values[caseIndex], 2);
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Reassignment of Function Parameters (no-param-reassign)

    Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object. Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.

    This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.

    Rule Details

    This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.

    Examples of incorrect code for this rule:

    /*eslint no-param-reassign: "error"*/
    
    function foo(bar) {
        bar = 13;
    }
    
    function foo(bar) {
        bar++;
    }
    
    function foo(bar) {
        for (bar in baz) {}
    }
    
    function foo(bar) {
        for (bar of baz) {}
    }

    Examples of correct code for this rule:

    /*eslint no-param-reassign: "error"*/
    
    function foo(bar) {
        var baz = bar;
    }

    Options

    This rule takes one option, an object, with a boolean property "props", and arrays "ignorePropertyModificationsFor" and "ignorePropertyModificationsForRegex". "props" is false by default. If "props" is set to true, this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor" or "ignorePropertyModificationsForRegex", which is an empty array by default.

    props

    Examples of correct code for the default { "props": false } option:

    /*eslint no-param-reassign: ["error", { "props": false }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of incorrect code for the { "props": true } option:

    /*eslint no-param-reassign: ["error", { "props": true }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of correct code for the { "props": true } option with "ignorePropertyModificationsFor" set:

    /*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of correct code for the { "props": true } option with "ignorePropertyModificationsForRegex" set:

    /*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/
    
    function foo(barVar) {
        barVar.prop = "value";
    }
    
    function foo(barrito) {
        delete barrito.aaa;
    }
    
    function foo(bar_) {
        bar_.aaa++;
    }
    
    function foo(barBaz) {
        for (barBaz.aaa in baz) {}
    }
    
    function foo(barBaz) {
        for (barBaz.aaa of baz) {}
    }

    When Not To Use It

    If you want to allow assignment to function parameters, then you can safely disable this rule.

    Further Reading

    Assignment to property of function parameter 'reset'.
    Open

        reset.state = 0;
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Disallow Reassignment of Function Parameters (no-param-reassign)

    Assignment to variables declared as function parameters can be misleading and lead to confusing behavior, as modifying function parameters will also mutate the arguments object. Often, assignment to function parameters is unintended and indicative of a mistake or programmer error.

    This rule can be also configured to fail when function parameters are modified. Side effects on parameters can cause counter-intuitive execution flow and make errors difficult to track down.

    Rule Details

    This rule aims to prevent unintended behavior caused by modification or reassignment of function parameters.

    Examples of incorrect code for this rule:

    /*eslint no-param-reassign: "error"*/
    
    function foo(bar) {
        bar = 13;
    }
    
    function foo(bar) {
        bar++;
    }
    
    function foo(bar) {
        for (bar in baz) {}
    }
    
    function foo(bar) {
        for (bar of baz) {}
    }

    Examples of correct code for this rule:

    /*eslint no-param-reassign: "error"*/
    
    function foo(bar) {
        var baz = bar;
    }

    Options

    This rule takes one option, an object, with a boolean property "props", and arrays "ignorePropertyModificationsFor" and "ignorePropertyModificationsForRegex". "props" is false by default. If "props" is set to true, this rule warns against the modification of parameter properties unless they're included in "ignorePropertyModificationsFor" or "ignorePropertyModificationsForRegex", which is an empty array by default.

    props

    Examples of correct code for the default { "props": false } option:

    /*eslint no-param-reassign: ["error", { "props": false }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of incorrect code for the { "props": true } option:

    /*eslint no-param-reassign: ["error", { "props": true }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of correct code for the { "props": true } option with "ignorePropertyModificationsFor" set:

    /*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsFor": ["bar"] }]*/
    
    function foo(bar) {
        bar.prop = "value";
    }
    
    function foo(bar) {
        delete bar.aaa;
    }
    
    function foo(bar) {
        bar.aaa++;
    }
    
    function foo(bar) {
        for (bar.aaa in baz) {}
    }
    
    function foo(bar) {
        for (bar.aaa of baz) {}
    }

    Examples of correct code for the { "props": true } option with "ignorePropertyModificationsForRegex" set:

    /*eslint no-param-reassign: ["error", { "props": true, "ignorePropertyModificationsForRegex": ["^bar"] }]*/
    
    function foo(barVar) {
        barVar.prop = "value";
    }
    
    function foo(barrito) {
        delete barrito.aaa;
    }
    
    function foo(bar_) {
        bar_.aaa++;
    }
    
    function foo(barBaz) {
        for (barBaz.aaa in baz) {}
    }
    
    function foo(barBaz) {
        for (barBaz.aaa of baz) {}
    }

    When Not To Use It

    If you want to allow assignment to function parameters, then you can safely disable this rule.

    Further Reading

    Expected '!==' and instead saw '!='.
    Open

            if (data.scopeID != globalScope.id) return;
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require === and !== (eqeqeq)

    It is considered good practice to use the type-safe equality operators === and !== instead of their regular counterparts == and !=.

    The reason for this is that == and != do type coercion which follows the rather obscure Abstract Equality Comparison Algorithm. For instance, the following statements are all considered true:

    • [] == false
    • [] == ![]
    • 3 == "03"

    If one of those occurs in an innocent-looking statement such as a == b the actual problem is very difficult to spot.

    Rule Details

    This rule is aimed at eliminating the type-unsafe equality operators.

    Examples of incorrect code for this rule:

    /*eslint eqeqeq: "error"*/
    
    if (x == 42) { }
    
    if ("" == text) { }
    
    if (obj.getStuff() != undefined) { }

    The --fix option on the command line automatically fixes some problems reported by this rule. A problem is only fixed if one of the operands is a typeof expression, or if both operands are literals with the same type.

    Options

    always

    The "always" option (default) enforces the use of === and !== in every situation (except when you opt-in to more specific handling of null [see below]).

    Examples of incorrect code for the "always" option:

    /*eslint eqeqeq: ["error", "always"]*/
    
    a == b
    foo == true
    bananas != 1
    value == undefined
    typeof foo == 'undefined'
    'hello' != 'world'
    0 == 0
    true == true
    foo == null

    Examples of correct code for the "always" option:

    /*eslint eqeqeq: ["error", "always"]*/
    
    a === b
    foo === true
    bananas !== 1
    value === undefined
    typeof foo === 'undefined'
    'hello' !== 'world'
    0 === 0
    true === true
    foo === null

    This rule optionally takes a second argument, which should be an object with the following supported properties:

    • "null": Customize how this rule treats null literals. Possible values:
      • always (default) - Always use === or !==.
      • never - Never use === or !== with null.
      • ignore - Do not apply this rule to null.

    smart

    The "smart" option enforces the use of === and !== except for these cases:

    • Comparing two literal values
    • Evaluating the value of typeof
    • Comparing against null

    Examples of incorrect code for the "smart" option:

    /*eslint eqeqeq: ["error", "smart"]*/
    
    // comparing two variables requires ===
    a == b
    
    // only one side is a literal
    foo == true
    bananas != 1
    
    // comparing to undefined requires ===
    value == undefined

    Examples of correct code for the "smart" option:

    /*eslint eqeqeq: ["error", "smart"]*/
    
    typeof foo == 'undefined'
    'hello' != 'world'
    0 == 0
    true == true
    foo == null

    allow-null

    Deprecated: Instead of using this option use "always" and pass a "null" option property with value "ignore". This will tell ESLint to always enforce strict equality except when comparing with the null literal.

    ["error", "always", {"null": "ignore"}]

    When Not To Use It

    If you don't want to enforce a style for using equality operators, then it's safe to disable this rule. Source: http://eslint.org/docs/rules/

    Expected '!==' and instead saw '!='.
    Open

        identifiersScope = identifiersScope.filter((identifer) => identifer != '');
    Severity: Minor
    Found in simulator/src/testbench.js by eslint

    Require === and !== (eqeqeq)

    It is considered good practice to use the type-safe equality operators === and !== instead of their regular counterparts == and !=.

    The reason for this is that == and != do type coercion which follows the rather obscure Abstract Equality Comparison Algorithm. For instance, the following statements are all considered true:

    • [] == false
    • [] == ![]
    • 3 == "03"

    If one of those occurs in an innocent-looking statement such as a == b the actual problem is very difficult to spot.

    Rule Details

    This rule is aimed at eliminating the type-unsafe equality operators.

    Examples of incorrect code for this rule:

    /*eslint eqeqeq: "error"*/
    
    if (x == 42) { }
    
    if ("" == text) { }
    
    if (obj.getStuff() != undefined) { }

    The --fix option on the command line automatically fixes some problems reported by this rule. A problem is only fixed if one of the operands is a typeof expression, or if both operands are literals with the same type.

    Options

    always

    The "always" option (default) enforces the use of === and !== in every situation (except when you opt-in to more specific handling of null [see below]).

    Examples of incorrect code for the "always" option:

    /*eslint eqeqeq: ["error", "always"]*/
    
    a == b
    foo == true
    bananas != 1
    value == undefined
    typeof foo == 'undefined'
    'hello' != 'world'
    0 == 0
    true == true
    foo == null

    Examples of correct code for the "always" option:

    /*eslint eqeqeq: ["error", "always"]*/
    
    a === b
    foo === true
    bananas !== 1
    value === undefined
    typeof foo === 'undefined'
    'hello' !== 'world'
    0 === 0
    true === true
    foo === null

    This rule optionally takes a second argument, which should be an object with the following supported properties:

    • "null": Customize how this rule treats null literals. Possible values:
      • always (default) - Always use === or !==.
      • never - Never use === or !== with null.
      • ignore - Do not apply this rule to null.

    smart

    The "smart" option enforces the use of === and !== except for these cases:

    • Comparing two literal values
    • Evaluating the value of typeof
    • Comparing against null

    Examples of incorrect code for the "smart" option:

    /*eslint eqeqeq: ["error", "smart"]*/
    
    // comparing two variables requires ===
    a == b
    
    // only one side is a literal
    foo == true
    bananas != 1
    
    // comparing to undefined requires ===
    value == undefined

    Examples of correct code for the "smart" option:

    /*eslint eqeqeq: ["error", "smart"]*/
    
    typeof foo == 'undefined'
    'hello' != 'world'
    0 == 0
    true == true
    foo == null

    allow-null

    Deprecated: Instead of using this option use "always" and pass a "null" option property with value "ignore". This will tell ESLint to always enforce strict equality except when comparing with the null literal.

    ["error", "always", {"null": "ignore"}]

    When Not To Use It

    If you don't want to enforce a style for using equality operators, then it's safe to disable this rule. Source: http://eslint.org/docs/rules/

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    function validateOutputs(data, scope) {
        const invalids = [];
    
        data.groups[0].outputs.forEach((dataOutput) => {
            const matchOutput = scope.Output.find((simulatorOutput) => simulatorOutput.label === dataOutput.label);
    Severity: Major
    Found in simulator/src/testbench.js and 1 other location - About 1 day to fix
    simulator/src/testbench.js on lines 744..771

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 263.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

    function validateInputs(data, scope) {
        const invalids = [];
    
        data.groups[0].inputs.forEach((dataInput) => {
            const matchInput = scope.Input.find((simulatorInput) => simulatorInput.label === dataInput.label);
    Severity: Major
    Found in simulator/src/testbench.js and 1 other location - About 1 day to fix
    simulator/src/testbench.js on lines 779..806

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 263.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

        nextGroupButton: () => {
            const isValid = validate(globalScope.testbenchData.testData, globalScope);
            if (!isValid.ok) {
                showMessage('Testbench: Some elements missing from circuit. Click Validate to know more');
                return;
    Severity: Major
    Found in simulator/src/testbench.js and 3 other locations - About 2 hrs to fix
    simulator/src/testbench.js on lines 280..288
    simulator/src/testbench.js on lines 290..298
    simulator/src/testbench.js on lines 300..308

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 75.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

        previousGroupButton: () => {
            const isValid = validate(globalScope.testbenchData.testData, globalScope);
            if (!isValid.ok) {
                showMessage('Testbench: Some elements missing from circuit. Click Validate to know more');
                return;
    Severity: Major
    Found in simulator/src/testbench.js and 3 other locations - About 2 hrs to fix
    simulator/src/testbench.js on lines 280..288
    simulator/src/testbench.js on lines 290..298
    simulator/src/testbench.js on lines 310..318

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 75.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

        nextCaseButton: () => {
            const isValid = validate(globalScope.testbenchData.testData, globalScope);
            if (!isValid.ok) {
                showMessage('Testbench: Some elements missing from circuit. Click Validate to know more');
                return;
    Severity: Major
    Found in simulator/src/testbench.js and 3 other locations - About 2 hrs to fix
    simulator/src/testbench.js on lines 280..288
    simulator/src/testbench.js on lines 300..308
    simulator/src/testbench.js on lines 310..318

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 75.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 4 locations. Consider refactoring.
    Open

        previousCaseButton: () => {
            const isValid = validate(globalScope.testbenchData.testData, globalScope);
            if (!isValid.ok) {
                showMessage('Testbench: Some elements missing from circuit. Click Validate to know more');
                return;
    Severity: Major
    Found in simulator/src/testbench.js and 3 other locations - About 2 hrs to fix
    simulator/src/testbench.js on lines 290..298
    simulator/src/testbench.js on lines 300..308
    simulator/src/testbench.js on lines 310..318

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 75.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

        data.groups[0].inputs.forEach((dataInput) => {
            inputs[dataInput.label] = scope.Input.find((simulatorInput) => simulatorInput.label === dataInput.label);
        });
    Severity: Major
    Found in simulator/src/testbench.js and 1 other location - About 1 hr to fix
    simulator/src/testbench.js on lines 822..824

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 72.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

        data.groups[0].outputs.forEach((dataOutput) => {
            outputs[dataOutput.label] = scope.Output.find((simulatorOutput) => simulatorOutput.label === dataOutput.label);
        });
    Severity: Major
    Found in simulator/src/testbench.js and 1 other location - About 1 hr to fix
    simulator/src/testbench.js on lines 818..820

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 72.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

        data.groups[groupIndex].inputs.forEach((input) => {
            currCaseElement.append(`<td>${escapeHtml(input.values[caseIndex])}</td>`);
        });
    Severity: Major
    Found in simulator/src/testbench.js and 1 other location - About 1 hr to fix
    simulator/src/testbench.js on lines 910..912

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 61.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    Similar blocks of code found in 2 locations. Consider refactoring.
    Open

        data.groups[groupIndex].outputs.forEach((output) => {
            currCaseElement.append(`<td>${escapeHtml(output.values[caseIndex])}</td>`);
        });
    Severity: Major
    Found in simulator/src/testbench.js and 1 other location - About 1 hr to fix
    simulator/src/testbench.js on lines 906..908

    Duplicated Code

    Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

    Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

    When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

    Tuning

    This issue has a mass of 61.

    We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

    The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

    If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

    See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

    Refactorings

    Further Reading

    There are no issues that match your filters.

    Category
    Status