[dmd-beta] D2 2.057 alpha

Dmitry Olshansky dmitry.olsh at gmail.com
Tue Dec 6 07:04:30 PST 2011


On 06.12.2011 12:33, Nick Sabalausky wrote:
> From: "Dmitry Olshansky" <dmitry.olsh at gmail.com>
>> On 06.12.2011 10:34, Nick Sabalausky wrote:
>>> From: "Nick Sabalausky" <bus_dmdbeta at semitwist.com>
>>>> In one of my programs I'm getting:
>>>>
>>>> D:\DevTool\dmd2beta\dmd2\windows\bin\..\..\src\phobos\std\regex.d(6576): 
>>>> Error: cannot implicitly convert expression (m) of type 
>>>> Captures!(string,uint) to RegexMatch!(string,ThompsonMatcher)
>>>>
>>>> Which isn't very helpful. I'm tracking down the code that's 
>>>> triggering it...
>>>>
>>>
>>>
>>> Test case:
>>>
>>> import std.regex;
>>> void main()
>>> {
>>>    std.regex.replace!(
>>>        (RegexMatch!string m) { return ""; }
>>>    )( "", regex("") );
>>> }
>>>
>> That's the breaking change, and there is no way out of it. This one 
>> should work:
>> std.regex.replace!(
>>        ( m) { return ""; }
>>    )( "", regex("") );
>>
>> or
>>
>> std.regex.replace!(
>>        (Captures!string m) { return ""; }
>>    )( "", regex("") );
>>
>
> Ok, I see.
>
> Is there nothing that can be done to get an error message on the 
> offending line in the user's code? Like a template contraint on 
> replace or something?
>
Good idea. I'll try to add an overload for RegexMatch that does 
pragma(error) with some meaningful message and _LINE_ .

-- 
Dmitry Olshansky



More information about the dmd-beta mailing list