Odd Error Message

CraigDillabaugh via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Dec 16 06:08:03 PST 2014


On Monday, 15 December 2014 at 22:20:53 UTC, ketmar via 
Digitalmars-d-learn wrote:
> On Mon, 15 Dec 2014 22:09:28 +0000
> CraigDillabaugh via Digitalmars-d-learn
> <digitalmars-d-learn at puremagic.com> wrote:
>
>> Given the following program:
>> 
>> import std.string;
>> import std.stdio;
>> 
>> void main()
>> {	
>> 	File file = File("blah.txt", "r");
>> 	
>> 	while( !(file.eof()) && count > 10 ) {  //line 8
>> 		//
>> 	}
>> }
>> 
>> I get the error message:
>> 
>> line(8): Error: void has no value
>> 
>> If I comment out the import std.string; then I get an error I 
>> would expect.
>> 
>> line(8): Error: undefined identifier count
>> 
>> There is no 'count' symbol that I can see in std.string.
> there is public import from std.algorithm inside std.string, so 
> what
> you see is about std.algorithm.count.
>
>> Would this error message be considered a compiler bug?
> i don't think so. compiler tries to instantiate 
> std.algorithm.count and
> failed doing that, so it tries to tell you about that failure. 
> newer
> compiler will tell you this:
>
> z00.d(8): Error: void has no value
> z00.d(8): Error: incompatible types for ((count(alias pred = "a 
> == b", Range, E)(Range haystack, E needle)
>   if (isInputRange!Range && !isInfinite!Range &&
>   is(typeof(binaryFun!pred(haystack.front, needle)) : bool))) > 
> (10)): 'void' and 'int'
>
> this is slightly better, albeit still cryptic. template 
> instantiation
> error messages are of the most noisy and hard to understand 
> ones. alas.
> but poor compiler at least tries to help you. ;-)

Thanks Ketmar and Bearophile.


More information about the Digitalmars-d-learn mailing list