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









"Meta" <jared771 gmail.com> 