[dmd-beta] Time for a new beta?

Dmitry Olshansky dmitry.olsh at gmail.com
Sat Aug 20 02:40:55 PDT 2011


On 20.08.2011 12:39, Rainer Schuetze wrote:
> Hi,
>
> I recently updated to the latest revision from github and tried to 
> compile my main project visuald with it. Here are some complications 
> that have hit me:
>
> 1. My Windows SDK conversion tool converts C macros to templates, e.g.
>
> #define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))
>
> is converted to
>
> auto MAKEINTRESOURCEW(ARG)(ARG i)() { return ( cast(LPWSTR)( 
> cast(ULONG_PTR)( cast(WORD)(i)))); }
>
> This no longer works for CTFE, because casts to pointers are no longer 
> allowed. Making the argument a template parameter still works, though:
>
> auto MAKEINTRESOURCEW(int i)() { return ( cast(LPWSTR)( 
> cast(ULONG_PTR)( cast(WORD)(i)))); }
>
> Also, casting to a pointer is still allowed when initializing a global 
> variable at compile time.
>
> Is this by design or a regression?
>
> 2. std.regexp is deprecated now, which is good, because there is no 
> reason to have two different implementations of regular expressions. 
> Unfortunately, std.regex seems to have some problems with rather 
> simple regular expressions like r"^(.*)\(([0-9]+)\):(.*)$" that is 
> supposed to match error messages like "file.d(37): huhu". std.regexp 
> worked for this expression.
>
That's most likely my fault, since there is a special casing for .* in 
std.regex which very well might be at fault here. Honestly, at a certain 
point I just gave up on trying to fix current std.regex, apparently a 
bit early. A quick test on this  would be 
r"^([\x00-\x80]*)\(([0-9]+)\):([\x00-\x80]*)$".


> Dmitry Olshansky's new std.regex also works, but it does not compile 
> with warnings enabled (even not with -wi) ( 
> http://d.puremagic.com/issues/show_bug.cgi?id=6518 ).
>
Btw I thought -wi is supposed to just list it as  warning. The 
embarrassing part comes from the fact that I actually picked up this 
foreach trick from original std.regex.

> Maybe it would be better to wait with deprecating std.regexp until 
> there is a working alternative.
>
Given this fresh bug in std.regex I'd naturally agree.

> 3. I tried to remove some more (currently soft) deprecation messages 
> regarding std.ctype, and it turned out that it was a bit of a hassle 
> to get it to compile because I had to mix both std.ascii and std.uni. 
> This is happening because I'd like to use the isAlpha from std.uni, 
> but there are other functions missing from std.uni (like isDigit, 
> isHexDigit, etc.).
>
> I think this was discussed before, but I'm not sure what the 
> conclusion was. I suggest adding some forwarding aliases to std.uni 
> for function that have identical implementation, and ensure that the 
> compiler does not complain about ambiguities if these are just aliases 
> to the same symbol.
>
Recalling last discussion on this, the users have to solve this on their 
own. Be it use unicode everywhere or full std.ascii.xxx/std.uni.xxx or 
whatever. I ended up using renamed imports.

> Otherwise, it seems the generated executable works fine.
>
> Rainer
>
> _______________________________________________
> dmd-beta mailing list
> dmd-beta at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/dmd-beta


-- 
Dmitry Olshansky



More information about the dmd-beta mailing list