Review: A new stab at a potential std.unittests

Jonathan M Davis jmdavisProg at gmx.com
Fri Nov 19 11:45:56 PST 2010


On Friday, November 19, 2010 11:37:16 Sean Kelly wrote:
> Jonathan M Davis Wrote:
> > In particular, needing to pass LineInfo() to assertExcThrown!() to know
> > the file and line number was disliked (though it was by far the best
> > solution that I'd been able to come up with).
> 
> Not sure if this helps, but if you default-initialize template function
> parameters with __LINE__ and __FILE__ they get the line and file of where
> the template was instantiated.

Yes. The problem was that the function was a _variadic_ template. So, you 
couldn't have default arguments. LineInfo had default arguments in its opCall() 
which were the file and line number, so you passed LineInfo() as the first 
argument to the function, thereby not having to pass __FILE__ and __LINE__, but 
ideally, they would be default arguments of the original function as you 
suggest. It's just that the variadic part got in the way. The new version is 
neither variadic (since whole call is a single string rather than passing the 
function name and arguments separately), and it doesn't even need the __FILE__ 
and __LINE__ number as default arguments, since they're just used directly in 
the string that's mixed in.

- Jonathan M Davis


More information about the Digitalmars-d mailing list