--- Comment #9 from Andrej Mitrovic <> 2010-08-16 
13:04:56 PDT ---
Good news, I've found a way to pass __LINE__ and __FILE__. It's a tad bit ugly
and uses a struct, I haven't been able to call a struct's custom constructor
without calling it with an extra parameter. I'm trying to call my struct
constructor without passing any arguments, but it doesn't seem to work. So I'm
using a workaround. Anyway, check it out:

void assertExceptionThrown(alias E, alias func, T...)(lineInfo info, T args)
    if(__traits(compiles, {try{}catch(E e){}}))
    catch(E e)
        return;     // Expected exception was thrown

    throw new AssertError(format("assertExceptionThrown() failed: No %s was
thrown from %s()", E.stringof, __traits(identifier, func)), info._file,

import std.stdio,, core.exception, std.string, std.typecons;

int myfunc(int i)
    return i;

struct lineInfo
    string _file;
    uint _line;

    this(int x, string file = __FILE__, uint line = __LINE__)
        _file = file;
        _line = line;

void main()
    assertExceptionThrown!(core.exception.AssertError, myfunc)(lineInfo(0) ,

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to