On 06.12.2011 21:01, Jacob Carlborg wrote:
On 6 dec 2011, at 08:11, Dmitry Olshansky wrote:
On 06.12.2011 10:34, Nick Sabalausky wrote:
From: "Nick Sabalausky"<[email protected]>
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("") );
--
Dmitry Olshansky
You cannot create an alias ?
It's more complicated then that. RegexMatch is full engine state, which
I can't expose to user (because there are different types of them ).
Also it's ineffective and is a leaky abstraction e.g. previously one can
call popFront on it inside delegate (guess the result, especially since
it was an aliased shallow copy of state).
The only thing that is meant to be exposed are captured matches, and
they are inside separate Captures struct.
--
Dmitry Olshansky
_______________________________________________
dmd-beta mailing list
[email protected]
http://lists.puremagic.com/mailman/listinfo/dmd-beta