http://d.puremagic.com/issues/show_bug.cgi?id=10396
Marco Leise <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |[email protected] --- Comment #1 from Marco Leise <[email protected]> 2013-06-19 13:00:50 PDT --- There I fixed it: http://dpaste.1azy.net/2ec082c0 :) --- 8< ------------------ string holds(string expr, string expl = null) { import std.array : split; import std.string : strip; expr = strip(expr); string vars; bool[string] processed; foreach (token; split(expr)) if (token.length && token !in processed) { if (token[0] == '.' || token[0] >= 'A') { if (vars !is null) vars ~= ", "; vars ~= token ~ ` = " ~ to!string(` ~ token ~ `) ~ "`; processed[token] = true; } } if (expl) expl = " " ~ expl ~ ";"; return `import std.conv : to; import std.array : join; import std.typetuple : ParameterIdentifierTuple; ` ~ `assert(` ~ expr ~ `, __FUNCTION__ ~ "(" ~ join([ParameterIdentifierTuple!(mixin(__FUNCTION__))], ", ") ~ "):` ~ expl ~ ` (` ~ expr ~ `)` ~ ` failed with ` ~ vars ~ `");`; } void foo(uint x, uint y) in { mixin(q{ x > y && x < 10 }.holds("x must be a digit larger than y")); } body {} void main() { foo(2, 3); } --- >8 ------------------ Prints: foo(x, y): x must be a digit larger than y; (x > y && x < 10) failed with x = 2, y = 3 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
