Re: Uninitialized object hangs without warning.

2014-11-26 Thread Bear Cherian via Digitalmars-d-learn

On Wednesday, 26 November 2014 at 09:38:11 UTC, bearophile wrote:

Bear Cherian:


Class MyClass{

   this(){}

   void someFunction(){
   //body
   }

}

And in my app I had something like

   MyClass classObject;
   classObject.someFunction();

When I compile, no warnings or errors.


If you compile that code (with lowercase Class) with -O the 
compiler finds the bug:




class MyClass {
this() {}

void someFunction() {
//body
}
}

void main() {
MyClass classObject;
classObject.someFunction;
}


test.d(11,5): Error: null dereference in function _Dmain


But in more complex cases the compiler doesn't.

Bye,
bearophile


Yes, the capital C was a typo.

I still think this shouldn't be an optimization. Maybe I'm just
used to Java, as this would be a compile error by default.


Uninitialized object hangs without warning.

2014-11-25 Thread Bear Cherian via Digitalmars-d-learn
I ran into this a while ago and have already moved on, but I had 
a class such as this


Class MyClass{

this(){}

void someFunction(){
//body
}

}

And in my app I had something like

MyClass classObject;
classObject.someFunction();

When I compile, no warnings or errors. But when I run the 
application it just hangs at the function call. Eventually the 
app kills itself.


The problem is classObject is never initialized. This drove me 
crazy for an entire evening before I added a bunch of debug lines 
to narrow it down and then visually saw what the problem was.


I feel there should be some type of warning or error when 
compiling, or an error when we get to classObject.someFunction().


This is on 2.065, so forgive me if this has already been 
addressed. Again, it's been a while since I actually encountered 
the error, so not sure if i missed an aspect of it.