tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

valid-lazy.rst (1349B)


      1 valid-lazy
      2 ==========
      3 
      4 Ensures that definitions and uses of properties on the ``lazy`` object are valid.
      5 This rule checks for using unknown properties, duplicated symbols, unused
      6 symbols, and also lazy getter used at top-level unconditionally.
      7 
      8 Examples of incorrect code for this rule:
      9 -----------------------------------------
     10 
     11 .. code-block:: js
     12 
     13    const lazy = {};
     14    if (x) {
     15      // Unknown lazy member property {{name}}
     16      lazy.bar.foo();
     17    }
     18 
     19 .. code-block:: js
     20 
     21    const lazy = {};
     22    ChromeUtils.defineESModuleGetters(lazy, { foo: "foo.sys.mjs"});
     23 
     24    // Duplicate symbol foo being added to lazy.
     25    ChromeUtils.defineLazyGetter(lazy, "foo", () => {});
     26    if (x) {
     27      lazy.foo3.bar();
     28    }
     29 
     30 .. code-block:: js
     31 
     32    const lazy = {};
     33    // Unused lazy property foo
     34    ChromeUtils.defineESModuleGetters(lazy, { foo: "foo.sys.mjs"});
     35 
     36 .. code-block:: js
     37 
     38    const lazy = {};
     39    ChromeUtils.defineESModuleGetters(lazy, { foo: "foo.sys.mjs"});
     40    // Used at top-level unconditionally.
     41    lazy.foo.bar();
     42 
     43 Examples of correct code for this rule:
     44 ---------------------------------------
     45 
     46 .. code-block:: js
     47 
     48    const lazy = {};
     49    ChromeUtils.defineLazyGetter(lazy, "foo1", () => {});
     50    ChromeUtils.defineESModuleGetters(lazy, { foo2: "foo2.sys.mjs"});
     51 
     52    if (x) {
     53      lazy.foo1.bar();
     54      lazy.foo2.bar();
     55    }