On 12/20/2017 10:36 PM, Chris Katko wrote:
Is there any way to get a warning anytime an implicit super constructor is called in a sub-class/child-class?

There can be a number of solutions but can you please demonstrate the issue with compilable code? My attempt does not agree with your description: super() is called *before* the subclass constructor. (Compiled with DMD64 D Compiler v2.077.1-384-gc6829a8)

import std.stdio;

// To get the code compile:
enum : int {
    BMP_PLACEHOLDER,
    BMP_BUILDING
}
alias bitmap_t = int;

class object_t
{
    bitmap_t bmp;
    float x,y;
    this() {
        writeln("super()");
        bmp = BMP_PLACEHOLDER;
    }

    this(float _x, float _y)
    {
        writeln("super(float, float)");
        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.

        writeln("setting in building_t");
        bmp = BMP_BUILDING;
    }
}

void main() {
    auto b = new building_t(10, 20);
    assert(b.bmp != BMP_PLACEHOLDER);
}

Prints

super()
setting in building_t

Ali

Reply via email to