The fact that it's only a warning leads to potential situations which break the type checker's guarantee that a member variable has a certain non-null type, leading to potential run-time errors.
class Example {
var thing as Float;
function initialize() {
thing = 1.0;
/// Yay, thing is def initialized
}
}
class Bar extends Example {
function initialize() { // WARNING: Class 'Bar' does not initialize its super class 'Example'.
// it's too bad this is only a warning
}
function bar() as Void {
System.println("thing = " + thing);
}
}
function test() as Void {
var b = new Bar();
b.bar(); // prints "thing = null"
// Bar.thing actually has a default value of null, even though the type checker guarantees it's a Float :/
var y = b.thing / 2.0; // run-time crash due to unhandled exception 😔
// Exception: UnexpectedTypeException: Expected Number/Float/Long/Double, given null/Float
System.println("b.thing / 2.0 = " + y);
}