[Gambas-user] Wrong error message

Doriano Blengino doriano.blengino at ...1909...
Mon May 3 20:01:39 CEST 2010


Benoît Minisini ha scritto:
>> Hi!
>> There's minor bug.
>> Overflow with concatenate operator causes wrong error message.
>> You can reproduce the bug with this code:
>>
>> Dim ii As Integer
>> Dim jj As Integer
>>
>> For ii = 9 To 0 Step -1
>> jj&= ii<--- Wanted Integer got String instead.
>> Next
>>
>> Gambas 3 rev 2879 @ Ubuntu 9.10 64bit
>>
>> Jussi
>>
>>      
> I'd like to know what you expected exactly from that code, and what you think
> the error message should be!
>
> For information, the previous code is equivalent to:
>
> Dim ii As Integer
> Dim jj As Integer
>
> For ii = 9 To 0 Step -1
>    jj = CInt(CStr(jj)&  CStr(ii))
> Next
>
> The error message comes from CInt(). When its argument cannot be converted to
> an integer, it just says that there is a type mismatch (you forgot to tell
> that) and that its argument is not an integer.
>    
I think that Jussi is right. Even the form you are using shows that the 
"&" operator is used with an integer to the left, and so, the "&" is 
meaningless. This is even more true with the C-style operator "&=" 
which, by definition, must not cast the operand to the left.

In other words, I would say that automatic type conversion must be 
performed only when reading values, and never when writing.

Regards,
Doriano





More information about the User mailing list