dsimcha:

> I know what you suggest could prevent bugs in a lot of 
> cases, but it also has the potential to get in the way in a lot of cases.

You are right, and I am ready to close that enhancement request at once if the 
consensus is against it.

double->float and real->float cases are not so common. How often do you use 
floats in your code? In my code it's uncommon to use floats, generally I use 
doubles.

A problem may be in real->double conversions, because I think D feels free to 
use intermediate real values in some FP computations.

Another possible problem: generic code like this is going to produce an error 
because 2.0 literal is double, so x*2.0 is a double even if x is float:

T foo(T)(T x) {
    return x * 2.0;
}

But when I use floats, I have found it good a C lint that spots double->float 
conversions, because it has actually allowed me to speed up some code that was 
doing float->double->float conversions without me being aware of it.


> A warning _may_ be appropriate, but definitely not an error.

Another option is a -warn_fp_precision_loss compiler switch, that produces 
warnings only when you use it. For my purposes this is is enough.


Regarding the actual amount of troubles this errors messages are going to 
cause, I have recently shown a link that argues for quantitative analysis of 
language changes:
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=135049
The idea here is to introduce those three FP conversions errors, compile Phobos 
and some other D2 code, and count how many problems it causes.

Bye,
bearophile

Reply via email to