Is there any way to get a warning anytime an implicit super constructor is called in a sub-class/child-class?

I have game objects with defaults. I specialize them with specifics. The problem is, if I forget to add an explicit super call and have it _before_ my code, my code runs, then the super constructor code unsets my values.

Now that I know why it's doing it, I can look for it, but Good Code (TM) would definitely benefit from an automatic warning / check for such cases. Opt-out, not opt-in, for error checking.

Example code:

class object_t
 {
 bitmap_t bmp;
 float x,y;
 this(float _x, float _y)
    {
    bmp = BMP_PLACEHOLDER;
    x = _x;
    y = _y;
    }
 }

class building_t : object_t
{
this(float _x, float _y)
    {
    super(_x, _y);
 // ^^ If I forget this, it implicitly gets called AFTER
 // this function is done. Which resets bmp to BMP_PLACEHOLDER!
// AND, it'll call the DEFAULT constructor this() with no arguments.

    bmp = BMP_BUILDING;
    }
}

Thanks.

At first glance, I could make the default constructor this() with an assert(0) if I never need the default constructor and that's the one automatically called. But I'd rather have a warning instead of opt-in coding.

The auto-calling really seems to be a dangerous mis-feature.

Reply via email to