gztomas
gztomas

Reputation: 3260

Why am I getting "Constructor must be initialized at declaration" google closure compiler warning?

Consider this piece of code:

AEP: {
    Module: {
        _instances: {},
        get: function(module) {
            return (AEP.Module._instances[module.id] || (AEP.Module._instances[module.id] = new AEP.Module.Instance(module)));
        },
        implement: function(module, implementation) {
            AEP.Module.get({id: module}).dispatch(implementation(AEP));
        },
        /**
         * @param module
         * @constructor
         */
        Instance: function(module) {
            AEP.Event.apply(this, arguments);
            AEP.Utility.loadJSFile(module.url);
        }
    }
//...
}

I am getting this GCC warning:

WARNING - Constructor AEP.Module.Instance must be initialized at declaration

Why is that?

Upvotes: 1

Views: 205

Answers (2)

Chad Killingsworth
Chad Killingsworth

Reputation: 14411

I'm guessing that check doesn't recognize the label as an assignment. Try this:

AEP: {
    Module: {
        _instances: {},
        get: function(module) {
            return (AEP.Module._instances[module.id] || (AEP.Module._instances[module.id] = new AEP.Module.Instance(module)));
        },
        implement: function(module, implementation) {
            AEP.Module.get({id: module}).dispatch(implementation(AEP));
        },
        Instance:
          /**
           * @param module
           * @constructor
           */
          function(module) {
            AEP.Event.apply(this, arguments);
            AEP.Utility.loadJSFile(module.url);
          }
    }
//...
}

Upvotes: 1

HMR
HMR

Reputation: 39270

As Crazy Train explained already; here is an example:

var AEP= {
    Module: {
        _instances: {},
        get: function(module) {
            window['console'].log("get");
        },
        implement: function(module, implementation) {
            window['console'].log("implement");
        }
    }
};
/**
* @param module
* @constructor*/
AEP.Module.Instance= function(module) {
  window['console'].log("instance");
};

Upvotes: 0

Related Questions