# valid-lazy Ensures that definitions and uses of properties on the `lazy` object are valid. This rule checks for using unknown properties, duplicated symbols, unused symbols, and also lazy getter used at top-level unconditionally. ## Examples of incorrect code for this rule ```js const lazy = {}; if (x) { // Unknown lazy member property {{name}} lazy.bar.foo(); } ``` ```js const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { foo: "foo.sys.mjs"}); // Duplicate symbol foo being added to lazy. ChromeUtils.defineLazyGetter(lazy, "foo", () => {}); if (x) { lazy.foo3.bar(); } ``` ```js const lazy = {}; // Unused lazy property foo ChromeUtils.defineESModuleGetters(lazy, { foo: "foo.sys.mjs"}); ``` ```js const lazy = {}; ChromeUtils.defineESModuleGetters(lazy, { foo: "foo.sys.mjs"}); // Used at top-level unconditionally. lazy.foo.bar(); ``` ## Examples of correct code for this rule ```js const lazy = {}; ChromeUtils.defineLazyGetter(lazy, "foo1", () => {}); ChromeUtils.defineESModuleGetters(lazy, { foo2: "foo2.sys.mjs"}); if (x) { lazy.foo1.bar(); lazy.foo2.bar(); } ```