Somehow give a warning when trying to assign a size_t/ptrdiff_t to int or uint

WebFreak001 via Digitalmars-d digitalmars-d at puremagic.com
Sun Apr 17 02:51:07 PDT 2016


On Sunday, 17 April 2016 at 09:38:33 UTC, Temtaime wrote:
> On Sunday, 17 April 2016 at 09:29:33 UTC, WebFreak001 wrote:
>> It's annoying to fix all these `int index = 
>> str.indexOf("something")` to size_t/ptrdiff_t because you 
>> started writing the code thinking that indexOf returns an 
>> integer even though it returns a ptrdiff_t. When porting code 
>> from 32bit to 64bit you need to fix all these lines which can 
>> quickly become quite complex from functions where you don't 
>> expect them to return size_t or ptrdiff_t
>>
>> Adding a warning when trying to do something like `int i = 
>> funcReturningPtrdiff();` would make porting easier because you 
>> would already spot the issues on the OS/architecture you are 
>> working on. This also affects porting windows to linux as DMD 
>> on windows uses 32bit by default and on linux it uses the 
>> architecture you downloaded as default.
>
> There already was a such bugreport.
> size_t is simple alias to int/long depending on the platform.
>
> So currently it's impossible without adding a new type in the 
> frontend.

The compiler has the name of the alias and probably also the 
origin of it. So just checking if its from object.d (or where it 
comes from) could set a boolean "actualSize" or something like 
that to true and then it could use that information somehow


More information about the Digitalmars-d mailing list