digitalmars.D.learn - Uninitialized object hangs without warning.
- Bear Cherian (22/22) Nov 25 2014 I ran into this a while ago and have already moved on, but I had
- Meta (9/33) Nov 25 2014 This *does* cause an error on 2.065:
- bearophile (17/27) Nov 26 2014 If you compile that code (with lowercase Class) with -O the
- Bear Cherian (4/37) Nov 26 2014 Yes, the capital C was a typo.
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.
Nov 25 2014
On Wednesday, 26 November 2014 at 05:24:49 UTC, Bear Cherian wrote: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.This *does* cause an error on 2.065: http://dpaste.dzfl.pl/0d6663890081 Or did you mistakenly type "Class" instead of "class"? In the above code, when you replace "Class" with "class", it runs and then segfaults. Either way, there is no hang. Where did you install the compiler from? This is definitely a problem on your end.
Nov 25 2014
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
Nov 26 2014
On Wednesday, 26 November 2014 at 09:38:11 UTC, bearophile wrote:Bear Cherian: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.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
Nov 26 2014